SIGAP adalah aplikasi desktop native berbasis Python yang menggunakan CustomTkinter untuk merancang sistem manajemen pengaduan fasilitas umum terpadu. Sistem ini menghubungkan Warga secara langsung dengan aparatur pemerintah (Kelurahan, Kecamatan, hingga Kota) secara berjenjang (eskalasi terstruktur).
Aplikasi ini mengusung arsitektur berbasis MVC (Model-View-Controller) mini yang terstruktur, aman dengan enkripsi password, serta dilengkapi visualisasi analitik interaktif untuk administrator kota.
- Eskalasi Laporan Berjenjang: Workflow pelaporan dinamis mulai dari Warga (
Menunggu) → diproses Kelurahan (Diproses Kelurahan/ Eskalasi) → diproses Kecamatan (Diproses Kecamatan/ Eskalasi) → diproses Kota (Diproses Kota) →SelesaiatauDitolak. - Klasifikasi Prioritas Otomatis: Secara cerdas menganalisis kata kunci (keywords) pada deskripsi laporan (seperti "ambruk", "banjir", "kebakaran" untuk Tinggi; "berlubang", "rusak", "bocor" untuk Sedang) saat dikirim oleh Warga untuk mempermudah prioritas penanganan.
- Laporan Anonim: Warga dapat memilih opsi kirim sebagai Anonim untuk menjaga privasi keamanan identitas mereka dari warga lain dan admin tingkat bawah. Namun, identitas asli tetap dapat diakses oleh Admin Kota untuk transparansi dan akuntabilitas.
- Sistem Dukungan (Upvote) Aspirasi: Warga dapat melihat laporan publik yang aktif di wilayah kelurahannya dan memberikan dukungan (upvote). Laporan dengan dukungan terbanyak akan naik ke daftar prioritas teratas.
- Lampiran Foto Ganda: Mendukung unggahan foto bukti kerusakan oleh Warga (
foto_laporan) dan unggahan foto hasil pekerjaan/penyelesaian oleh admin penanggung jawab (foto_selesai). - Sesi Inactivity Timeout: Fitur keamanan perbankan yang otomatis mengeluarkan pengguna jika tidak ada aktivitas mouse/keyboard selama 30 menit. Dilengkapi dialog peringatan countdown 60 detik sebelum otomatis logout.
- Dashboard Analitik Interaktif: Halaman Admin Kota dilengkapi dengan grafik analisis visual (Pie, Bar, dan Line Chart) menggunakan Matplotlib yang di-embed langsung ke dalam interface CustomTkinter.
- Dukungan Dual-Theme: Pergantian tema Light/Dark Mode yang mulus dan responsif di seluruh panel navigasi sidebar.
SIGAP/
├── assets/ # Aset gambar, logo, dan ikon aplikasi
├── config/ # Pengaturan aplikasi, database, dan daftar wilayah
│ ├── database.py # Wrapper koneksi MySQL
│ ├── settings.py # Konstanta global (kategori, prioritas keywords, tema)
│ └── wilayah.py # Data wilayah administratif (Kecamatan & Kelurahan)
├── controllers/ # Logic controller penanganan aksi
│ ├── auth_controller.py # Logika login, registrasi, dan ganti password
│ └── laporan_controller.py# Logika manipulasi laporan, upvote, dan histori
├── database/ # Skema dasar database & skrip migrasi
│ ├── setup_db.py # Skrip inisialisasi & seeder akun
│ ├── migrate_v1_1.py # Migrasi fitur pendukung & prioritas
│ └── migrate_v1_2_foto.py # Migrasi fitur lampiran foto
├── models/ # Data Access Object (DAO) query database
│ ├── user_model.py # Query manipulasi data user & otentikasi
│ └── laporan_model.py # Query manipulasi data laporan & grafik analitik
├── packaging/ # Konfigurasi build pyinstaller & installer compiler
│ ├── sigap_warga.spec # Build spec Warga (tanpa matplotlib, ukuran lebih kecil)
│ ├── sigap_admin.spec # Build spec Admin (dengan matplotlib & numpy)
│ ├── installer_warga.iss # Inno Setup Script untuk installer Warga (.exe)
│ └── installer_admin.iss # Inno Setup Script untuk installer Admin (.exe)
├── utils/ # Fungsi pembantu dan helper grafik
│ ├── chart_helper.py # Pembungkus canvas matplotlib untuk Tkinter
│ └── helpers.py # Format tanggal, pembersih input, dll.
├── views/ # Interface pengguna (CustomTkinter UI)
│ ├── auth/ # Halaman Login & Registrasi
│ ├── components/ # Komponen UI reusable (sidebar, data table, dialog, dll.)
│ ├── warga/ # Dashboard tracking & form pengaduan Warga
│ ├── admin_kelurahan/ # Dashboard validasi awal kelurahan
│ ├── admin_kecamatan/ # Dashboard koordinasi & eskalasi kecamatan
│ └── admin_kota/ # Dashboard master analitik kota
├── requirements.txt # Daftar pustaka / dependensi Python
├── main.py # Entry point utama aplikasi
└── README.md # Dokumentasi proyek
- Bahasa Pemrograman: Python 3.10+
- UI Framework: CustomTkinter (v5.2.0+)
- Mesin Database: MySQL (direkomendasikan via Laragon / XAMPP)
- Driver Konektor:
mysql-connector-python - Kriptografi:
bcrypt(untuk hashing password aman) - Visualisasi Data:
matplotlib(khusus dashboard Admin Kota) - Manipulasi Gambar:
Pillow(PIL) - Alat Kompilasi:
PyInstaller&Inno Setup Compiler
git clone <repository-url>
cd SIGAPPastikan virtual environment telah aktif, kemudian jalankan:
pip install -r requirements.txt- Pastikan layanan server MySQL Anda (Laragon/XAMPP) sudah dalam keadaan berjalan (Running).
- Sesuaikan konfigurasi database Anda di settings.py jika diperlukan (misalnya host, port, user, password).
- Jalankan skrip setup database untuk membuat skema secara otomatis beserta seeding awal data admin:
python database/setup_db.pySetelah database terbuat dan siap, jalankan aplikasi menggunakan perintah berikut:
python main.pySetelah menjalankan setup_db.py, sistem akan membuat beberapa akun admin default dengan password bawaan admin123:
| Nama Akun / Wilayah | Username / Email | Role |
|---|---|---|
| Warga Demo (Dapat mendaftar sendiri) | (Gunakan menu Register) | Warga |
| Admin Kelurahan Wenang Utara | admin.wenangutara@sigap.id |
admin_kelurahan |
| Admin Kelurahan Sario | admin.sario@sigap.id |
admin_kelurahan |
| Admin Kecamatan Wenang | admin.kec.wenang@sigap.id |
admin_kecamatan |
| Admin Kecamatan Sario | admin.kec.sario@sigap.id |
admin_kecamatan |
| Admin Kota Manado | admin.kota@sigap.id |
admin_kota |
Proyek ini telah dikonfigurasi untuk memisahkan build aplikasi client (Warga) dengan build admin untuk mereduksi ukuran file distribusi secara signifikan:
Jalankan perintah berikut di terminal root proyek:
- Build Executable Admin (Menyertakan visualisasi grafik):
pyinstaller packaging/sigap_admin.spec
- Build Executable Warga (Mengecualikan
matplotlibdannumpydemi menghemat ukuran file):pyinstaller packaging/sigap_warga.spec
Hasil build executable mandiri akan terbentuk di dalam direktori dist/SIGAP_Admin dan dist/SIGAP_Warga.
Gunakan aplikasi Inno Setup Compiler di Windows untuk membuka file skrip konfigurasi berikut dan klik menu Compile:
packaging/installer_warga.iss(untuk installer Warga)packaging/installer_admin.iss(untuk installer Admin)
Installer hasil kompilasi akhir berformat .exe setup akan tersimpan di dalam folder dist/.