Case Study — SaaS · Payments
DameTicket — ticketing platform, and its v2 rewrite
DameTicket has sold real tickets since around 2021 on Laravel and Next.js with Redsys card payments. This case study is the v2 rewrite: Next.js, Prisma and Stripe, with authentication and SQL-backed data integrity, built end to end as a solo engineer.
- Next.js
- TypeScript
- Prisma
- MySQL
- Stripe
- React
- NextAuth
Overview
DameTicket is a SaaS ticketing product I designed and shipped end-to-end. The goal was to let event organizers create paid events, sell tickets online, and manage attendees without depending on a third-party marketplace that takes 8-10% per transaction.
The v1 platform has been selling real tickets since around 2021 on Redsys. The v2 rewrite carries the payment flow behind a provider interface, with Stripe and Redsys as implementations, persistent order history, and temporary reservations that hold tickets while a buyer completes payment.
What I built
- Stripe integration behind a payment-provider interface, with the webhook route rejecting anything whose Stripe signature does not verify.
- Prisma and MySQL schema for events, ticket tiers, orders and temporary reservations, so a ticket is held for the length of a checkout rather than sold twice while a payment is pending.
- Authentication and authorization flows for event organizers and buyers, including session-aware order history and email-based ticket delivery.
- Multi-step event creation UI with image upload, ticket tier configuration, and capacity limits.
- Production deployment with environment isolation, automated migrations, and a Stripe test/live mode switch tied to the deployment environment.
Why this mattered
DameTicket was a real-money product, not a portfolio toy. Building the payment path correctly meant getting Stripe's signed webhook verification right, handling failed payment retries cleanly, reconciling charge IDs to order rows in the database, and never letting a race condition double-sell a seat.
The interesting engineering was less about UI and more about ordering of side effects: when a buyer hits Pay, the system has to confirm Stripe, reserve the seat, persist the order, send the email, and update inventory — and recover cleanly if any one of those steps fails or is retried.
Outcome
DameTicket has been selling real tickets since around 2021 on Laravel and Next.js with Redsys card payments. This case study covers the v2 rewrite on Next.js, Prisma and Stripe: checkout, access control and organizer administration wired together by a single engineer.