Auth bukan cuma halaman login.
Session, verifikasi email, reset password, OAuth, organisasi, invitation, role. Kalau ditulis dari nol, ini yang makan berminggu-minggu.
Auth, billing, organisasi, invitation, sampai payment gateway Indonesia — semua sudah jadi. Gratis dan open source — tinggal clone dan fokus ke fitur produkmu.
Built with
Bukan daftar buzzword. Ini yang benar-benar ada di dalam repo.
Install, dev, build, dan test pakai satu tool.
API type-safe. Docs OpenAPI auto-generate dari route.
Migrasi disimpan di repo. Bukan di dashboard vendor.
Email, OAuth, organisasi, invitation, role.
Sudah wired. Midtrans, Xendit, Stripe punya interface yang sama — tinggal implementasi.
Bahasa Indonesia dan English sudah aktif.
Bukan fiturnya. Tapi hal-hal kecil di baliknya — auth, org, billing, webhook. Bagian yang tiap kali bangun SaaS ditulis lagi dari awal.
Session, verifikasi email, reset password, OAuth, organisasi, invitation, role. Kalau ditulis dari nol, ini yang makan berminggu-minggu.
Duitku, Midtrans, Xendit — signature scheme, bentuk webhook, dan status code-nya beda. Integrasi satu gateway sudah bikin capek. Kedua mulai dari nol lagi.
Setiap query harus scope ke organisasi. Active org perlu di-resolve per request. Role harus dicek di tempat yang tepat. Satu terlewat, tenant lain bisa lihat datanya.
Type yang bocor, migrasi manual, testing setup yang ribet. Bug yang seharusnya ketahuan di editor malah baru muncul di production.
Daftar teknologi lengkap dengan versinya. Semua sudah ter-integrasi.
Satu tool untuk install, dev, build, dan test. TypeScript strict mode di semua workspace.
Hono untuk routing, zod-openapi untuk validasi request dan generate spec OpenAPI otomatis. Swagger UI di /api/docs.
Drizzle ORM dengan schema TypeScript. Migrasi ter-version. Tidak ada schema drift antara dev dan production.
Session, verifikasi email, reset password, OAuth (Google/GitHub), organisasi, invitation, dan role — semua satu paket.
Interface abstrak sebagai kontrak. Duitku sudah diimplementasi. Midtrans, Xendit, dan Stripe tinggal implementasi karena interface-nya sama.
TanStack Router auto-generate route tree. TanStack Query untuk server state. Tailwind v4 dengan shadcn/ui — semua komponen sudah customized.
React Email untuk template. Fallback ke console log kalau API key belum diisi — dev tidak blocked.
Dockerfile multi-stage untuk API dan web. GitHub Actions untuk lint, typecheck, dan test. Workflow terpisah build + push image ke GHCR. Vitest untuk unit test, Playwright untuk end-to-end.
Bukan tambahan opsional. Ini yang biasanya ditemukan bocor waktu production sudah jalan.
CSP, HSTS, X-Frame-Options, Referrer-Policy — semua dipasang lewat hono/secure-headers. Nginx SPA juga di-hardened.
AppError dengan kode dan status HTTP yang stabil. Client bisa handle error berdasarkan kode, bukan parsing string.
Sliding window untuk route bisnis, limit lebih ketat untuk sign-in dan reset password. Webhook di-skip supaya tidak kena retry burst.
Adapter payment gateway verify signature timing-safe sebelum data disentuh. Amount dan currency dicek ulang lawan pending order.
Payment dedupe by (provider, reference). Terminal states (paid/refunded) tidak bisa turun. Subscription auto-active dalam satu transaksi.
requireActiveOrg + requireRole helper. Owner/admin/member berjenjang. Route yang ubah workspace butuh admin minimal.
Route yang ditulis pakai createRoute() muncul di Swagger UI di /api/docs saat dev. Di production docs digated.
Vitest untuk unit, Playwright untuk end-to-end. CI GitHub Actions sudah nyala.
Bukan runtime khusus vendor. Dockerfile multi-stage untuk API dan web. Pindah hosting tinggal push image.
Paket bulanan dalam Rupiah. Organisasi punya banyak member dan role. Checkout lewat gateway yang bisa ditukar.
Vendor punya workspace masing-masing. Anggota, invitation, dan tagihan terpisah per organisasi.
Auth guard, role-based access, dan shell dashboard yang bisa ditambah menu tanpa refactor besar.
Rate limit, error format yang konsisten, dan hook untuk billing berdasarkan pemakaian.
Satu codebase dipakai untuk banyak klien. Konfigurasi payment gateway tinggal ganti per project.
Bangun sendiri tanpa harus nulis fondasi lagi. Fokus ke yang bikin produk kamu beda.
Bukan platform hosted, bukan generator kode. Ini repo yang kamu clone dan modifikasi sepenuhnya.
Auth, billing, multi-tenant — tiga hal yang biasanya bikin project mandek. Di sini sudah kelar. Tinggal clone dan bangun.