Next.js
Chosen to structure a solid application, easy to evolve, and clean to maintain on a product base that had to stay reliable over time.
Tailwind CSS
Chosen to iterate quickly on interfaces, keep visual consistency strong, and adjust journeys without slowing delivery.
Stripe
Chosen to secure payment flows, handle membership and booking cases, and avoid rebuilding sensitive payment logic.
PostgreSQL
Chosen to keep a robust database foundation able to support business flows, bookings, and structured operations without weakening the product.
Prisma
Chosen to keep the data access layer readable, reliable, and easier to evolve as the platform grows.
Zod
Chosen to validate sensitive data cleanly, secure inputs, and avoid subtle errors on important product flows.