Colorado Springs · serving the U.S. & Canada Custom-coded. Custom-cared-for.
Appearance
Start Now Or Start a Conversation

Exactly what I build for you.

This page is the long version of what you are paying for. The pricing page tells you the cost, and this page tells you everything that sits behind it. Each section starts in plain language and follows up with the technical detail underneath, so you can read as far down as you want and stop wherever you have what you need.

1. The website itself.

Plain language: I design and build every page on your site from scratch. You get a home page, an about page, a services page (often with sub-sections per offering), a service-area page, a contact page, and any other content pages your business needs (typical builds run 6 to 10 pages).

The detail: every page is custom-coded HTML/CSS/JS, with no WordPress underneath, no page builder layered on top, and no component pulled from a template marketplace. Each page is its own template file that I write so the layout, copy, and design fit your business specifically. The standard plan covers up to ten content pages, and any work beyond that scope is billed at a flat one hundred dollars an hour with a written estimate before I start. Most service businesses are perfectly served by six to eight pages, since the goal is depth on the pages you have rather than breadth across pages nobody reads.

2. Operational + legal pages.

Plain language: in addition to the content pages above, every site I ship includes the "operational" pages every professional website needs: Privacy Policy, Terms of Use, Accessibility Statement, Sitemap (the human-readable kind), Style Guide, Contact, and Thank-You. These don't count against your page limit and you don't pay extra for them.

The detail: we draft each one to your business specifically (Privacy Policy named subprocessors, Accessibility Statement reflects your actual conformance, Style Guide is the real visual standard you can hand to a print vendor or sign painter). Plus the SEO files: sitemap.xml, robots.txt, RSS feed (feed.xml) if you have a blog, security.txt, branded 404 page, full favicon set for every device + browser, and Open Graph + Twitter Card images that show up when someone shares your link on Slack or iMessage.

3. Design.

Plain language: a custom visual identity that fits your trade. I pick the typography, color palette, photo treatment, layout rhythm, and button shape that match your business. Look at my samples page: a roofing company looks different from a landscape designer, and a landscape designer looks different from an electrician. I design per client, not per template.

The detail: typography uses a custom-paired display + body face from Bunny Fonts (or self-hosted woff2 if you prefer). Color palette is anchored on a single primary, a single accent, and 3 to 4 neutral grays that all meet WCAG AA contrast. Layout uses a 12-column responsive grid with fluid typography (clamp()) so the design scales gracefully from a 360 px phone to a 1440 px desktop. Light + dark mode are first-class, your site flips both via OS preference and via a header toggle, with a no-flash inline script to prevent the wrong-theme blink. Square corners by default for a professional feel; rounded corners only when the brand calls for warmth.

4. Speed.

Plain language: your site loads in under one second on a phone, which is genuinely faster than ninety-five percent of the websites you visit on any given day, and the visitor feels the difference even if they never name it.

The detail: target Core Web Vitals on every page: LCP under 1.0 s, CLS under 0.05, INP under 100 ms. Total Blocking Time under 100 ms. Speed Index under 1.5 s. PageSpeed score 95-100 on every page mobile + desktop. Achieved by: zero render-blocking JavaScript (everything defer-loaded), one CSS file under 30 KB gzipped, AVIF + WebP + JPEG responsive images at multiple widths via <picture>, native lazy loading on every below-the-fold image, CDN at the edge, HTTP/3, Brotli compression, and aggressive long-term caching with content-hashed asset URLs.

5. Accessibility.

Plain language: your site works for everyone. People using screen readers, keyboard-only navigation, magnification, voice control, or just needing larger text. My baseline is the WCAG 2.2 AA standard, which is what U.S. courts treat as the de-facto floor under the ADA.

The detail: semantic HTML (real <nav> / <main> / <article> landmarks, headings in order, lists that are lists, buttons that are buttons), skip-to-content link as the first focusable element, visible focus rings on every interactive control, 44x44 px minimum tap targets, all text/background combinations verified at 4.5:1 (normal) or 3:1 (large) in both light and dark themes, every form field has a real <label>, errors announced via role="alert", animations honor prefers-reduced-motion, decorative images hidden from screen readers via aria-hidden, meaningful images get real alt text. Every site is tested with VoiceOver (macOS / iOS), NVDA (Windows), keyboard-only navigation top-to-bottom, browser zoom up to 200%, Lighthouse accessibility audit, axe DevTools, and WAVE before launch.

6. Mobile + tablet.

Plain language: the site is designed for the phone first and then expanded for tablet and desktop, because somewhere north of seventy percent of your visitors will arrive on a small screen and it would be a strange thing to design the site for the screen the minority of them are using.

The detail: mobile-first responsive design. Layouts collapse cleanly across the canonical breakpoints (360, 414, 568, 736, 768, 820, 1024, 1180, 1280 px). Tablet portrait (768-820 px) and landscape (1024-1180 px) get explicit attention because they fall in the awkward gap most sites ignore. Touch targets are 44x44 px minimum. Form inputs are 16 px font-size on iOS to prevent the auto-zoom-on-focus annoyance. Sticky headers play nicely with the iOS Safari URL bar collapse. Phone-landscape (568-736 px wide, ~360 tall) gets short-viewport hero padding so CTAs stay above the fold.

