Personal project · Case study
CineSpot
CineSpot: Movie Booking
Pick a film, pick your seats, pay, done.
A full-stack movie booking platform: browse movies, choose seats and book tickets, with real-time Stripe payments and background-job confirmations.
- Role
- Personal project (full stack)
- Stack
- React
- Node.js
- Tailwind CSS
- Stripe
- Clerk
- Inngest
01 · Context
The problem
A booking is only real once the money has actually moved, so the flow has to trust the payment provider's confirmation, not the browser.
02 · Solution
The approach
The server confirms bookings from Stripe webhooks rather than from the client, authentication is delegated to Clerk, and confirmations run as Inngest background jobs so they do not block the request.
03 · Architecture
How the pieces fit together
CineSpot · architecture
Interface
- React + Tailwind · browse · seats · checkout
Logic
- Node.js server · bookings · webhooks
Services
- Clerk · email · social · phone
- Stripe · payments · webhooks
- Inngest · background jobs
Data flow
- React + Tailwind → Clerk (sign in)
- React + Tailwind → Node.js server (book)
- Node.js server → Stripe (checkout)
- Stripe → Node.js server (webhook)
- Node.js server → Inngest (confirm)
04 · What I built
Key features
01
Seat selection and booking
Browse films, pick seats and book tickets seamlessly.
02
Webhook-confirmed payments
Stripe handles payment; webhooks confirm payment status on the server.
03
Flexible sign-in
Multi-session authentication with email, social and phone options via Clerk.
04
Background confirmations
Inngest schedules and runs booking-confirmation jobs outside the request cycle.