Drawing 02.8, marketing site and blog
Real Zambia Safari
A site for a Zambian-led, US-registered safari company: photo-led trip pages, an enquiry form that reaches the team the moment it is sent, and a blog the owners write and publish themselves.
| No. | Part | What it does here |
|---|---|---|
| 1 | Browser | Travellers send an enquiry; the owners sign in to write and publish posts. |
| 2 | Next.js on Vercel | Trip pages, the guarded enquiry route, and the blog editor with sanitized HTML. |
| 3 | Neon Postgres | Enquiries, posts, owner accounts, and one-time sign-in tokens, through Drizzle. |
| 4 | Vercel Blob | Post cover images, checked by file signature before they are stored. |
| 5 | SendGrid | The enquiry alert to the team, a confirmation to the traveller, and sign-in links. |
Why it exists
A Zambian-led safari outfit based in Nashville needed a front door that made people want to go and made it easy to reach out. Phase one is about the right enquiries and giving the owners full control of their own story, so the site keeps working long after I hand it over.
How it is built
The enquiry form is the business, so it is guarded in layers: a honeypot, a per-visitor burst limit, validation, and a cap per email address. An enquiry is saved to Postgres before anything else, then SendGrid alerts the team and sends the traveller a confirmation.
The blog is a real editor. Each owner has their own sign-in, by password or emailed link; they write in a rich-text editor, the HTML is sanitized on the server before it is stored, and cover images are checked by their file signature before they go to blob storage.
What it does
- Photo-led trip and destination pages
- An enquiry form saved first, then sent to the team and the traveller
- A blog the owners write and publish themselves
- Sign-in for each owner, by password or emailed link
Plates