7. Showing up in Google.

Plain language: the technical foundation that makes Google willing to rank your site is the part I build, and the rankings themselves are built over time by the content you publish and the reviews your customers leave.

The detail: per-page <title> + meta description (50-160 characters, with your service + city), canonical URL, Open Graph + Twitter Card meta. JSON-LD structured data: LocalBusiness schema on the site, Service schema on each service page, BlogPosting on each post, FAQPage on FAQ, Person on author pages, BreadcrumbList everywhere. One H1 per page, descending heading hierarchy, no skipped levels. sitemap.xml auto-generated and submitted to Google Search Console at launch. Internal linking: service-area pages link to neighbors, service pages cross-link related services, every page is reachable in two clicks from the homepage. URL hygiene: trailing slash, lowercase, hyphenated. Mobile-first indexing supported by mobile-first design.

What I will not promise you is a specific ranking position, because anyone who does promise that is either lying or working their way up to it. What I will promise is that your technical SEO foundation will not be the reason you fail to rank.

8. Visitor analytics.

Plain language: you can see how many people visit your site, what pages they look at, where they came from. No cookie banner needed. I never sell or share the data.

The detail: two analytics layers, both cookie-free and GDPR-compliant by design, both included with every monthly plan. Cloudflare Web Analytics for server-side RUM data (page views, referrers, devices, real-world Core Web Vitals). Umami for a more detailed dashboard with event tracking, top pages, and referrer breakdown, you get a private live dashboard link on launch day. I do not install Google Analytics, Facebook Pixel, LinkedIn Insight Tag, TikTok Pixel, or any third-party advertising tracker by default. They slow the site, require a cookie banner, and most browsers block them anyway. I can add Google Analytics 4 at your specific request; I do not recommend it.

9. Contact forms.

Plain language: when a visitor fills out a form on your site, an email lands directly in your inbox, and there is no separate dashboard for you to keep up with. The forms simply work, every time.

The detail: every form on your site posts to Web3Forms, which forwards the submission to whichever email address(es) you specify. Spam protection: hidden honeypot field plus Web3Forms' rate limiting. No CAPTCHA, they kill conversion and are mostly defeated anyway. Validation is HTML5-native plus accessible error messages. On success, the visitor lands on a thank-you page with form-specific next-steps. Auto-reply email goes to the visitor instantly with your phone number so they have something to act on. I never store form submissions on infrastructure we control. The data lives in your inbox.

For trade-specific intakes, I build forms that triage actual job details: address + scope + urgency for plumbing emergencies, roof age + insurance carrier for roofing, BTU/SEER specs for HVAC. See sample forms for the eight industry templates we maintain.

Plain language: your visitors can search every page on the site, and the search box runs entirely inside their browser, which means there is no server for me to maintain, no API costs to pass along, and no tracking attached to any of it.

The detail: I ship Pagefind on every site. Index is built at compile time and served as small JSON chunks. Total size: 50-250 KB depending on content volume. Search is interactive in under 100 ms because the bundle is small and the index loads lazily. Keyboard-driven (slash key opens, escape closes). Works fully without cookies. Re-indexed on every deploy automatically.

11. Hosting + your domain.

Plain language: I host your site on a fast global network, you do not have to manage a control panel or a billing relationship with a hosting company, and your domain stays registered in your name throughout.

The detail: hosting on Cloudflare Pages: 300+ edge locations worldwide, sub-100 ms TTFB to most North American visitors, automatic HTTPS via free managed SSL, HTTP/3 by default, unlimited bandwidth. Uptime over the last twelve months: 99.99%. I monitor every minute from three regions plus Cloudflare's status feed. I get paged before you notice. Your domain stays at your registrar in your name; I just point its DNS at my hosting. I never own a client's domain.

12. Email on your domain.

Plain language: you can have you@yourdomain.com email at no extra setup cost. I configure the records that make it work.

The detail: I do not host email, but I set up the DNS records (MX, SPF, DKIM, DMARC) for whichever provider you choose: Google Workspace ($7.20/user/mo), Microsoft 365 ($7.20/user/mo), or simple forwarding (free, lands in your existing Gmail). Configuration is included in launch, I never charge to "configure DNS."

13. Security.

Plain language: there is almost nothing on your site to hack in the first place, because the site has no admin panel, no database, no plugins, and no PHP behind it. The whole thing is a set of static files served from a CDN.

