// CASE STUDY // ENTERTAINMENT
Cinema Ticketing Platform on Go Microservices
Our internal reference build of a cinema ticketing platform: Go microservices with gRPC and event messaging, seat locking, online payment, e-tickets, and web plus mobile apps.
Industry Entertainment
Engagement Internal product
Tech Stack Go (Fiber, gRPC), RabbitMQ, PostgreSQL, Redis, Midtrans, Vue + Vite, Flutter
// Outcomes
- Seats are held atomically during checkout, so two buyers cannot take the same seat
- Booking, payment and ticketing coordinated as a saga across services
- Real-time notifications pushed to clients over WebSocket
Why We Built It
Ticketing is a compact way to exercise the hard parts of transactional systems: concurrent demand for the same seat, payments that can fail midway, and several services that must agree on the outcome. We built this platform as an internal reference for how we structure microservice backends and their clients.
What It Does
- Services for users, movies and showtimes, bookings, payments, promotions (promo codes) and notifications, communicating over gRPC with circuit breakers on inter-service calls.
- Booking saga that locks seats, takes payment and issues the ticket as one coordinated flow, releasing the seats if a step fails.
- Seat locking in Redis with atomic Lua scripts and an expiry, so abandoned checkouts free their seats automatically.
- Online payment through Midtrans, PDF e-tickets, and RabbitMQ events with a dead-letter queue feeding a notification service that pushes updates over WebSocket.
- Clients: a Vue + Vite web app with Playwright end-to-end tests, and a responsive Flutter app for mobile, tablet and desktop.
Architecture & Stack
- Go (Fiber for HTTP, gRPC between services), PostgreSQL, Redis, RabbitMQ.
- Midtrans payment gateway; PDF tickets generated server-side.
- Vue + Vite + Tailwind CSS web app; Flutter (Riverpod, freezed) app.
- Integration tests with Testcontainers; Docker Compose for local environments.
// System Screenshots
Have a similar project in mind?
Discuss your architecture and delivery timeline directly with our engineers.
Discuss your project →