Aplikasi manajemen keuangan pribadi lengkap dengan fitur transaksi, investasi crypto & emas, hutang piutang, dan rekening bank.
- Dashboard Interaktif - Visualisasi keuangan dengan grafik dan ringkasan realtime
- Manajemen Transaksi - Catat pemasukan & pengeluaran dengan kategori
- Laporan Transaksi - Export ke Excel/PDF dengan filter tanggal
- Transaksi Berulang - Otomasi pencatatan transaksi rutin (bulanan/harian)
- Portofolio Investasi - Kelola aset crypto (Bitcoin, Ethereum, dll) dan emas
- Harga Realtime - Integrasi dengan CoinGecko API & MetalPriceAPI
- Multi Unit - Input dalam Coin/Gram/Troy Ounce dengan konversi otomatis
- Cache Harga Emas - Sistem caching 24 jam untuk efisiensi API
- Multi Akun - Kelola berbagai rekening bank (saldo, mutasi)
- Hutang & Piutang - Tracking pembayaran dengan status dan kategori
- Pembayaran Cicilan - Catat pembayaran parsial dengan riwayat
- Manajemen User - CRUD users dengan role (admin/user)
- Master Data - Kelola kategori, metode pembayaran, provider investasi
- Gold Cache Admin - Monitor dan refresh cache harga emas
Backend:
- Node.js + Express.js
- MySQL2 (Database)
- express-session (Authentication)
- bcryptjs (Password hashing)
- dotenv (Environment variables)
Frontend:
- EJS (Templating)
- Tailwind CSS (Styling)
- Chart.js (Visualisasi)
- Axios (HTTP client)
API Integrasi:
- CoinGecko API - Harga crypto realtime
- MetalPriceAPI - Harga emas (XAU/USD)
- ExchangeRate.host - Kurs USDβIDR
- Node.js >= 16.x
- MySQL >= 8.0
- npm >= 8.x
git clone https://github.com/kaizeenn/financial-app.git
cd financial-appnpm install-- Buat database
CREATE DATABASE catatan;
-- Import schema dari file sql/catatan.sql
mysql -u root -p catatan < sql/catatan.sqlcp .env.example .envCopy .env.example menjadi .env, lalu isi nilainya:
# Database
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=
DB_NAME=catatan
# API Keys
METALAPI_KEY=your_metalpriceapi_key_here
USD_IDR_RATE=15500
# Session (optional)
SESSION_SECRET=your_secret_key_herenpm run build:css
# atau watch mode:
npm run watch:cssnpm start
# atau development mode:
npm run devAplikasi berjalan di: http://localhost:3000
Catatan: akun berikut hanya untuk development/testing lokal.
Admin:
- Username:
atmin - Password:
atmin123
User:
- Username:
iril - Password:
iril123
financial-app/
βββ bin/
β βββ www # Entry point
βββ config/
β βββ db.js # Koneksi database
βββ controllers/ # Business logic
β βββ investmentController.js
β βββ ...
βββ middleware/ # Auth & role middleware
βββ routes/ # Route handlers
β βββ admin.js
β βββ investmentRoutes.js
β βββ ...
βββ services/ # External API services
β βββ investmentPriceService.js
βββ views/ # EJS templates
β βββ admin/
β βββ user/
β βββ layout/
β βββ partials/
βββ public/ # Static files
β βββ stylesheets/
β βββ images/
βββ scripts/ # Utility scripts
β βββ migrate_gold_to_metal.js
βββ sql/ # Database schema
βββ catatan.sql
Jika upgrade dari GoldAPI ke MetalPriceAPI:
node scripts/migrate_gold_to_metal.jsGET /invest/get-price?asset_id=<ID>Response:
{
"usd": 2024.50,
"idr": 31025000,
"rate": 0.0004941
}GET /admin/gold-cache # View cache
POST /admin/gold-cache/refresh # Force refreshEdit services/investmentPriceService.js:
case 'new_provider':
return await getNewProviderPrice();Edit tailwind.config.cjs untuk custom color palette.
Pull requests are welcome! Untuk perubahan besar, harap buka issue terlebih dahulu.
Kaizen
- GitHub: @kaizeenn
- CoinGecko API untuk data crypto
- MetalPriceAPI untuk harga emas
- Chart.js untuk visualisasi data
- Tailwind CSS untuk styling



