01 · Piketberg Mountains, Western Cape · South Africa
NoupoortMountain Estate
A self-service booking platform for a 24-cabin mountain estate that hosts weddings and functions. A public booking site, a role-based staff dashboard and an invited-guest portal, tied together with automatic invoicing, payments and gate access.
- Next.js
- TypeScript
- Tailwind
- Supabase
- Vercel
- Resend
- @react-pdf
Design · Front end · Database · Integrations
What’s inside
02 · The problem
A mountain estate running weddings, cabins and payments on spreadsheets.
Noupoort Mountain Estate hosts weddings and functions across 24 self-catering cabins in the Western Cape, an hour from Cape Town. Guests were booked by hand, invoices typed one at a time, and a double-booking was always one slip away.
The brief was simple to say and hard to do: let invited guests book their own cabins for an event, give the owner one place to run functions, payments and gate access, and make a double-booking impossible, not merely unlikely.
POPIA-compliant, VAT-correct to the cent, and calm enough to run from a phone between supplier visits.
03 · What it does
- Self-service bookingGuests book their own cabins for an event
- Per-event invite linksOne private link per wedding or function
- Split-stay datesPer-cabin arrival and departure dates
- Live VAT pricingTotals, extras and 15% VAT as guests choose
- Automatic invoicingVAT invoices generated and emailed
- Double-booking guardOverlapping stays blocked at the database
- Gate PIN broadcastOne code sent to everyone on a function
- Payments & claimsGuests claim, staff approve and track
04 · Before & after
From spreadsheets to self-service.
Before
- Cabins booked by phone and WhatsApp
- Invoices typed by hand, one per guest
- Double-bookings caught only by memory
- Gate PINs shared in group chats
- Payments reconciled on paper
- Totals that drifted from the invoice
After
- Guests book their own cabins online
- VAT invoices generated and emailed
- A database trigger blocks every overlap
- One gate PIN broadcast to the function
- Payments claimed, approved and logged
- One figure, used everywhere
05 · How it works
From invite to gate PIN
- 1Invite
Owner creates a function and shares one booking link
- 2Book
Guests choose cabins, add their party and see live VAT totals
- 3Confirm
Owner reviews the request and confirms the booking
- 4Invoice
A VAT invoice is generated and emailed automatically
- 5Gate PIN
The gate code is broadcast to everyone on the booking
06 · Design system
A warm, grounded identity
- Brand gold#A8753B
- Navy#16213E
- Slate#2D3E50
- Gold#C7A15A
- Sand#EAE4DA
- Green#16A34A
- Off-white#F9FAFB
- Line#E5E7EB
Typefaces
Components
Standard · Sleeps 5
07 · The public booking site
Guests book themselves in.
Every function gets its own private booking link. Invited guests choose their cabins, add their party, and see exactly what they owe, VAT and deposit included, before they ever pick up the phone.
- 01Invite-only event links
One private link per wedding or function
- 02Choose your cabins
One or more cabins for the whole stay
- 03Split stays
Per-cabin dates for guests who arrive or leave early
- 04Guest details
Names, dietary needs and allergies, captured upfront
- 05Live cost breakdown
Accommodation, extras, 15% VAT and deposit
- 06Invoice preview
See the full invoice before the request is sent


08 · The staff dashboard
One place to run the estate.
Functions, bookings, cabins, invoices, payments and gate access, behind one role-based login. The owner runs a wedding weekend from a phone between supplier visits.

- Functions & weddings
Packages, venue fee, gate PIN and a one-click client copy email
- Cabins & pricing
24 cabins on a map, per-cabin rates and per-night overrides
- Invoices & payments
VAT invoices, deposit invoices, payment claims and aging
- Reports & search
Occupancy, revenue, arrivals and a global command-K search
09 · The guest portal
Every guest, in the loop.
The same link that takes the booking becomes each guest’s home for the stay. They see their cabin, their party, the gate code when it is time, and exactly what they owe.
- 01One link for the party
Every guest in the booking sees the same event
- 02Your cabin and dates
What was booked, who is staying, and when
- 03Gate PIN on time
The code appears a few days before arrival
- 04Invoice and balance
Your costs and what is still due, kept current

10 · Under the hood
Built to be trusted with a wedding.
Nothing about a booking is left to chance. The safety that matters lives in the database, not the interface.
Data
One figure, read everywhere
A single Postgres schema models cabins, functions, bookings, invoices and payments. Per-cabin totals are stored, not recomputed, so every screen shows the same number.
- One source of truth
- Generated & stored columns
- Per-cabin invoice grain
Safety
Double-booking made impossible
A trigger with an advisory lock rejects any overlapping stay before it is written. The guard sits at the data layer, so no screen, script or import can slip past it.
- Advisory-lock trigger
- Half-open interval check
- Fresh, no-store reads
Integrations
Wired into the real world
Resend sends confirmations, receipts and gate-PIN broadcasts. react-pdf renders VAT invoices. An MCP server opens it to AI-assisted ops, and billing is FNB-ready.
- Resend transactional email
- react-pdf VAT invoices
- MCP server for AI ops
- FNB payment-ready
11 · Automations
What runs itself.
The platform does the repetitive admin, so a wedding weekend looks after itself between supplier visits.
- Booking confirmations
Emailed to the guest the moment a booking lands
- Payment receipts
Sent on every payment, full or partial
- VAT invoices
Rendered as a PDF and emailed automatically
- Deposit invoices
One-click advance invoice before the package is set
- Gate PIN broadcast
One code reaches everyone on the function
- Double-booking block
Overlaps rejected before they are ever saved
- Auto-publish
Function pages go live the moment they are confirmed
- Payment claims
Guest “I have paid” claims queued for approval
What the client says
They designed and developed a brand-new booking and back-of-house management system tailored specifically to our needs, and the results have been absolutely amazing! The system has made managing our accommodation bookings and day-to-day operations so much easier and more efficient.
We are incredibly impressed with the final result and grateful for all their hard work.
Let’s build
Want one of these for your business?
Dezignza designs and builds custom platforms, from the database to the last pixel. If your operation is still running on spreadsheets, let’s talk.
Start a projectinfo@dezignza.co.zaSomerset West, South Africa
More from Dezignza

