Sistem manajemen keuangan UMKM berbasis web yang membantu pelaku usaha kecil mengelola keuangan bisnis dengan lebih terstruktur dan efisien.
Hasan Management System adalah aplikasi manajemen keuangan berbasis web yang dirancang khusus untuk pelaku Usaha Mikro, Kecil, dan Menengah (UMKM). Pengguna dapat mencatat transaksi pemasukan dan pengeluaran dengan upload bukti, menyusun anggaran bulanan per kategori, memantau realisasi anggaran dengan progress bar real-time, dan menghasilkan laporan keuangan komprehensif yang dapat diekspor ke format PDF dan Excel untuk analisis lebih lanjut.
- Register akun dengan data UMKM lengkap (nama, alamat, telepon)
- Login dengan email & password
- Session management
- Logout
- Statistik keuangan bulan berjalan (pemasukan, pengeluaran, saldo)
- Grafik ringkasan dalam bentuk info box berwarna
- Daftar 5 transaksi terbaru
- Status anggaran aktif bulan ini
- Quick actions: Tambah Transaksi & Lihat Laporan
- Tambah, edit, dan hapus kategori transaksi
- Pemisahan kategori pemasukan dan pengeluaran
- Tampilan side-by-side untuk kemudahan monitoring
- Validasi kategori yang sudah digunakan
- Buat anggaran bulanan dengan nama dan periode
- Anggaran per kategori (detail untuk setiap jenis transaksi)
- Anggaran total keseluruhan (pemasukan & pengeluaran)
- Status anggaran: Aktif/Nonaktif
- Edit dan hapus anggaran
- Monitoring Realisasi: Progress bar menampilkan persentase realisasi vs anggaran
- Indikator warna (hijau: normal, kuning: mendekati batas, merah: over budget)
- Input transaksi pemasukan & pengeluaran dengan form yang intuitif
- Upload bukti transaksi (foto nota/transfer dalam format JPG, PNG, PDF max 2MB)
- Keterangan detail untuk setiap transaksi
- Pilih kategori otomatis terfilter berdasarkan jenis transaksi
- Edit dan hapus transaksi
- Filter transaksi berdasarkan:
- Jenis (pemasukan/pengeluaran)
- Kategori
- Periode tanggal (dari-sampai)
- Pagination untuk performa optimal
- View detail transaksi dengan bukti yang dapat dibuka di tab baru
- Generate laporan per periode custom (pilih tanggal mulai & akhir)
- Ringkasan: Total pemasukan, pengeluaran, dan saldo
- Laporan per kategori: Detail pemasukan, pengeluaran, dan selisih per kategori
- Detail transaksi: Semua transaksi dalam periode terpilih
- Export PDF: Format profesional untuk print atau arsip
- Export Excel: Format spreadsheet untuk analisis lebih lanjut
- Tampilan responsif dan mudah dibaca
| Teknologi | Versi | Fungsi |
|---|---|---|
| Laravel | 12.x | PHP Framework |
| PHP | 8.3 | Backend Language |
| MySQL | 8.0 | Database |
| AdminLTE | 3.2 | Admin Template |
| Bootstrap | 4.6 | CSS Framework |
| jQuery | 3.6 | JavaScript Library |
| Font Awesome | 6.4 | Icon Library |
| DomPDF | Latest | PDF Export |
| Laravel Excel | Latest | Excel Export |
| Laravel UI | Latest | Authentication Scaffolding |
Pastikan sistem Anda sudah terinstall:
- PHP >= 8.2
- Composer
- MySQL/MariaDB
- Node.js & NPM
- Laragon (recommended) atau XAMPP/WAMP
git clone https://github.com/hasanfadh/HasanManagement.git
cd HasanManagement# Install PHP dependencies
composer install
# Install JavaScript dependencies
npm install# Copy file .env
cp .env.example .env
# Generate application key
php artisan key:generateEdit file .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=hasan_management
DB_USERNAME=root
DB_PASSWORD=Buat database baru dengan nama hasan_management menggunakan:
- phpMyAdmin, atau
- MySQL Workbench, atau
- Command line:
mysql -u root -p
CREATE DATABASE hasan_management;
EXIT;php artisan migratephp artisan storage:link# Development
npm run dev
# Production
npm run buildphp artisan db:seedCredentials setelah seeding:
- Email:
tes@umkm.com - Password:
12345678
php artisan serveBuka browser dan akses: http://127.0.0.1:8000
users (1) ----< (N) kategori
users (1) ----< (N) anggaran
users (1) ----< (N) transaksi
anggaran (1) ----< (N) detail_anggaran
kategori (1) ----< (N) detail_anggaran
kategori (1) ----< (N) transaksi
| Field | Type | Description |
|---|---|---|
| id | BIGINT | Primary Key |
| name | VARCHAR(255) | Nama pemilik UMKM |
| VARCHAR(255) | Email (unique) | |
| password | VARCHAR(255) | Password (hashed) |
| nama_umkm | VARCHAR(255) | Nama UMKM |
| alamat_umkm | TEXT | Alamat UMKM |
| telepon | VARCHAR(20) | Nomor telepon |
| created_at | TIMESTAMP | Waktu dibuat |
| updated_at | TIMESTAMP | Waktu diupdate |
| Field | Type | Description |
|---|---|---|
| id | BIGINT | Primary Key |
| user_id | BIGINT | Foreign Key → users |
| nama_kategori | VARCHAR(255) | Nama kategori |
| jenis | ENUM | 'pemasukan', 'pengeluaran' |
| created_at | TIMESTAMP | Waktu dibuat |
| updated_at | TIMESTAMP | Waktu diupdate |
| Field | Type | Description |
|---|---|---|
| id | BIGINT | Primary Key |
| user_id | BIGINT | Foreign Key → users |
| nama_anggaran | VARCHAR(255) | Nama anggaran |
| bulan | DATE | Bulan & tahun anggaran |
| status | ENUM | 'aktif', 'nonaktif' |
| created_at | TIMESTAMP | Waktu dibuat |
| updated_at | TIMESTAMP | Waktu diupdate |
| Field | Type | Description |
|---|---|---|
| id | BIGINT | Primary Key |
| anggaran_id | BIGINT | Foreign Key → anggaran |
| kategori_id | BIGINT | Foreign Key → kategori (nullable) |
| jenis | ENUM | 'pemasukan', 'pengeluaran' |
| jumlah | DECIMAL(15,2) | Jumlah anggaran |
| keterangan | VARCHAR(255) | Keterangan (nullable) |
| created_at | TIMESTAMP | Waktu dibuat |
| updated_at | TIMESTAMP | Waktu diupdate |
| Field | Type | Description |
|---|---|---|
| id | BIGINT | Primary Key |
| user_id | BIGINT | Foreign Key → users |
| kategori_id | BIGINT | Foreign Key → kategori (nullable) |
| jenis | ENUM | 'pemasukan', 'pengeluaran' |
| tanggal | DATE | Tanggal transaksi |
| jumlah | DECIMAL(15,2) | Jumlah transaksi |
| keterangan | TEXT | Keterangan (nullable) |
| bukti | VARCHAR(255) | Path file bukti (nullable) |
| created_at | TIMESTAMP | Waktu dibuat |
| updated_at | TIMESTAMP | Waktu diupdate |
HasanManagement/
├── app/
│ ├── Http/
│ │ └── Controllers/
│ │ ├── Auth/
│ │ │ └── RegisterController.php
│ │ ├── DashboardController.php
│ │ ├── KategoriController.php
│ │ ├── AnggaranController.php
│ │ ├── TransaksiController.php
│ │ └── LaporanController.php
│ ├── Models/
│ │ ├── User.php
│ │ ├── Kategori.php
│ │ ├── Anggaran.php
│ │ ├── DetailAnggaran.php
│ │ └── Transaksi.php
│ └── Exports/
│ └── LaporanExport.php
├── database/
│ ├── migrations/
│ │ ├── xxxx_add_umkm_fields_to_users_table.php
│ │ ├── xxxx_create_kategori_table.php
│ │ ├── xxxx_create_anggaran_table.php
│ │ ├── xxxx_create_detail_anggaran_table.php
│ │ └── xxxx_create_transaksi_table.php
│ └── seeders/
│ ├── DatabaseSeeder.php
│ └── UserSeeder.php
├── public/
│ └── storage/
│ └── bukti_transaksi/
├── resources/
│ └── views/
│ ├── layouts/
│ │ ├── app.blade.php
│ │ └── guest.blade.php
│ ├── auth/
│ │ ├── login.blade.php
│ │ └── register.blade.php
│ ├── dashboard.blade.php
│ ├── kategori/
│ │ ├── index.blade.php
│ │ ├── create.blade.php
│ │ └── edit.blade.php
│ ├── anggaran/
│ │ ├── index.blade.php
│ │ ├── create.blade.php
│ │ ├── edit.blade.php
│ │ └── show.blade.php
│ ├── transaksi/
│ │ ├── index.blade.php
│ │ ├── create.blade.php
│ │ ├── edit.blade.php
│ │ └── show.blade.php
│ └── laporan/
│ ├── index.blade.php
│ └── pdf.blade.php
├── routes/
│ └── web.php
├── .env
├── composer.json
├── package.json
└── README.md
- Akses aplikasi di
http://127.0.0.1:8000 - Klik "Belum punya akun? Daftar"
- Isi form registrasi lengkap
- Login dengan email & password
- Klik menu Kategori
- Tambahkan kategori pemasukan (contoh: Penjualan Produk, Jasa)
- Tambahkan kategori pengeluaran (contoh: Bahan Baku, Gaji, Operasional)
- Klik menu Anggaran → Buat Anggaran Baru
- Isi nama anggaran dan pilih bulan
- Set status: Aktif
- Isi anggaran per kategori atau total
- Simpan
- Klik menu Transaksi → Tambah Transaksi
- Pilih jenis (Pemasukan/Pengeluaran)
- Isi tanggal, kategori, jumlah
- Tambahkan keterangan detail
- Upload bukti transaksi (opsional)
- Simpan
- Klik menu Anggaran
- Klik Detail pada anggaran aktif
- Lihat progress bar realisasi vs anggaran
- Pantau kategori yang mendekati/melebihi budget
- Klik menu Laporan Keuangan
- Pilih periode (tanggal mulai & akhir)
- Klik Tampilkan
- Export ke PDF atau Excel sesuai kebutuhan
- Password di-hash menggunakan bcrypt
- Middleware authentication untuk proteksi route
- CSRF protection pada semua form
- Validasi input di server-side
- Authorization check untuk akses data user
- File upload validation (type & size)
- SQL Injection protection via Eloquent ORM
php artisan test- Dashboard dengan grafik/chart (Line, Bar, Pie)
- Notifikasi email untuk budget alert
- Laporan tahunan & perbandingan periode
- Hutang piutang management
- Inventory management
- Multi-user dengan role management (Owner, Staff, Admin)
- Mobile responsive improvement
- Push notification
- API untuk mobile app
- Multi-currency support
- Backup & restore database otomatis
- Print struk transaksi
- Forecasting & budget prediction
- Progress bar tidak update real-time (perlu refresh)
- Export Excel tidak support custom styling
- Upload file > 2MB gagal (perlu compress)
Report bugs: GitHub Issues
Kontribusi sangat diterima! Untuk berkontribusi:
- Fork repository ini
- Buat branch fitur baru
git checkout -b feature/AmazingFeature
- Commit perubahan
git commit -m 'Add some AmazingFeature' - Push ke branch
git push origin feature/AmazingFeature
- Buat Pull Request
- Follow PSR-12 coding standard
- Write clear comments in Bahasa Indonesia
- Create migration for database changes
- Update documentation for new features
Project ini menggunakan lisensi MIT License. Lihat file LICENSE untuk detail.
Dikembangkan dengan ❤️ oleh Hasan Fadhlurrahman
- Email: hasan.fadlurrahman@gmail.com
- Website: https://hasan-fadhlurrahman-portofolio.vercel.app/
- LinkedIn: LinkedIn
- GitHub: @hasanfadh
Need Help? Open an issue atau kirim email!
Terima kasih kepada:
- Laravel - The PHP Framework for Web Artisans
- AdminLTE - Free Admin Dashboard Template
- DomPDF - HTML to PDF converter
- Laravel Excel - Excel import/export package
- Font Awesome - Icon library
- Bootstrap - CSS framework
- Semua kontributor open source yang membuat project ini possible
Halaman dashboard yang menampilkan ringkasan pemasukan, pengeluaran, saldo, transaksi terbaru, dan anggaran bulan ini.
Halaman kategori yang berisi daftar kategori pemasukan dan pengeluaran lengkap dengan tombol edit dan hapus.
Halaman daftar anggaran yang menampilkan anggaran per bulan beserta status aktif atau nonaktif.
Halaman detail anggaran yang menunjukkan perbandingan anggaran dan realisasi untuk pemasukan dan pengeluaran.
Halaman transaksi yang menampilkan daftar transaksi lengkap dengan filter, tanggal, jenis, kategori, dan aksi.
Halaman laporan keuangan yang berisi ringkasan pemasukan, pengeluaran, saldo, serta rincian transaksi berdasarkan periode.
Tampilan cetak laporan keuangan lengkap berisi informasi pemilik, ringkasan kategori, dan tabel detail transaksi.
- Optimized database queries with Eloquent
- Pagination untuk large dataset
- Asset compression & minification
- Caching untuk query yang sering diakses
- Lazy loading untuk relationship
Jika project ini membantu Anda, berikan ⭐ di GitHub!
Made with ❤️ by Hasan Fadhlurrahman for Indonesian UMKM
Happy Coding! 🚀
Last Updated: December 2025