Tracker tabungan pribadi untuk mencatat pemasukan, pengeluaran, dan progress menuju wishlist impian.
Target: Rp8.100.000 • Rencana nabung: Rp500.000/bulan • Mode: Local / Cloud Sync
DJI Pocket Savings Tracker adalah website sederhana untuk memantau progress tabungan menuju target tertentu. Awalnya dibuat untuk target membeli DJI Pocket, tapi bisa juga dipakai untuk wishlist lain seperti kamera, laptop, HP, sepeda, atau kebutuhan pribadi.
Website ini dibuat menggunakan HTML, CSS, dan JavaScript murni, jadi bisa langsung di-host di GitHub Pages tanpa backend tambahan.
Untuk penyimpanan data, project ini mendukung dua mode:
- Mode lokal menggunakan
localStorage - Mode cloud menggunakan Supabase RPC +
vaultKey
- Catat pemasukan dan pengeluaran
- Total tabungan otomatis dihitung
- Progress bar menuju target
- Estimasi waktu selesai berdasarkan nominal tabungan bulanan
- Ringkasan pemasukan dan pengeluaran per bulan
- Format nominal otomatis ke Rupiah
Contoh:
1000000menjadiRp1.000.000 - Kategori transaksi harian
- Export data ke JSON
- Import data dari JSON
- Cloud sync tanpa login email menggunakan Supabase
- Tampilan dark glassmorphism
- Responsive untuk desktop dan mobile
Kategori bisa diubah langsung dari file script.js.
Contoh kategori harian yang disarankan:
const categoryOptions = [
"Uang Bulanan",
"Tabungan",
"Makan & Jajan",
"Transportasi",
"Kebutuhan Sekolah",
"Pulsa & Internet",
"Topup e-Wallet",
"Hiburan",
"Kesehatan",
"Skincare",
"Tarik Tunai",
"Lainnya"
];.
├── index.html
├── style.css
├── script.js
├── database.sql
└── README.md| File | Fungsi |
|---|---|
index.html |
Struktur halaman website |
style.css |
Tampilan, animasi, responsive layout |
script.js |
Logic transaksi, format Rupiah, Supabase, export/import |
database.sql |
Schema dan function Supabase |
README.md |
Dokumentasi project |
Clone repository:
git clone https://github.com/takashivin/tabungan.git
cd tabunganLalu buka file:
index.htmlAtau jalankan local server sederhana:
python -m http.server 3000Buka di browser:
http://localhost:3000-
Upload semua file ke repository GitHub.
-
Masuk ke Settings repository.
-
Buka menu Pages.
-
Pada bagian Build and deployment, pilih:
- Source:
Deploy from a branch - Branch:
main - Folder:
/root
- Source:
-
Klik Save.
-
Website akan aktif di link seperti ini:
https://USERNAME.github.io/NAMA_REPOSITORY/Project ini bisa berjalan tanpa login email.
Cloud sync dilakukan menggunakan Supabase RPC dan vaultKey.
Buka Supabase, lalu buat project baru.
Setelah project selesai dibuat, ambil:
- Project URL
- Publishable anon key
Buka:
Supabase Dashboard > SQL EditorLalu copy isi file:
database.sqlKlik Run.
Jika berhasil, data akan disimpan di tabel:
savings_transactionsBuka file script.js, lalu ubah bagian ini:
const CONFIG = {
targetAmount: 8100000,
monthlySaving: 500000,
supabaseUrl: "https://PROJECT_KAMU.supabase.co",
supabaseAnonKey: "sb_publishable_...",
vaultKey: "kode-rahasia-panjang-kamu"
};Keterangan:
| Config | Fungsi |
|---|---|
targetAmount |
Target tabungan |
monthlySaving |
Rencana tabungan per bulan |
supabaseUrl |
URL project Supabase |
supabaseAnonKey |
Publishable key dari Supabase |
vaultKey |
Kode vault agar data antar device sama |
Gunakan vaultKey yang sama di semua device supaya datanya tersinkron.
Jika config Supabase belum diisi, website otomatis berjalan dalam mode lokal.
Data disimpan di browser menggunakan:
localStorageKelebihan:
- Tidak perlu Supabase
- Bisa langsung dipakai
- Cocok untuk testing
Kekurangan:
- Data hanya ada di browser tersebut
- Kalau cache/browser dihapus, data bisa hilang
Jika config Supabase sudah benar, website otomatis masuk ke mode cloud.
Kelebihan:
- Data bisa sama di beberapa device
- Cocok untuk dipakai jangka panjang
- Bisa backup dari Supabase
Kekurangan:
- Perlu setup Supabase
vaultKeydi frontend bisa dilihat jika repository/site publik
Gunakan tombol:
Export JSONData akan diunduh sebagai file .json.
Gunakan tombol:
Import JSONPilih file backup JSON yang sebelumnya sudah diexport.
Fitur ini berguna untuk:
- Backup manual
- Pindah device
- Restore data jika browser terhapus
- Migrasi dari mode lokal ke cloud
Project ini dibuat agar simpel dan mudah dipakai.
Karena menggunakan GitHub Pages, semua file frontend seperti script.js bisa dilihat oleh orang lain jika repository atau website bersifat publik.
Artinya:
supabaseUrlboleh ada di frontendsupabaseAnonKeymemang publishablevaultKeyjangan dianggap benar-benar rahasia jika ditaruh di frontend
Jangan gunakan mode ini untuk data yang sangat sensitif.
Untuk keamanan yang lebih kuat, gunakan sistem login seperti:
- Supabase Auth
- Email login
- OAuth
- Backend server sendiri
Kamu bisa mengubah target dan nominal tabungan bulanan di script.js.
Contoh:
const CONFIG = {
targetAmount: 10000000,
monthlySaving: 500000,
supabaseUrl: "https://PROJECT_KAMU.supabase.co",
supabaseAnonKey: "sb_publishable_...",
vaultKey: "kode-rahasia-panjang-kamu"
};Contoh target lain:
| Target | Nominal |
|---|---|
| Kamera | Rp8.100.000 |
| Laptop | Rp10.000.000 |
| HP | Rp5.000.000 |
| Tabungan umum | Bebas |
- HTML
- CSS
- JavaScript
- Supabase
- GitHub Pages
- Font Awesome
- Google Fonts
Beberapa ide fitur tambahan:
- Edit transaksi
- Filter berdasarkan kategori
- Grafik pengeluaran
- Multi target tabungan
- PIN atau password vault
- Dark/light mode
- Export laporan bulanan
- Dashboard statistik tahunan
Project ini bebas dipakai untuk belajar, personal finance, dan portofolio.
Jika ingin memakai ulang, jangan lupa kasih credit ya.
Dibuat untuk bantu nabung pelan-pelan sampai wishlist kebeli. :D
