
Flash Sale & Event Ticketing Platform
Detail Proyek
Flash Sale & Event Ticketing Platform — High-Concurrency Flash Sale & Live Queue System
Flash Sale & Event Ticketing Platform adalah platform berbasis web yang dirancang khusus untuk menangani penjualan tiket konser dan produk flash sale dengan volume pembeli yang sangat tinggi dalam waktu bersamaan. Sistem ini memastikan penjualan berjalan lancar tanpa lonjakan latensi, memberikan transparansi antrian kepada pengguna, dan menjamin tidak ada tiket yang terjual melebihi kapasitas kuota (zero overselling).
Saya membangun sistem ini sebagai Full-Stack Engineer, mulai dari perancangan arsitektur backend berkecepatan tinggi di Go, pemrosesan antrian dan pemotongan stok instan, komunikasi data real-time dua arah, hingga pengembangan antarmuka pengguna yang modern dan responsif.
Ringkasan Proyek
- Kategori: Website
- Peran: Full-Stack Engineer
- Frontend: React, TypeScript, Vite, Tailwind CSS, TanStack Query, Lucide Icons, Canvas Confetti
- Backend: Go (Golang), Gin Framework, GraphQL (gqlgen)
- Database: PostgreSQL, Connection Pooling (
pgxpool),golang-migrate - In-Memory & Caching: Redis (Atomic Stock Decrement, Pub/Sub, Sorted Set Queue)
- Message Broker: RabbitMQ (Asynchronous Worker Pool, Dead-Letter Queue)
- Real-Time Communication: GraphQL Subscriptions via WebSockets
- Autentikasi: JWT (JSON Web Token), bcrypt Hashing, Role-Based Access Control (RBAC)
Latar Belakang
Penjualan tiket konser atau barang edisi terbatas (flash sale) kerap mengalami kendala saat ribuan hingga jutaan pengguna menyerbu website di detik yang sama. Masalah yang sering ditemui meliputi server lambat (down), pembeli bingung karena tidak ada kepastian urutan antrian, hingga masalah paling fatal yaitu overselling (stok habis namun pembayaran pembeli tetap masuk).
Platform ini dibuat untuk menjawab tantangan tersebut dengan memisahkan proses verifikasi stok instan dari proses penyimpanan data berat di latar belakang.
Melalui platform ini, pengguna dapat:
- Menjelajahi daftar event flash sale dengan live countdown timer.
- Masuk ke ruang tunggu virtual (waiting room) dan melihat posisi antrian secara transparan.
- Melakukan pembelian instan dalam hitungan milidetik saat giliran tiba.
- Melihat pergerakan sisa stok secara langsung (real-time) tanpa perlu me-refresh halaman.
- Menerima tiket digital (E-Ticket) beserta rincian transaksi setelah pembayaran berhasil.
- Memeriksa riwayat pesanan yang pernah dilakukan.
Di sisi admin, sistem menyediakan Command Center untuk membuat event, memantau grafik penjualan dan sisa stok secara langsung, mengelola alur ruang tunggu antrian, serta meninjau log audit transaksi.
Kontribusi Full-Stack Saya
1. Keamanan Autentikasi & Kontrol Akses (JWT & RBAC)
- Membangun sistem pendaftaran dan autentikasi pengguna dengan enkripsi kata sandi menggunakan
bcrypt. - Menerapkan session berbasis stateless JWT (JSON Web Token) dengan masa berlaku yang aman.
- Menerapkan Role-Based Access Control (RBAC) untuk memisahkan hak akses antara
ADMINdanUSER.
2. Mekanisme Pemotongan Stok Anti-Oversell
- Mengembangkan logika pemotongan stok langsung di memori berkecepatan tinggi menggunakan script atomic di Redis sebelum data masuk ke database.
- Memastikan tidak terjadi penjualan ganda (zero overselling) meski ribuan permintaan checkout masuk dalam waktu bersamaan.
- Menerapkan batasan maksimal kuota per pengguna (max per user) untuk mencegah aksi borong tiket oleh bot atau calo.
3. Pemrosesan Pesanan Latar Belakang (Asynchronous Worker Pool)
- Memisahkan jalur konfirmasi stok instan dari proses pembuatan invoice dan pencatatan database menggunakan antrian pesan RabbitMQ.
- Membangun sekumpulan worker di Go (worker pool) yang bekerja secara paralel di latar belakang untuk menyelesaikan transaksi tanpa membebani server utama.
- Menyiapkan mekanisme penanganan transaksi gagal (Dead-Letter Queue) dan percobaan ulang otomatis agar tidak ada data transaksi pembeli yang hilang.
4. Ruang Tunggu Virtual & Antrian Interaktif
- Merancang sistem antrian virtual (waiting room) berbasis urutan waktu kedatangan (Sorted Set) untuk menampung lonjakan pengunjung sebelum sesi penjualan dimulai.
- Menampilkan radar visual dan nomor antrian pengguna secara dinamis sehingga posisi antrian terasa jelas dan adil.
- Menyediakan gerbang kendali bagi admin untuk meloloskan pembeli dari ruang tunggu secara bertahap menuju halaman pembayaran.
5. Pembaruan Data Real-Time via WebSockets
- Mengintegrasikan GraphQL Subscriptions berbasis WebSocket untuk menghubungkan browser pengguna dengan backend secara langsung.
- Menyiarkan perubahan sisa stok secara live ke seluruh pengguna yang sedang membuka halaman event.
- Mengirimkan notifikasi status pemrosesan pesanan secara instan dari worker ke layar pengguna tanpa jeda.
6. Antarmuka Pengguna yang Modern & Interaktif
- Membangun antarmuka pengguna berbasis React, TypeScript, dan Tailwind CSS dengan konsep desain glassmorphism bernuansa modern.
- Membuat komponen interaktif seperti hitung mundur live (countdown timer), bilah persentase sisa stok dinamis, dan efek selebrasi confetti saat pesanan berhasil.
- Merancang E-Ticket digital yang rapi dan mudah dibaca oleh pembeli.
7. Admin Command Center & Audit Trail
- Membangun dashboard analitik bagi admin untuk memantau omzet penjualan, total tiket terjual, dan sisa kuota secara real-time.
- Menyediakan fitur pembuatan dan pengaturan event (jadwal sale, harga, dan kuota).
- Mencatat seluruh riwayat perubahan status transaksi ke dalam log audit (
order_logs) untuk keperluan pelacakan dan rekonsiliasi data.
Fitur Produk
- Live Event Discovery & Countdown — Menampilkan daftar flash sale yang sedang berlangsung atau akan datang lengkap dengan penghitung waktu mundur.
- Virtual Waiting Room & Queue Radar — Ruang antrian interaktif dengan nomor urut dinamis sebelum checkout dibuka.
- Express Instant Checkout — Proses pembelian super cepat dalam hitungan milidetik dengan jaminan anti-kehabisan stok semu.
- Live Real-Time Stock Bar — Indikator kuota tiket yang berkurang secara live di layar pembeli.
- Digital E-Ticket Receipt — Bukti tiket digital instan dengan kode unik pemesanan.
- Admin Live Command Center — Dashboard pemantauan omzet, sisa kuota, dan aktivitas penjualan secara langsung.
- Admission Gate Controller — Alat kendali admin untuk mengatur kelolosan peserta dari ruang antrian secara bertahap.
- Transaction Audit Trail — Riwayat pencatatan komprehensif untuk setiap tahapan status pesanan.
Teknologi & Arsitektur (Tech Stack)
- Frontend: React 18, TypeScript, Vite, Tailwind CSS, TanStack Query, Lucide Icons, Canvas Confetti
- Backend: Go (Golang), Gin Web Framework, GraphQL (gqlgen)
- Database: PostgreSQL 16
- Database Driver & Migration:
jackc/pgx/v5(Connection Pooling),golang-migrate - In-Memory & Caching: Redis 7
- Message Broker: RabbitMQ 3
- Real-Time Layer: WebSockets / GraphQL Subscriptions (
graphql-ws) - Autentikasi: JWT (
golang-jwt/v5),bcrypt
Tantangan Teknis & Solusi
1. Mencegah Kelebihan Penjualan (Overselling) saat Serbuan Pengunjung
Tantangan: Jika ribuan orang menekan tombol beli secara bersamaan dan pengecekan stok langsung dilakukan ke database utama, akan terjadi race condition yang mengakibatkan jumlah tiket terjual melebihi stok yang tersedia.
Solusi: Pengecekan dan pemotongan stok dialihkan ke memori Redis menggunakan operasi atomic script. Server hanya mengizinkan pembelian jika kuota di memori masih mencukupi, sehingga database utama terlindungi dari benturan transaksi.
2. Menghindari Server Lemah / Lambat Akibat Antrean Transaksi Database
Tantangan: Proses penyimpanan data pesanan, perhitungan invoice, dan pembuatan tiket ke database membutuhkan waktu beberapa milidetik. Menunggu proses ini selesai saat traffic tinggi akan membuat respons website menjadi sangat lambat.
Solusi: Menerapkan pemisahan tugas menggunakan RabbitMQ. Begitu stok di memori berhasil dikunci, pengguna langsung menerima respon sukses, sementara detail transaksi disimpan ke database di latar belakang oleh sekumpulan worker.
3. Memberikan Kepastian kepada Pengguna saat Berebut Tiket
Tantangan: Pengguna sering frustrasi dan terus-menerus menekan tombol refresh saat situs ramai karena tidak tahu apakah mereka masih memiliki peluang membeli.
Solusi: Menyediakan ruang tunggu virtual interaktif dan jalur WebSocket real-time. Pengguna mendapatkan nomor urut antrian dan melihat perubahan sisa stok secara langsung tanpa perlu melakukan refresh manual.
4. Menjaga Keandalan Transaksi dari Potensi Data Hilang
Tantangan: Jika server mengalami gangguan saat worker sedang memproses pesanan di latar belakang, data pesanan pembeli berisiko hilang.
Solusi: Menggunakan konfirmasi manual (manual acknowledgment) pada RabbitMQ dan antrian penampung gagal (Dead-Letter Queue). Pesanan hanya akan ditandai selesai jika sudah benar-benar tersimpan di database PostgreSQL.
Pembelajaran & Poin Kunci
- Memahami cara membangun arsitektur sistem berkecepatan tinggi yang tahan terhadap lonjakan pengunjung masif.
- Menguasai teknik pencegahan race condition dan penguncian kuota instan di memori (in-memory atomic operations).
- Menerapkan pola arsitektur event-driven dan worker pool untuk memisahkan beban kerja kritis dan non-kritis.
- Mengintegrasikan komunikasi data dua arah secara real-time menggunakan WebSockets dan GraphQL Subscriptions.
- Merancang pengalaman pengguna yang interaktif, tenang, dan transparan dalam situasi penjualan dengan persaingan tinggi.
Spesifikasi Proyek
Ingin Proyek Serupa?
Tim ahli kami siap membantu Anda merealisasikan inovasi sistem software terbaik.
Project Showcase
9 Tangkapan Layar





Proyek Lainnya
Jelajahi karya rekayasa perangkat lunak lainnya.

Koperasi Sedia
Cooperative core banking platform: automated savings, flat & annuity loans, daily cash register, proportional dividend allocation, and print-ready legal loan agreements.

SupportSense AI
Autonomous enterprise AI customer support engine fusing Hybrid RAG + KAG (PostgreSQL & ChromaDB) for zero-hallucination order tracking and cost-efficient sub-second routing.

Bizinsight AI
BizInsight AI adalah sistem Multi-Agent yang mengubah pertanyaan bisnis sehari-hari menjadi query database, grafik interaktif, dan wawasan bisnis otomatis tanpa perlu paham SQL.