🚀 Pitch Visual
🌿 Conceptual
🏗️ Architecture
📐 Logical ERD
🗃️ ERD Schema
19
Digital Waste Bank Solution

Sampah
Jadi Nilai

Sistem pengelolaan bank sampah end-to-end — dari timbang nasabah hingga jual ke pelapak, semua tercatat, teraudit, real-time.

19
Tabel Data
3
Aktor Bisnis
0
Install App
Skalabilitas
Google Apps Script
Google Sheets
Mobile First
No Server Cost
Alur Bisnis Utama
👤
Nasabah
Setor sampah
Tarik saldo
setor & kredit
🏦
Bank Sampah
Timbang, catat
kelola kas
jual & terima
🏪
Pelapak
Beli sampah
harga kurs
⚖️
Transaksi Real-time
Timbang, hitung, catat otomatis. Saldo langsung update.
📱
Cek Saldo via HP
Nasabah cek buku tabungan tanpa install apapun.
💰
Kurs Dinamis
Harga beli & jual tiap barang bisa diatur kapanpun.
🔄
Koreksi & Reversal
Transaksi salah bisa dikoreksi tanpa hapus data.
📊
Laporan & Lock Periode
Data terkunci per periode, aman dari perubahan.
🔐
Audit Trail Penuh
Setiap aksi tercatat: siapa, kapan, apa.
Siap deploy dalam hitungan hari — bukan bulan.
Google Sheets sebagai database · zero server cost · fully mobile
LIVE DEMO →

🗃️ Bank Sampah — Complete Database Schema

// 20 tables · 🔴 = newly added tables · click headers to collapse

Master
Nasabah
Pelapak
Transaksi
Keuangan
System
📦 Master Data
profil
🔑key
·value
·update_at
jenis_barang
🔑id
·nama
·harga_per_kg
·is_active
users
🔑id
·username
·password_hash
·role
·is_online
setting_sistem
🔑key
·value
👥 Nasabah
nasabah
🔑id
·nama
·no_hp
·token_hash
·is_active
·limit_lock
kurs_nasabah
🔑id
🔗barang_id→ jenis_barang
·harga
·tanggal_berlaku
mutasi_saldo_nasabah
🔑id
🔗nasabah_id→ nasabah
·tipeDEBIT/KREDIT
🔗referensi_id
·debit / kredit
·saldo_akhir
·is_locked
withdraw_nasabah
🔑id
🔗nasabah_id→ nasabah
·kode_withdraw
·jumlah
·metode
·is_locked
🏪 Pelapak
pelapak
🔑id
·nama
·no_hp
·is_active
kurs_pelapak
🔑id
🔗pelapak_id→ pelapak
🔗barang_id→ jenis_barang
·harga
·tanggal_berlaku
kurs_pelapak_custom NEW
🔑id
🔗pelapak_id→ pelapak
·nama_barangstring (bukan FK)
·harga
·is_active
·created_at
transaksi_pelapak
🔑id
·kode_transaksi
🔗pelapak_id→ pelapak
🔗barang_id→ jenis_barang
·berat / harga / total
·is_locked / is_deleted
koreksi_transaksi_pelapak NEW
🔑id
🔗transaksi_id_asli→ transaksi_pelapak
🔗transaksi_id_reversal→ transaksi_pelapak
·alasan
🔗created_by→ users
·created_at
buku_kas_pelapak NEW
🔑id
·tipeDEBIT/KREDIT
🔗referensi→ transaksi_pelapak
·keterangan
·debit / kredit
·saldo_akhir
·tanggal
🔗created_by→ users
⚖️ Transaksi Nasabah
transaksi_nasabah
🔑id
·kode_transaksi
🔗nasabah_id→ nasabah
🔗barang_id→ jenis_barang
·berat / harga / total
·is_locked / is_deleted
·receipt_sent
koreksi_transaksi
🔑id
🔗transaksi_id_asli→ transaksi_nasabah
🔗transaksi_id_reversal→ transaksi_nasabah
·alasan
🔗created_by→ users
📊 Keuangan & Laporan
buku_kas
🔑id
·tipeDEBIT/KREDIT
🔗referensi
·debit / kredit
·saldo_akhir
periode_laporan
🔑id
·nama_periode
·tanggal_mulai
·tanggal_selesai
·status
🔗locked_by→ users
⚙️ System
audit_log
🔑id
🔗user_id→ users
·aksi
·deskripsi / referensi
·tanggal
berita_update
🔑id
·judul
·konten / gambar_url
·status

🔗 All Foreign Key Relationships