The detail: no server-side runtime on the hot path means no RCE surface, no SQL injection, no session hijacking, no plugin CVEs (because there are no plugins). HTTPS on day one with HSTS preload. Strong response headers on every URL: Content-Security-Policy tightly scoped, X-Frame-Options DENY, X-Content-Type-Options nosniff, Referrer-Policy strict-origin-when-cross-origin, Permissions-Policy denying camera/mic/geo/FLoC by default. Standard security.txt on every site for responsible disclosure. Dependabot on the GitHub repo for npm vulnerability alerts. Source code in a private repo with branch protection and signed commits.

14. Backups.

Plain language: every change I make to your site is its own backup, which means I can restore any prior version of the site in a matter of minutes if something goes wrong.

The detail: source lives in a private GitHub repository. Every commit is its own snapshot. Reverting is one git revert + one redeploy: under 5 minutes end to end. Cloudflare Pages also keeps every prior deploy available for one-click rollback in the dashboard. There is no database to back up, because there is no database.

15. Content updates.

Plain language: when something on your end changes, you simply email or text me and explain what you need in plain language, and most updates tend to land quickly on most business days.

The detail: content updates are unlimited on the standard plan. Send a plain-language email, text, or fill the content update form, and all three reach the same inbox. Routine edits (typos, hours, prices, photos, staff bios, a single new service page) tend to turn around quickly on most business days. Larger sections, like a new content cluster or a fresh blog post, take a little longer and get a timeline before I start. Anything genuinely outside the scope of the plan, such as a custom calculator, a third-party booking integration, or an email-marketing template, is billed at a flat one hundred dollars an hour with a written estimate before any work starts.

16. Emergency support.

Plain language: if your site goes down, or wrong information goes live, or someone reports a security issue, you call me directly and I drop whatever I am doing to take care of it.

The detail: emergency-tier response is included in every monthly plan. The kinds of things that count as an emergency are the site returning errors, wrong contact information being live, a wrong price on an active promotion, suspicious form submissions, or a defaced page. When one of those happens you call or text me first, and the emergency form is the backup channel. Anything else, like a new page, a photo swap, or a copy change, is simply a regular content update.

17. Blog (included).

Plain language: the blog system is part of the standard plan, ships with the same world-class setup that powers this site's own blog, and once it is in place, every new post you publish is part of your unlimited content updates rather than a separate line item.

The detail: the included blog ships with a paginated /blog/ index with a featured-article hero on page one, a post template with a fixed reading-progress bar at the top, a sticky auto-generated table of contents on the sidebar, a drop-cap on the first paragraph, an author card with photo, a four-button share row (X, LinkedIn, email, copy link), prev/next pager between posts, a related-articles strip, an RSS feed, and BlogPosting JSON-LD schema on every post for rich-result eligibility. You write each post in plain text or a Google Doc, and I lay it out and publish on your behalf.

18. Service-area pages.

Plain language: if you serve multiple cities or neighborhoods, I build a separate page for each one, and those pages rank for local searches that a single generic services page cannot reasonably capture.

The detail: per-area page generation via Eleventy pagination from a single data file. Each area page gets unique local content (specific streets, ZIPs, landmarks), nearby-area cross-links, breadcrumbs, sidebar CTA, and LocalBusiness schema with the area's coordinates. The data file approach means adding a new area is a 10-line change that builds and deploys in 60 seconds. I have shipped sites with 30+ area pages.

19. What's NOT included.

To save you the email later, here are the things that genuinely sit outside the standard plan. Anything in the first group below is something I can integrate or build at the flat $100-an-hour rate, and anything in the second group is work I do not take on at all.

Available at $100 an hour, with a written estimate before any work starts:

  • E-commerce or shopping carts. If you need to sell products with inventory, I integrate a hosted solution like Shopify or Snipcart, although I do not build a custom cart from scratch.
  • User accounts and logins. Out of scope by default, but if you need a login wall I am happy to quote it.
  • Live chat widgets. I can integrate Tawk.to or Intercom, although I do not run them; most service businesses do better with phone closes.
  • Mass email and newsletters. I can integrate a service like Buttondown or Mailchimp, although I do not manage your email marketing on an ongoing basis.
  • Custom calculators, galleries, or video pages. Quoted up front and built at the same hourly rate.
  • Migrating data from an old platform. Whether that is content, redirects, or analytics history, the migration work is hourly with a written estimate.

Things I do not take on:

  • SEO content writing as an ongoing service. I write and edit; I do not run a separate content-marketing program. If you draft posts, we publish them at no charge.
  • Google Ads or paid social management. I build the landing pages; I do not run the ad accounts.
  • Photography or video production. I can recommend a local photographer; I do not shoot.
  • Logo design. I do not design logos. If you need one, I recommend Looka (AI generator, $20–$96 one-time, fastest), 99designs (designer competition, $299+, best variety), or Fiverr Pro (curated freelancers, $50–$500). Bring me the final SVG or vector file when you have it, and I will integrate it into the site.

If you want any of these and I know a specialist, I will introduce you, and I do not take referral kickbacks.

Ready to scope yours?

The discovery call runs about twenty minutes, with no pitch deck behind it and no pressure attached. I will tell you what I would build for your business and what it would cost, and you decide from there.