Booking
Anekatransport — Bus Ticket Booking
Online bus ticket booking with real-time seat inventory and overbooking prevention.
- Client
- Anekatransport
- Period
- Sep 2022 – Jun 2023
- Role
- Full-stack developer
- Contribution
- Built from scratch
Context & Problem
Multi-channel bus ticket sales risk two people booking the same seat under heavy traffic.
My Contribution
Designed and built the Laravel backend, the Nuxt.js frontend, and the concurrency and caching strategy.
Solution & Key Features
- Real-time seat inventory per schedule and route.
- Overbooking prevention with time-boxed seat holds plus PostgreSQL row locking.
- Redis caching for frequently searched schedules.
- PgBouncer connection pooling for traffic spikes.
Architecture
flowchart LR U[Nuxt.js] --> L[Laravel API] L --> R[(Redis cache)] L --> B[PgBouncer] --> P[(PostgreSQL)]
Challenges & Decisions
SELECT ... FOR UPDATEon the seat row guarantees a single winner per seat; expired holds are cleaned up by a scheduled job.- Only read-heavy data (schedules) is cached — never seat availability — so it can't go stale.
Outcome
No double bookings on the same seat, and schedule search stays fast at peak times.
Related projects
InsuranceDevelopmentConfidential
Tugu Clone — Insurance Management
Insurance management system with cross FE/BE RBAC, claim workflows and real-time notifications.
Perusahaan asuransi (NDA) · 2024
LaravelPHPPostgreSQLFirebase Cloud MessagingVue.js
E-commerceBuilt from scratch
Roti Macan — E-commerce Bakery
Bakery e-commerce with per-session pickup quotas, multi-staff fulfilment kanban and Midtrans payments.
Roti Macan · 2022
BullMQNext.jsPostgreSQLNestJSRedis
Government / BiometricDevelopmentConfidential
Sistem Database Pemasyarakatan
Correctional database system with SourceAFIS fingerprint matching and MinIO storage.
Instansi pemerintah (NDA) · 2023
LaravelPHPLumenVue.jsMinIO