transaksi_nasabahnasabahnasabah_id
transaksi_nasabahjenis_barangbarang_id
mutasi_saldo_nasabahnasabahnasabah_id
mutasi_saldo_nasabahtransaksi/withdrawreferensi_id
withdraw_nasabahnasabahnasabah_id
koreksi_transaksitransaksi_nasabahid_asli & reversal
kurs_nasabahjenis_barangbarang_id
kurs_pelapakpelapakpelapak_id
kurs_pelapakjenis_barangbarang_id
transaksi_pelapakpelapakpelapak_id
transaksi_pelapakjenis_barangbarang_id
kurs_pelapak_custompelapakpelapak_id · NEW
koreksi_transaksi_pelapaktransaksi_pelapakNEW
buku_kas_pelapaktransaksi_pelapakNEW
buku_kastransaksi/withdrawreferensi
periode_laporanuserslocked_by
audit_logusersuser_id

⚡ Transaction Flows

// POS nasabah — dengan kurs visible + struk WA
0Buka POSPOSNasabah.html
1Lihat Kurskurs_nasabah
2Input Transaksitransaksi_nasabah
3Struk + Kirim WAreceipt_sent
// nasabah setor sampah
1Setor Sampahtransaksi_nasabah
2Harga Kurskurs_nasabah
3Saldo +mutasi_saldo_nasabah
4Kas Bank +buku_kas
5Auditaudit_log
// nasabah tarik saldo
1Withdrawwithdraw_nasabah
2Saldo -mutasi_saldo_nasabah
3Kas Bank -buku_kas
4Auditaudit_log
// POS pelapak — kurs custom per pelapak
0Pilih PelapakPOSPelapak.html
1Load Kurs Customkurs_pelapak_custom 🆕
2Fallback Globalkurs_pelapak
3Simpan + Struktransaksi_pelapak
// bank jual ke pelapak
1Jual ke Pelapaktransaksi_pelapak
2Harga Kurskurs_pelapak
3Kas Pelapak +buku_kas_pelapak 🆕
4Kas Bank +buku_kas
5Auditaudit_log

🌿 Bank Sampah Digital

// sistem pengelolaan sampah berbasis teknologi

Sampah Bernilai · Lingkungan Bersih · Masyarakat Sejahtera
👤
Nasabah
Warga penyetor sampah
setor sampah cek saldo tarik saldo
setor sampah
dapat kredit saldo
🏦
Bank Sampah
Pengelola & perantara
timbang catat kelola kas laporan
jual sampah
terima pembayaran
🏪
Pelapak
Pembeli sampah daur ulang
beli sampah harga kurs
⚖️
Penimbangan
Sampah nasabah ditimbang dan dicatat per jenis barang dengan harga kurs saat itu
💰
Saldo Tabungan
Nilai sampah masuk sebagai saldo tabungan. Nasabah bisa tarik kapan saja
📊
Kurs Dinamis
Harga beli & jual tiap jenis barang dapat disesuaikan secara berkala
🔄
Koreksi
Transaksi salah bisa dikoreksi dengan sistem reversal tanpa menghapus data
🔒
Lock Periode
Periode laporan dapat dikunci untuk menjaga integritas data historis
📱
Akses Mobile
Nasabah cek buku tabungan via HP tanpa perlu install aplikasi

Logical ERD — Bank Sampah System

// 20 tables · cardinality: 1=one, N=many · 🆕 = newly added

profil
🔑keyPK
·value
jenis_barang
🔑idPK
·nama
·harga_per_kg
·is_active
users
🔑idPK
·username
·password_hash
·role
nasabah
🔑idPK
·nama
·no_hp
·token_hash
·is_active · limit_lock
kurs_nasabah
🔑idPK
🔗barang_idFK→jenis_barang
·harga
·tanggal_berlaku
mutasi_saldo_nasabah
🔑idPK
🔗nasabah_idFK→nasabah
·tipe · debit · kredit
·saldo_akhir
🔗referensi_idFK→transaksi/withdraw
withdraw_nasabah
🔑idPK
🔗nasabah_idFK→nasabah
·jumlah · metode
pelapak
🔑idPK
·nama · no_hp
·is_active
kurs_pelapak
🔑idPK
🔗pelapak_idFK→pelapak
🔗barang_idFK→jenis_barang
·harga · tanggal_berlaku
kurs_pelapak_custom 🆕
🔑idPK
🔗pelapak_idFK→pelapak
·nama_barang · harga
·is_active · created_at
transaksi_pelapak
🔑idPK
🔗pelapak_idFK→pelapak
🔗barang_idFK→jenis_barang
·berat · harga · total
koreksi_transaksi_pelapak 🆕
🔑idPK
🔗transaksi_id_asliFK→transaksi_pelapak
🔗transaksi_id_reversalFK→transaksi_pelapak
·alasan
buku_kas_pelapak 🆕
🔑idPK
🔗referensiFK→transaksi_pelapak
·debit · kredit · saldo_akhir
transaksi_nasabah
🔑idPK
🔗nasabah_idFK→nasabah
🔗barang_idFK→jenis_barang
·berat · harga · total
·is_locked · receipt_sent
koreksi_transaksi
🔑idPK
🔗transaksi_id_asliFK→transaksi_nasabah
🔗transaksi_id_reversalFK→transaksi_nasabah
·alasan
buku_kas
🔑idPK
·tipe · debit · kredit
·saldo_akhir
periode_laporan
🔑idPK
·nama_periode
·tanggal_mulai · selesai
🔗locked_byFK→users
audit_log
🔑idPK
🔗user_idFK→users
·aksi · deskripsi
berita_update
🔑idPK
·judul · konten
·status

