Drawing 02.6, marketing site and admin
Mediation & People Solutions
A site for a mediation and organizational consulting practice in Maury County, Tennessee. Both offerings get equal weight, the contact form asks for what a conflicts check needs, and the owner edits and publishes his own details.
| No. | Part | What it does here |
|---|---|---|
| 1 | Browser | Visitors reading the practice's pages; the owner editing his details in the admin. |
| 2 | CloudFront | One distribution: pages and assets from S3, the form and the admin to Lambda. |
| 3 | S3 site bucket | Prerendered pages and hashed assets, private and reachable only through CloudFront. |
| 4 | Form and admin | A Lambda for the contact form, the page-view count, and the admin as server-rendered HTML. |
| 5 | Publish Lambda | Renders the pages from the owner's published facts; nothing else in the running site writes them. |
| 6 | Neon Postgres | Contact requests, the owner's facts with drafts and history, QR campaigns, and view counts. |
| 7 | GitHub Actions | Builds, uploads, ships both functions, and triggers a publish through OIDC with no stored key. |
Why it exists
Mediation & People Solutions is a one-person practice in Maury County, Tennessee with two offerings of equal weight: mediation, and organizational consulting. A mediator is trusted to be neutral and exact, so a site that overstated anything, or let one offering swallow the other, would cost the practice the trust it sells. The owner also needed to keep his own details current (phone, email, bio, the counties he serves) without waiting on a developer, and the domain already carried the practice's live Microsoft 365 email, which could not stop during the move.
How it is built
Every line on the site traces to something the owner wrote or confirmed. A fact we did not have yet was a placeholder, and the build refuses to publish a page that still has one, so a guess can never reach a mediator's homepage.
The contact form asks for what a mediator needs before the first call: which offering, the organization, and the other parties and their lawyers, so a conflicts check can happen first. In a county where everyone has represented everyone, that check is most of why a neutral is worth calling. Each request is saved, and the email that tells the owner about it does not repeat the message, because it can hold the facts of a live dispute.
The pages are plain HTML files served from private storage on AWS, so the public site has no server to keep up. When the owner publishes a change in the admin, a separate function with no public address rebuilds the eight pages from his published details, checks them again, and is allowed to write those eight files and nothing else. The domain's DNS moved in stages so his email never went down.
What the owner changes himself
From the admin, the owner edits sixty-two details: phone, email, mailing address, the counties he serves, where mediations happen, his mediation count, his bio, his social profile links, and the steps of the Leader Pathway on the consulting page. A change is saved as a draft, previewed, and then published. Every field is checked the way the site's own copy is: curly quotes and dashes are straightened, dollar figures are refused, and so is any wording about his Rule 31 listing, which the site states in fixed wording instead.
Print and QR codes
QR codes for flyers and business cards are made in the admin, so a new flyer needs no deploy, and visits are counted by campaign without storing who scanned. A two-page overview PDF covers the practice for print.
What it does
- Every page prerendered; the build fails if an unconfirmed fact survives
- The owner edits and publishes his phone, email, bio, and counties
- Contact requests stored and read in the admin, behind a hidden bot trap and a rate limit
- QR codes, link clicks, and downloads counted without storing who used them
- A link card for his social profiles and a two-page overview PDF for print
- DNS moved in stages around the client's Microsoft 365 mail
Screenshots

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