~/portfolio/architecture.html
UTF-8 LF HTML5

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

Clientbrowser / PWA
Wildcard Routerresolve tenant dari subdomain
Flask Apptenant-scoped views
Auth Layersession / signed token
Query Layerselalu filter by tenant_id
SQLiteper-tenant data isolation

03 — development process

Dari ide sampai production

01

Scoping & schema

Menentukan entitas utama dan relasinya lebih dulu — termasuk memikirkan tenant boundary sejak baris skema pertama.

02

Prototype alur inti

Membangun happy-path dulu (mis. buat order → bayar → selesai) sebelum menambah fitur sekunder.

03

Threat pass

Meninjau ulang setiap endpoint: apa yang terjadi kalau ID diganti, token dipakai ulang, atau input tidak sesuai format?

04

Hardening & refactor

Menutup celah yang ditemukan, membersihkan credential, dan menyusun ulang query yang tidak konsisten.

05

Deploy & observe

Deploy via git dari Termux, lalu pantau log untuk perilaku tak terduga di kondisi nyata.

04 — decision log

Keputusan teknis nyata & alasannya

CafePOStenant isolation

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.

blogcmssession management

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.

umumdeployment

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.

main | Ln 1, Col 1
no problems detected
UTF-8 00:00:00