Drawing 02.5, marketing site and admin
TCL Auto Detail
A site and admin for a mobile auto detailer in Tuscaloosa, Alabama. The detailer drives to the customer, so the site's job is to price the work plainly and turn a search into a quote request.
| No. | Part | What it does here |
|---|---|---|
| 1 | Browser | Customers price a detail and send a quote request; the owner works leads and photos in the admin. |
| 2 | CloudFront | Caches public pages for up to five minutes when the origin allows it, so most crawler hits never reach Lambda. |
| 3 | Next.js on Lambda | Site, quote form, and admin in one image, capped at 30 at once so a burst cannot become a bill. |
| 4 | Neon Postgres | Packages, gallery, content, and leads by status; reads retry when a frozen Lambda's socket is dead. |
| 5 | S3 media | Gallery photos uploaded by presigned PUT, served only through CloudFront. |
| 6 | GitHub Actions | Builds, migrates, and rolls the image through OIDC; CDN and DNS changes stay a manual apply. |
| 7 | SendGrid | The quote to the detailer and a confirmation back to the customer. |
Why it exists
A one-truck detailing business does not need a platform. It needs to be found, to be trusted in about eight seconds, and to get a quote request to someone who is currently under a dashboard. Everything else is overhead the owner pays for and never uses.
Keeping the bill small
It runs on the same AWS setup as our other client sites, and the work was in keeping a small business's bill small when traffic is low. The database sleeps when nobody is using it, and search crawlers were waking it on every pass, so public pages are kept at the CDN for up to five minutes and most anonymous traffic stops there.
After the site sits idle for a while, its first database call can find the connection dropped, so reads retry instead of showing an error to whoever arrives first that morning. No more than thirty copies of the site run at once, so a burst cannot fan out into a database bill the owner never agreed to. The quote form shows a running estimate as the customer picks a package, then saves the lead and emails the detailer and the customer.
What it does
- Plain package pricing with a running estimate on the quote form
- Quote requests saved, then emailed to the detailer and the customer
- Public pages cached at the edge so most crawler hits never wake the database
- A page for each town it serves inside a 35-mile radius
- Reads that retry after a frozen Lambda drops its socket
- An admin for leads by status, gallery photos, and content
Screenshots

Something like this on your list? Tell us about it.
Talk about a build like this