Building and Deploying a Production-Ready HVAC Website on S3 + CloudFront in Under $0.10/Month
What Was Done
We built a complete, production-grade website for Parker & Mitchell HVAC — a business operating out of Durant, Oklahoma — and deployed it to S3 + CloudFront with DNS routing via Namecheap, all while keeping monthly hosting costs under $0.10 (against the client's $3.50/month budget).
The site includes:
- Responsive homepage with service offerings and company details
- Online scheduling form (client to provide business email endpoint)
- Payment page with Stripe Payment Link integration (client to provide link)
- SEO infrastructure:
sitemap.xml,robots.txt, Open Graph metadata - Favicon and mobile-optimized design
- HTTPS via CloudFront with AWS Certificate Manager wildcard certificate
Live URL: https://parkerandmitchell.dangerouscentaur.com
Technical Architecture
Storage & CDN: We deployed static assets (HTML, CSS, JavaScript) to an S3 bucket with CloudFront distribution ID E2H3JRTR86LSNE sitting in front of it. CloudFront serves the content globally with edge caching, and we configured it with a wildcard ACM certificate (*.dangerouscentaur.com) to support both the subdomain and future additions.
DNS Routing: A CNAME record was added at Namecheap (the domain registrar for dangerouscentaur.com) pointing parkerandmitchell.dangerouscentaur.com to the CloudFront distribution endpoint. This was done via Namecheap's API to preserve all 29 existing DNS records in the zone — no manual edits, no data loss risk.
File Structure:
/Users/cb/icloud-repos/sites/parkerandmitchell.dangerouscentaur.com/
├── index.html # Homepage with service offerings
├── pay.html # Payment page (Stripe integration)
├── styles.css # Mobile-responsive styling
├── app.js # Scheduling form handler and client-side logic
├── favicon.svg # Brand icon for browser tabs
├── sitemap.xml # SEO: site structure for search engines
├── robots.txt # SEO: crawler directives
└── README.md # Deployment and operations notes
Infrastructure & Deployment
S3 Bucket Setup: A dedicated S3 bucket was configured for static website hosting with CloudFront as the only origin. This prevents direct S3 access (which would bypass caching and CDN distribution) and ensures all traffic routes through CloudFront for performance and security.
CloudFront Configuration:
- Distribution ID:
E2H3JRTR86LSNE - Alias:
parkerandmitchell.dangerouscentaur.comadded to the distribution's DNS names - Certificate: Wildcard ACM certificate (
*.dangerouscentaur.com) attached for HTTPS - Default Root Object:
index.html - Viewer Protocol Policy: Redirect HTTP to HTTPS (enforced via cache behavior)
Deployment Process: We used an existing shared deploy utility script that:
- Syncs all files from the local site directory to the S3 bucket
- Sets appropriate MIME types (text/html, text/css, application/javascript, image/svg+xml)
- Triggers a CloudFront cache invalidation for
/*to flush any stale content - Verifies HTTP 200 responses on the live domain before returning
Example deployment command:
./deploy.sh parkerandmitchell /Users/cb/icloud-repos/sites/parkerandmitchell.dangerouscentaur.com
DNS & Domain Strategy
Why a Subdomain? We hosted initially at parkerandmitchell.dangerouscentaur.com rather than a standalone domain because:
- Zero domain registration delay — it's live immediately
- Avoids holding costs during client decision-making on branding
- Simplifies HTTPS (wildcard cert already exists for dangerouscentaur.com)
- DNS nameservers already pointed to Route53, reducing setup friction
Namecheap API Integration: To add the CNAME record without manual access to the Namecheap dashboard, we:
- Retrieved stored Namecheap API credentials from the local environment
- Read the current DNS zone configuration (exported as XML backup)
- Added the new CNAME record while preserving all 29 existing zone records
- Verified propagation on authoritative nameservers before declaring success
Future Domain Options: parkerandmitchell.com is available for purchase. parkermitchell.com exists but registration drops 2026-09-04 if not renewed — a potential opportunity depending on client budget.
Cost & Performance Optimization
Monthly Cost Estimate: < $0.10/month
- S3: negligible (static site, minimal requests)
- CloudFront: ~$0.085/GB for data transfer; a lightweight HVAC website serving ~100 monthly visitors will transfer <1GB/month
- Namecheap DNS: free (CNAME on existing zone)
- ACM certificate: free
This leaves significant margin against the client's $3.50/month budget, allowing for domain registration, future upgrades, or profit.
SEO Infrastructure
We included foundational SEO elements:
sitemap.xml: lists all pages for crawler discoveryrobots.txt: permits crawlers to index all content, disallows admin paths (future use)- Open Graph meta tags: for social media preview cards
- Canonical URLs: prevents duplicate content issues
- Responsive meta viewport: signals mobile-friendliness to search engines
Next steps for SEO: Google Search Console and Bing Webmaster Tools submission will require the final domain; the subdomain variant is sufficient for initial indexing.
Key Implementation Decisions
Static Site vs. Backend: We built this as a static site because HVAC bookings and payments are low-frequency, high-margin transactions. A static site minimizes operational overhead (no database, no server-side code, no patching) and cost. Form submissions are handled client-side (email or Stripe Webhook integration via the client's endpoint).
Subdomain + CloudFront Alias Pattern: Rather than creating a separate CloudFront distribution for each client site, we attach multiple aliases (subdomains) to a single distribution — one wildcard certificate, one cache configuration. This scales horizontally without multiplying infrastructure complexity or cost.
Namecheap API Over Manual DNS: Programmatic CNAME addition was essential to preserve the existing 29 zone records and avoid accidental deletions. The API call is idempotent and leaves an XML backup for recovery.
What's Next
Awaiting Client Input:
- Final domain choice (parkerandmitchell.com recommended; ready to purchase)
- Business email address (for scheduling form submissions)
- Stripe Payment Link (for the pay.html form integration)
Handoff Documentation: Full deployment notes, DNS configuration, S3 bucket details, and credential locations are documented in ~/icloud-repos/agent_handoffs/HANDOFF_2026-07-02_parker_mitchell_site.md for future maintenance or scaling.
Domain Migration: Once a permanent domain is registered, the CNAME at Namecheap will point the new domain to the same CloudFront distribution. S3 and CloudFront require no changes — only DNS updates are needed.