What we set out to do
BookMyShow for private celebrations. After a year of running Happy Memories, it was obvious there wasn't a single place a customer could go to compare a private theatre, a home-decor vendor, a cake supplier, and a photographer in one inquiry — and obvious that vendors themselves didn't have a credible way to be discovered without paying Instagram or running their own SEO. The wedge: one search, two delivery modes, six vendor categories.
How we shipped
Next.js 16 + Spring Boot 3.5. Hybrid catalog: MongoDB for evolving filters (price, capacity, amenities, occasions, neighborhoods) where DynamoDB's upfront access-pattern design would slow us down; DynamoDB for high-volume events (leads, analytics, notifications) where Mongo would buckle. Cloudinary for vendor media with an S3 fallback. Framer Motion for the calm animations. Every vendor gets an auto-generated storefront at /v/<slug> — that's the start of the Tier-2 SaaS, productising the listings infrastructure for any vendor who wants their own microsite.
What we learned
The hard problem isn't routing — it's matching. Top-three fan-out, first-responder claim, claimed-by-someone-else notices for the others. The data model has to carry both delivery modes and both vendor sides without bifurcating into "venue products" and "service products." We threw away the venue-first schema twice before getting the unified one right.
Where it's going
Building toward 30+ real vendor listings across 5 cities, 1,000+ monthly visitors, and 50+ leads delivered. AWS hosting, real custom domains, Firebase auth, Razorpay live keys — each one a separate creds-gate to clear. The bones are there. The next quarter is about getting the gates open one by one.
