Phase 3: Production Hardening & SaaS Architecture Evolution
This week wasn't about adding features it was about strengthening Arunika's foundation with production-grade authentication, cleaner architecture, subscription flexibility, and real data integration.
Phase 3 : Saat Arunika Mulai Terasa Seperti Produk, Bukan Lagi Project
Kalau di Phase sebelumnya fokusnya adalah membangun fondasi SaaS, sekarang tantangannya berubah.
Bukan lagi "fiturnya apa?"
Tapi...
"Apakah sistem ini siap dipakai banyak orang?"
Authentication Bukan Lagi Session Biasa
Salah satu perubahan terbesar minggu ini adalah membangun ulang sistem authentication.
Yang sebelumnya hanya session sederhana, sekarang mulai berubah menjadi arsitektur yang lebih production-ready.
Beberapa hal yang sedang dibangun:
Access Token & Refresh Token
Refresh Token Rotation
Revocable Session
Database Validation
Multi-device Session Management
Session Hardening
Tujuannya sederhana.
Kalau suatu saat user login dari banyak device, logout dari salah satunya, atau ada token yang bocor...
sistem tetap bisa mengontrol semuanya dengan aman.
Soft Delete Tidak Sesederhana Mengubah Flag
Awalnya aku pikir fitur hapus user cukup mengubah status menjadi deleted.
Ternyata jauh lebih kompleks.
Karena setelah ditelusuri masih ada beberapa data yang tetap tertinggal.
Akhirnya proses delete user dibangun ulang supaya benar-benar aman.
Sekarang prosesnya mempertimbangkan:
anonimisasi data
membersihkan credential yang sudah tidak dipakai
menjaga integritas relational database
memastikan tidak ada data sensitif yang masih bisa digunakan kembali
Hal kecil yang ternyata cukup memakan waktu.
Subscription Mulai Dibentuk Lebih Fleksibel
Di sisi bisnis, aku juga mulai menyusun ulang sistem paket.
Bukan sekadar membuat paket Basic, Premium, atau Ultimate.
Tapi bagaimana supaya nanti sistem bisa berkembang tanpa harus mengubah struktur database setiap ada fitur baru.
Beberapa konsep yang mulai dibangun:
pooled invitation quota
feature access
add-on quota
original price & discount
subscription enforcement
Harapannya nanti tim hanya perlu mengatur konfigurasi dari dashboard admin.
Bukan mengubah kode setiap kali ada perubahan paket.
Mock Data Mulai Ditinggalkan
Perlahan seluruh halaman mulai berpindah menggunakan data asli.
Alurnya sekarang menjadi jauh lebih jelas.
Database
↓
Repository
↓
Service
↓
TanStack Query
↓
UI
Dengan pola ini, komponen UI tidak lagi peduli data berasal dari mana.
Yang penting data sudah siap digunakan.
UI Mulai Dirancang Sebagai Produk Premium
Selain backend, aku juga mulai merombak beberapa halaman utama.
Mulai dari:
Login
Register
Dashboard
Theme Management
Upload Asset
Targetnya bukan sekadar "bagus".
Tapi memberikan kesan premium sejak pertama kali pengguna membuka aplikasi.
Karena pengalaman pengguna juga bagian dari sebuah produk.
Banyak Waktu Habis Untuk Hal yang Tidak Terlihat
Lucunya...
Sebagian besar pekerjaan minggu ini bahkan tidak menghasilkan tombol baru.
Tidak ada halaman baru.
Tidak ada fitur yang bisa dipamerkan.
Yang berubah justru bagian dalam sistem.
Security.
Architecture.
Database.
Authentication.
Hal-hal yang hampir tidak pernah dilihat user.
Tapi justru menjadi fondasi yang menentukan apakah produk bisa bertahan ketika jumlah pengguna mulai bertambah.
Insight Hari Ini
Semakin lama membangun SaaS, aku sadar kalau sebagian besar pekerjaan bukan menambah fitur.
Justru memastikan setiap fitur bisa terus berkembang tanpa harus dibangun ulang.
Karena membangun aplikasi itu relatif cepat.
Membangun fondasi produk yang bisa dipakai bertahun-tahun, itu cerita yang berbeda.
#buildinpublic #SaaS #Nextjs #React #TypeScript #Prisma #TanStackQuery #SoftwareArchitecture #Startup #WebDevelopment #Arunika