architecture & process
Bagaimana saya merancang sistem, bukan cuma menulis fitur.
Halaman ini mencakup tech stack, diagram arsitektur, alur development, dan beberapa keputusan teknis nyata yang pernah saya ambil — lengkap dengan alasannya.
01 — tech stack
Kenapa Flask + SQLite, bukan yang lain
Flask
Micro-framework yang tidak memaksakan struktur — cocok untuk memahami setiap request-response cycle secara eksplisit, bukan tersembunyi di balik magic seperti di framework full-stack.
SQLite
Zero-config dan single-file — pilihan realistis untuk deployment dari Termux dan skala project saat ini, dengan jalur migrasi jelas ke Postgres bila traffic tumbuh.
Vanilla JavaScript
Menghindari overhead build tool di lingkungan mobile. Memaksa pemahaman DOM dan browser API secara langsung, bukan lewat abstraksi framework.
SocketIO
Dipilih untuk kebutuhan real-time (status order, notifikasi) tanpa harus membangun infrastruktur WebSocket dari nol.
02 — arsitektur
Alur request pada sistem multi-tenant
03 — development process
Dari ide sampai production
Scoping & schema
Menentukan entitas utama dan relasinya lebih dulu — termasuk memikirkan tenant boundary sejak baris skema pertama.
Prototype alur inti
Membangun happy-path dulu (mis. buat order → bayar → selesai) sebelum menambah fitur sekunder.
Threat pass
Meninjau ulang setiap endpoint: apa yang terjadi kalau ID diganti, token dipakai ulang, atau input tidak sesuai format?
Hardening & refactor
Menutup celah yang ditemukan, membersihkan credential, dan menyusun ulang query yang tidak konsisten.
Deploy & observe
Deploy via git dari Termux, lalu pantau log untuk perilaku tak terduga di kondisi nyata.
04 — decision log
Keputusan teknis nyata & alasannya
Query wajib melalui tenant-scoped helper, tidak ada raw query langsung
Setelah audit menemukan potensi IDOR di endpoint order awal, semua akses database dipaksa lewat satu helper yang otomatis menyisipkan filter tenant_id — menghilangkan kemungkinan lupa scoping di endpoint baru.
Riwayat login & audit log dipisah dari tabel user utama
Memisahkan log dari data user inti membuat query autentikasi tetap cepat, sekaligus memudahkan investigasi bila ada aktivitas mencurigakan tanpa mengunci tabel utama.
Semua perubahan file dikirim sebagai perintah, bukan file utuh
Karena workflow berjalan di Termux, setiap patch disusun sebagai sed/heredoc/python3 yang bisa langsung ditempel dan dijalankan — menghindari bolak-balik buka editor manual di layar kecil.