Cardinality Summary

GrupTabel ARelasiTabel BKeterangan
Nasabahnasabah1 → Ntransaksi_nasabahSatu nasabah banyak transaksi
Nasabahnasabah1 → Nmutasi_saldo_nasabahSatu nasabah banyak mutasi saldo
Nasabahnasabah1 → Nwithdraw_nasabahSatu nasabah banyak penarikan
Masterjenis_barang1 → Ntransaksi_nasabahSatu barang banyak transaksi nasabah
Masterjenis_barang1 → Nkurs_nasabahSatu barang punya riwayat kurs nasabah
Masterjenis_barang1 → Nkurs_pelapakSatu barang punya riwayat kurs pelapak
Pelapakpelapak1 → Ntransaksi_pelapakSatu pelapak banyak transaksi
Pelapakpelapak1 → Nkurs_pelapakSatu pelapak punya riwayat kurs
Transaksitransaksi_nasabah1 → 1koreksi_transaksiSatu transaksi maksimal satu koreksi
Pelapakpelapak1 → Nkurs_pelapak_custom🆕 Kurs khusus per pelapak (override global)
Pelapaktransaksi_pelapak1 → 1koreksi_transaksi_pelapak🆕 Sama seperti koreksi nasabah
Pelapaktransaksi_pelapak1 → Nbuku_kas_pelapak🆕 Jejak kas dari transaksi pelapak
Systemusers1 → Naudit_logSetiap aksi user tercatat di audit
Keuanganusers1 → Nperiode_laporanUser yang mengunci periode laporan

🏗️ High-Level Architecture

// Bank Sampah BSR · Google Apps Script Platform

👥 Client Layer — Pengguna
👤
Nasabah (Publik)
Akses via browser HP, tanpa login
cek saldoberitaflyerdokumentasitoken auth
🔐
Admin / Operator
Login dengan username & password
sessionrole-based
📱
Any Browser
Mobile-first responsive web app
iOSAndroidDesktop
HTTPS · google.script.run
🖥️ Presentation Layer — HTML Service
🌿
Public Pages
Home · CekSaldo · BeritaUpdate · AboutUs · PrivacyPolicy
no authtoken verifyDrive images
🔑
Auth Pages
login.html · session management
SHA256 hash
⚙️
Admin Pages
Dashboard · POSNasabah · POSPelapak · Nasabah · Pelapak · Kurs · Laporan · LockPeriode
session guard
🎨
Shared Style
Style.html — single CSS source
mobile-firstgreen theme
doGet() routing · render()
⚙️ Service Layer — Google Apps Script (.gs)
🔐
AuthService
login · logout · session · requireAdmin
👥
NasabahService
CRUD nasabah · token · cekSaldo · validateToken
💰
SaldoService
getSaldo · getRiwayat · mutasi
🏪
PelapakService
CRUD pelapak · getKursPelapakById · setKursPelapakById · transaksi pelapak · history
⚖️
TransaksiService
createTransaksi · koreksi · lock
📊
LaporanService
periode · buku_kas · summary
📝
AuditService
logAudit · trail setiap aksi
📰
BeritaUpdateService
getKursPublik · getLaporanTerbaru · getDriveImageMeta · getImageById
⚙️
Config / Routing
doGet · render · CLIENT_CONFIG · include
SpreadsheetApp API
🗄️ Data Layer — Google Sheets (20 Tables)
📦
Master
profil · users · jenis_barang · setting_sistem
👥
Nasabah
nasabah · kurs_nasabah · mutasi_saldo_nasabah · withdraw_nasabah
🏪
Pelapak
pelapak · kurs_pelapak · kurs_pelapak_custom · transaksi_pelapak · koreksi_transaksi_pelapak · buku_kas_pelapak
⚖️
Transaksi
transaksi_nasabah · koreksi_transaksi
📊
Keuangan
buku_kas · periode_laporan
⚙️
System
audit_log · berita_update
Google Infrastructure
☁️ Infrastructure Layer — Google Cloud
📜
Apps Script Runtime
V8 JS engine · serverless · auto-scaling
6min exec limit
📊
Google Sheets
Persistent storage · real-time · shareable
SpreadsheetApp
🖼️
Google Drive
Logo & asset storage · base64 serve
DriveApp
🔒
PropertiesService
Session storage per user · secure
getUserProperties