Tabunganku API

— tentang project
REST API backend untuk aplikasi manajemen tabungan dengan dua mode: tabungan pribadi dan tabungan bersama berbasis grup (kode undangan unik, pelacakan kontribusi per anggota). Dideploy sebagai serverless di Vercel dengan dokumentasi Swagger interaktif.
tantangan
Domain tabungan bersama membawa kompleksitas nyata: izin akses per anggota, konsistensi saldo grup saat banyak kontribusi masuk, dan keharusan menjaga format respons serta penanganan error tetap seragam di seluruh endpoint — ditambah kebutuhan melindungi API publik dari penyalahgunaan.
solusi
Arsitektur berlapis controller → service → middleware: autentikasi diverifikasi lewat middleware requireAuth (Bearer token Supabase Auth), input divalidasi Zod v4 di boundary sebelum menyentuh business logic, error ditangani terpusat lewat kelas AppError dan global error handler dengan helper respons sukses/gagal yang seragam. Keamanan diperkuat helmet dan express-rate-limit, dokumentasi digenerate otomatis dari JSDoc ke Swagger UI.
— highlights
- Dua mode tabungan dalam satu API: pribadi dan bersama (grup + kode undangan unik + kontribusi per anggota)
- Pipeline request jelas: requireAuth → validate (Zod) → asyncHandler → controller → service
- Penanganan error terpusat dengan kelas AppError dan format respons standar success/fail
- Dokumentasi Swagger interaktif yang digenerate dari anotasi JSDoc
- Deployed serverless di Vercel dengan hardening helmet + rate limiting