Langsung ke konten

← Kembali ke Labs

L3:ticket-marketplace-backend · Software Wing · Unggulan

Backend Marketplace Tiket Event

Lelang, resale, ledger dompet, dan settlement partner untuk marketplace tiket yang sudah live.

Klien
TEMMPAT
Peran
Lead backend engineer (freelance) untuk refactor v2
Periode
Nov 2025 hingga Feb 2026

Hasil

  • 61%

    Porsi commit saya dari seluruh commit repositori (162 dari 267)

    Dihitung dari riwayat git repositori klien (commit saya Nov 2025 sampai Feb 2026)

    Terverifikasi
  • 2 → 1

    Database utama setelah MongoDB dipensiunkan (PostgreSQL, dengan Redis sebagai cache)

    Terverifikasi dari riwayat commit dan model data

    Terverifikasi
  • 3 roles

    Akses admin, client, dan partner dipisahkan di seluruh API

    Terverifikasi dari middleware route dan riwayat commit

    Terverifikasi

Masalah

TEMMPAT adalah tempat penggemar membeli, menjual ulang, dan melelang tiket konser maupun event. Backend v1 menyimpan data di MongoDB dan PostgreSQL sekaligus tanpa layering yang jelas, padahal bisnisnya butuh pembayaran ala escrow, refund, dan payout partner yang bisa dipercaya pembeli, penjual, dan partner.

Yang saya kerjakan

  • Memindahkan API Express ke Bun dengan repository pattern, mempensiunkan MongoDB sehingga PostgreSQL jadi satu-satunya sumber data, lalu menambahkan caching Redis dengan invalidasi yang jelas.
  • Menulis ulang checkout dan order lelang sebagai transaksi database dengan row lock dan reservasi stok, sehingga satu tiket tidak mungkin terjual dua kali.
  • Membangun alur uang: dompet dengan ledger transaksi, biaya platform multi-komponen, callback pembayaran yang diverifikasi signature-nya, refund, penarikan dana, dan settlement bagi hasil partner saat order selesai.
  • Menambahkan chatroom pembeli dan penjual lewat Socket.IO yang terbuka otomatis setelah pembayaran, plus tahap review admin untuk file tiket dan tanda tangan.
  • Memisahkan peran admin, client, dan partner, menambahkan security logging, serta memasang Prometheus dan Grafana dengan exporter blackbox dan PostgreSQL.

Arsitektur

  1. KlienWeb and mobile clientsPembeli dan penjual
  2. KlienAdmin and partner panelReview, refund, payout
  3. LayananExpress API on BunOrder, lelang, ledger dompet
  4. LayananSocket.IO chatTerbuka setelah pembayaran
  5. DataPostgreSQLSatu-satunya sumber data
  6. DataRedisCache dan rate limit
  7. EksternaliPaymuPayment gateway
  8. EksternalAWS S3File tiket, upload presigned

Alur data

  • Web and mobile clients to Express API on Bun (REST)
  • Web and mobile clients to Socket.IO chat (WebSocket)
  • Admin and partner panel to Express API on Bun (review, payouts)
  • Express API on Bun to PostgreSQL (transactions)
  • Express API on Bun to Redis (cache)
  • Socket.IO chat to PostgreSQL (messages)
  • Express API on Bun to iPaymu (payments)
  • iPaymu sends asynchronously to Express API on Bun (callbacks)
  • Express API on Bun to AWS S3 (ticket files)

Stack

  • Bun
  • Node.js
  • Express
  • PostgreSQL
  • Sequelize
  • Redis
  • Socket.IO
  • JWT
  • iPaymu
  • AWS S3
  • Brevo
  • Docker
  • nginx
  • Prometheus
  • Grafana
  • Jest

L2 · Di perjalanan karierLead Backend Engineer (freelance) · TEMMPAT