Skip to content
Kamran Code

Olive Green — a single-page React site for a marriage garden opening in 2026

A light, photograph-led site for a three-acre marriage garden: a Vite + React single-page app with client-side routes for each venue, EventVenue structured data, an LCP-tuned hero and WhatsApp enquiries.

Live siteClient site · Marriage garden & event venue, Rewa (MP)

What needed solving?

Olive Green opens in 2026 and had to start taking wedding bookings before the venue itself was finished. The site needed to sell the garden's four spaces with capacities and best uses, feel warm and premium on a phone — where most enquiries begin — and make the enquiry a single tap.

Who was it for?

Client site · Marriage garden & event venue, Rewa (MP)

  • Build a single-page app with a route per venue so each space (grand lawn, banquet hall, poolside terrace, mandap courtyard) has its own page with capacity, seated and standing numbers and what it is best for.
  • Design light-only — ivory, olive and gold — and opt out of browser auto-dark and Dark Reader recolouring so the palette is the palette.
  • Treat the hero photograph as the largest contentful paint: preload it with a responsive srcset and fetchpriority high from the image CDN.
  • Send enquiries to WhatsApp and publish the venue as EventVenue structured data so it can appear as a place, not just a page.

How the system was designed.

A Vite-built React single-page application served as static files. React Router handles seven routes on the client, Framer Motion drives the section and page transitions, and all copy — venues, celebrations, amenities, story, testimonials quoted on the site — lives in one content file. Metadata and JSON-LD are in the static HTML shell; enquiries open WhatsApp.

Olive Green — a single-page React site for a marriage garden opening in 2026 — architecturehero, galleryenquireVisitorStatic HTML shell (meta, …React SPA (Vite)React Router · 7 routescontent.tsImage CDNWhatsApp
AIDataApplicationExternal

What was built.

  • 01Vite + React with React Router routes for home, venues, each venue by slug, celebrations, gallery, about and contact.
  • 02Tailwind CSS with the brand as tokens — olive, olive deep, sage, gold, gold soft, ivory, cream, ink — and Cormorant Garamond with Jost as the type pair.
  • 03Framer Motion for reveals and transitions; number tickers for the venue statistics.
  • 04`color-scheme: only light` and a Dark Reader lock so the design is not recoloured; theme colour set for browser chrome.
  • 05Hero image preloaded with `imagesrcset` and `fetchpriority="high"`; Open Graph tags and EventVenue JSON-LD in the static shell.
Olive Green homepage on desktop: an outdoor wedding aisle with flower arrangements behind the headline A Garden Where Forever Begins and an Enquire on WhatsApp button
Homepage, desktop — production build
Olive Green homepage on a phone: the same aisle photograph, headline and stacked Enquire on WhatsApp and Explore the garden buttons
Homepage, phone

Where AI was used and why.

This project did not use AI — a deliberate choice. Not every system needs a model.

Relevant stack.

  • React
  • Vite
  • React Router
  • Framer Motion
  • Tailwind CSS
  • JSON-LD
  • Railway

Only factual results.

Outcome to be added. Results are only published here when they can be stated factually — no estimated metrics.

Important engineering insights.

  • A single-page app is fine for a small brochure site as long as the static shell carries the metadata and structured data crawlers need.
  • Preloading the hero image is the single biggest LCP win on a photograph-led page.
  • Opting out of forced dark mode is a real design decision for brands whose palette is the brand.

Have a project in mind?

Tell me what you're trying to build. I'll come back with an honest view on scope, architecture and the right approach.