Skip to content
← All projects

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 UPDATE on 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