06 · Pipeline Pengembangan
Prinsip eksekusi: database dan tulang punggung backend dirancang penuh untuk semua modul di awal, supaya tidak ada perombakan struktur di tengah jalan. Frontend digarap bertahap dalam dua gelombang. Gelombang A wajib selesai lebih dulu: INTERNAL, SPAREPART, CUSTOMER, VENDOR. Gelombang B (MEKANIK, RENTAL, integrasi kemitraan) tersimpan sebagai backlog terencana: tabelnya sudah ada di database, pengerjaannya menunggu gelombang pertama stabil. Angka "tahun" pada roadmap bisnis adalah asumsi; yang mengikat adalah urutan dan kriteria selesai.
Dua hal yang mengubah bentuk rencana ini (revisi 2026-08-05). Pertama, timnya 3 orang — 2 web developer + 1 mobile developer; pembagian aplikasinya dikunci pemilik 2026-08-06: ahramadhani (fondasi + API internal + marketplace), npkevin7 (aplikasi staf + portal vendor), daniramdhani01 (mobile). Kedua, sebagian kriteria selesai terkunci kalender, bukan effort: "satu bulan penuh stok bergerak" dan "satu siklus PO import ±2 bulan" tidak bisa dipercepat dengan menambah orang. Konsekuensinya urutan tidak lagi berantai penuh — hanya "INTERNAL duluan" yang benar-benar dependensi data; sisanya diparalelkan.
fondasi sekali jadi → Gelombang A (prioritas) → gerbang kualitas → Gelombang B (backlog) — garis putus-putus = belum dikerjakan
Ctrl/Cmd + scroll untuk zoom. Drag untuk geser. Klik dua kali untuk fit.
urutan mengikuti dependensi data · kriteria selesai = kontrak yang bisa ditagih
Monorepo newpt-platform (nama kerja) berisi apps/api (Express 5 + TS),
apps/worker (Go, antrean job Postgres untuk kerja CPU-berat), tiga aplikasi web,
dan aplikasi React Native. Auth dengan peran, entitas legal KMT/PUM, Caddy untuk TLS, VPS dengan
backup harian, SeaweedFS (container) untuk penyimpanan file, dan migrasi database lengkap
untuk SEMUA modul. Struktur berhenti berubah di sini.
Lima hal yang wajib benar sekarang karena mahal permanen kalau terlewat:
idempotency dengan penyimpanan respons (retry di sinyal buruk tidak boleh melahirkan baris ledger
ganda — dan di ledger append-only baris itu tidak bisa dihapus); kolom aktor
created_by/device_id; tabel sesi, refresh token, dan device;
opname disimpan sebagai event dengan server yang menurunkan delta; serta
REVOKE UPDATE, DELETE pada stock_movements supaya sifat append-only
dijamin engine, bukan disiplin orang.
Principal yang sama; kirim request tulis dua kali menghasilkan satu baris ledger dengan respons kedua replay 200; backup pernah diuji restore; satu perintah deploy dari commit ke server.Operasional dua CV pindah ke sistem, dengan sub-urutan: katalog + cross-reference → ledger stok + opname perdana dari Excel → penjualan per entitas (stok keluar otomatis, dashboard, ekspor pembukuan) → purchasing + histori harga supplier (IDR/USD/RMB). Pesanan telepon/WA tetap diinput di sini; kanal lama hidup, datanya terpusat.
Aplikasi React Native untuk staf gudang: scan dan hitung opname, terima barang dari PO, toleran sinyal buruk lewat antrean lokal dengan retry idempoten, sinkron delta katalog. Menghitung stok fisik di gudang sambil memegang laptop adalah alur kerja yang salah bentuk — ini alur paling mobile-native di seluruh sistem, dan pasangan alami dari ledger append-only.
Ini juga pilihan aman untuk aplikasi mobile pertama: basis terpasangnya HP staf sendiri, terkendali dan bisa dipaksa update, jadi risiko versioning jauh lebih rendah daripada aplikasi pelanggan. Sekaligus memberi API konsumen nyata lebih awal, sehingga bentuk payload distabilkan oleh pemakaian, bukan oleh tebakan.
Katalog yang sudah terkurasi modul INTERNAL dibuka ke publik: pencarian part dengan
cross-reference nomor alternatif, harga dan ketersediaan real-time dari ledger yang sama, dan
checkout yang menulis ke sales_orders berkanal marketplace. Tidak ada
duplikasi data; etalase hanyalah pintu baru ke fondasi yang sama.
Akun publik (external_accounts — ADR-003, satu kolam untuk pembeli/vendor/mitra) dengan riwayat pembelian dan servis, armada unit
(customer_units: brand, model, nomor seri) sebagai dasar rekomendasi part yang pasti
cocok, invoice rapi, dan status garansi. Riwayat per unit inilah switching cost yang membuat
pelanggan menetap.
Distributor dan supplier lokal bergabung: onboarding dengan kurasi, listing produk yang menempel
ke katalog pusat (vendor_listings → products, bukan katalog liar),
dashboard penjualan, dan penyelesaian pesanan yang dipenuhi stok vendor. Dari sinilah supply chain
Level 2 dan 3 (supplier lokal, vendor darurat) berubah dari strategi menjadi fitur.
UAT bersama staf dan pelanggan pilot, pelatihan pengguna, dokumentasi cara pakai, monitoring dan alert server, gladi resik restore backup. Empat modul prioritas harus dipakai transaksi nyata, bukan sekadar selesai dibangun.
MEKANIK (booking teknisi, jadwal, tracking, estimasi biaya) dan RENTAL (listing unit, kalender, GPS, pembayaran) dibangun di atas tabel yang sudah ada sejak fondasi; menyusul integrasi kemitraan (financing, asuransi, logistik). Tiap modul mendapat sesi perancangan dan kriteria selesai sendiri sebelum baris kode pertama. Rincian scope tersimpan di dokumen plan pengembangan lanjutan.
adr-001-arsitektur-platform.md.