Skip to content

kaizeenn/financial-app

Repository files navigation

πŸ’° Financial App

Aplikasi manajemen keuangan pribadi lengkap dengan fitur transaksi, investasi crypto & emas, hutang piutang, dan rekening bank.

Node.js Express MySQL Tailwind CSS

πŸ“Έ Screenshot

Dashboard Transactions Investments Admin Panel

✨ Fitur Utama

πŸ“Š Dashboard & Transaksi

  • 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)

πŸ’Ό Investasi (Crypto & Emas)

  • 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

🏦 Rekening & Hutang Piutang

  • Multi Akun - Kelola berbagai rekening bank (saldo, mutasi)
  • Hutang & Piutang - Tracking pembayaran dengan status dan kategori
  • Pembayaran Cicilan - Catat pembayaran parsial dengan riwayat

πŸ‘¨β€πŸ’Ό Admin Panel

  • 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

πŸ› οΈ Teknologi

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

πŸ“‹ Persyaratan Sistem

  • Node.js >= 16.x
  • MySQL >= 8.0
  • npm >= 8.x

πŸš€ Instalasi & Setup

1. Clone Repository

git clone https://github.com/kaizeenn/financial-app.git
cd financial-app

2. Install Dependencies

npm install

3. Setup Database

-- Buat database
CREATE DATABASE catatan;

-- Import schema dari file sql/catatan.sql
mysql -u root -p catatan < sql/catatan.sql

4. Konfigurasi Environment

cp .env.example .env

Copy .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_here

5. Build CSS (Development)

npm run build:css
# atau watch mode:
npm run watch:css

6. Jalankan Aplikasi

npm start
# atau development mode:
npm run dev

Aplikasi berjalan di: http://localhost:3000

πŸ”‘ Default Login

Catatan: akun berikut hanya untuk development/testing lokal.

Admin:

  • Username: atmin
  • Password: atmin123

User:

  • Username: iril
  • Password: iril123

πŸ“ Struktur Folder

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

πŸ”§ Migrasi Database

Jika upgrade dari GoldAPI ke MetalPriceAPI:

node scripts/migrate_gold_to_metal.js

πŸ“Š Fitur API

Endpoint Harga Investasi

GET /invest/get-price?asset_id=<ID>

Response:

{
  "usd": 2024.50,
  "idr": 31025000,
  "rate": 0.0004941
}

Admin Gold Cache

GET /admin/gold-cache        # View cache
POST /admin/gold-cache/refresh  # Force refresh

🎨 Customization

Tambah Provider Investasi

Edit services/investmentPriceService.js:

case 'new_provider':
  return await getNewProviderPrice();

Ubah Tema

Edit tailwind.config.cjs untuk custom color palette.

🀝 Kontribusi

Pull requests are welcome! Untuk perubahan besar, harap buka issue terlebih dahulu.

πŸ“ License

MIT

πŸ‘€ Author

Kaizen

πŸ™ Acknowledgments

  • CoinGecko API untuk data crypto
  • MetalPriceAPI untuk harga emas
  • Chart.js untuk visualisasi data
  • Tailwind CSS untuk styling

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors