Skip to content

kaizeenn/organization-financial

Repository files navigation

Organization Financial Management System

Aplikasi manajemen keuangan berbasis web untuk organisasi dengan fitur kas, iuran anggota, anggaran kegiatan, dan transparansi keuangan.

πŸš€ Fitur Utama

1. Manajemen Kas Organisasi

  • Multiple akun kas (Tunai, Bank, E-Wallet)
  • Track saldo real-time
  • Histori transaksi lengkap

2. Iuran & Pembayaran Anggota

  • Jenis iuran (wajib/sukarela, bulanan/sekali)
  • Upload bukti pembayaran
  • Sistem verifikasi bendahara
  • Status: pending/lunas/ditolak

3. Anggaran & Kegiatan

  • Perencanaan anggaran per kegiatan
  • Track realisasi pengeluaran
  • Alert over-budget
  • Progress monitoring

4. Pengeluaran Organisasi

  • Harus terkait kegiatan
  • Approval system
  • Upload bukti transaksi
  • Audit trail lengkap

5. Transparansi

  • Dashboard berbeda untuk setiap role
  • Anggota bisa lihat laporan (read-only)
  • Audit log semua transaksi

πŸ‘₯ Role & Permission

Role Akses
Super Admin Full access, manajemen user & settings
Bendahara Kelola kas, verifikasi iuran, approve pengeluaran
Pengurus Buat pengeluaran, lihat laporan
Anggota Upload iuran, lihat status, read-only laporan

πŸ› οΈ Tech Stack

  • Backend: Node.js + Express.js
  • Database: MySQL
  • View Engine: EJS
  • CSS Framework: Tailwind CSS
  • Authentication: Session-based (express-session)
  • File Upload: Multer
  • Security: Bcrypt password hashing

πŸ“¦ Struktur Project

organization-financial/
β”œβ”€β”€ config/
β”‚   β”œβ”€β”€ config.js          # Konfigurasi environment
β”‚   β”œβ”€β”€ db.js              # Database connection pool
β”‚   └── upload.js          # Multer upload config
β”œβ”€β”€ controllers/           # (Future: Controller logic)
β”œβ”€β”€ middleware/
β”‚   β”œβ”€β”€ auth.js            # Authentication middleware
β”‚   β”œβ”€β”€ role.js            # Role-based access control
β”‚   └── validate.js        # Request validation
β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ auth.js            # Login/logout
β”‚   β”œβ”€β”€ dashboard.js       # Dashboard routes
β”‚   β”œβ”€β”€ kas.js             # Kas management
β”‚   β”œβ”€β”€ iuran.js           # Iuran & payments
β”‚   β”œβ”€β”€ activities.js      # Kegiatan & anggaran
β”‚   └── expenses.js        # Pengeluaran
β”œβ”€β”€ views/
β”‚   β”œβ”€β”€ layout/            # Main & auth layouts
β”‚   β”œβ”€β”€ partials/          # Reusable components (sidebar)
β”‚   β”œβ”€β”€ auth/              # Login & register
β”‚   β”œβ”€β”€ dashboard/         # Dashboard views
β”‚   β”œβ”€β”€ kas/               # Kas management views
β”‚   β”œβ”€β”€ iuran/             # Iuran views
β”‚   β”œβ”€β”€ activities/        # Activities views
β”‚   └── expenses/          # Expenses views
β”œβ”€β”€ lib/
β”‚   └── helpers.js         # Helper functions
β”œβ”€β”€ sql/
β”‚   β”œβ”€β”€ organization_financial.sql  # Database structure
β”‚   └── seeder.sql                  # Demo data
└── public/
    β”œβ”€β”€ uploads/           # Uploaded files
    └── stylesheets/       # CSS files

πŸš€ Getting Started

Prerequisites

  • Node.js (v16+)
  • MySQL (v8+)
  • npm atau yarn

Installation

  1. Clone repository
cd organization-financial
  1. Install dependencies
npm install
  1. Setup database
-- Create database
CREATE DATABASE organization_financial;

-- Import structure
mysql -u root -p organization_financial < sql/organization_financial.sql

-- Import demo data
mysql -u root -p organization_financial < sql/seeder.sql
  1. Configure environment
cp .env.example .env

Edit .env file:

DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=organization_financial

SESSION_SECRET=your-secret-key
PORT=3001
  1. Build Tailwind CSS
npm run tailwind
  1. Run application
# Development
npm run dev

# Production
npm start
  1. Access application
http://localhost:3001

πŸ” Demo Accounts

Role Email Password
Super Admin admin@org.com password123
Bendahara bendahara@org.com password123
Pengurus pengurus@org.com password123
Anggota anggota@org.com password123

πŸ“± Fitur Per Role

Super Admin Dashboard

  • Overview total kas
  • Pending iuran & approvals
  • Chart kas masuk vs keluar
  • Manajemen user
  • Settings

Bendahara Dashboard

  • Total kas organisasi (semua akun)
  • List iuran pending (hitung & jumlah)
  • Pengeluaran bulan ini
  • Chart 6 bulan terakhir
  • Verifikasi iuran
  • Approve pengeluaran

Anggota Dashboard

  • Status iuran pribadi (lunas/pending)
  • Total bayar & tunggakan
  • Riwayat pembayaran
  • Kegiatan yang sedang berjalan
  • Notifikasi

πŸ—ƒοΈ Database Schema

Tables

  • users - Data user & role
  • kas_accounts - Akun kas organisasi
  • iuran_types - Jenis iuran
  • iuran_payments - Pembayaran iuran
  • activities - Kegiatan & anggaran
  • expense_categories - Kategori pengeluaran
  • expenses - Pengeluaran organisasi
  • kas_transactions - Transaksi kas (audit trail)
  • audit_logs - Log aktivitas user

🎨 Reuse dari Financial-App

Aplikasi ini menggunakan komponen UI yang sama dengan financial-app:

  • βœ… Tailwind config & utility classes
  • βœ… Layout structure (sidebar, main content)
  • βœ… Color scheme & branding
  • βœ… Component styles (cards, badges, buttons)
  • βœ… Responsive design patterns

PERBEDAAN: Logic keuangan 100% berbeda - fokus organisasi bukan personal.

πŸ”’ Security Features

  • βœ… Password hashing (bcrypt)
  • βœ… Session-based authentication
  • βœ… Role-based access control
  • βœ… CSRF protection ready
  • βœ… Input validation
  • βœ… Audit logging
  • βœ… No hard delete (soft delete via status)

πŸ“Š Key Business Rules

  1. Kas: Saldo auto-update saat transaksi approved
  2. Iuran: Butuh verifikasi bendahara sebelum masuk kas
  3. Pengeluaran: Harus linked ke kegiatan, tidak boleh over-budget
  4. Approval: Hanya bendahara/super_admin yang bisa approve
  5. Transparansi: Anggota read-only, tidak bisa edit transaksi

🚧 Future Development

  • Multi-organisasi (tenant-based)
  • Multi-periode akuntansi
  • Export laporan PDF & Excel
  • Notifikasi email/WhatsApp
  • API untuk mobile app
  • Dashboard analytics advanced
  • Budgeting & forecasting

πŸ“ Scripts

# Development dengan auto-reload
npm run dev

# Build Tailwind (watch mode)
npm run tailwind

# Production
npm start

πŸ› Troubleshooting

Database connection error

  • Pastikan MySQL running
  • Cek credentials di .env
  • Pastikan database sudah dibuat

Tailwind tidak ter-compile

npm run tailwind

Session error

  • Pastikan SESSION_SECRET sudah diset di .env
  • Clear browser cookies

πŸ‘¨β€πŸ’» Development Notes

Menambah Route Baru

  1. Buat file di routes/
  2. Import di app.js
  3. Tambahkan middleware auth & role

Menambah Fitur Baru

  1. Update database schema di sql/
  2. Buat route & view
  3. Update sidebar navigation
  4. Tambahkan audit log

πŸ“„ License

MIT License - Free for personal and commercial use

🀝 Contributing

Contributions welcome! Silakan buat PR atau issue.


Built with ❀️ for better organization financial management

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors