databasekumuhbangkim
865 file ยท 15.1 MB
README
๐๏ธ Database Kumuh Bangkim
Sistem Informasi Terpadu untuk Pengelolaan Data Kawasan Permukiman Kumuh Indonesia
Aplikasi web berbasis cloud untuk manajemen dan monitoring data verifikasi dokumen serta delineasi kawasan kumuh yang mencakup 34 provinsi dan 514 kabupaten/kota di seluruh Indonesia. Dikembangkan untuk mendukung program penanganan permukiman kumuh Direktorat Jenderal Perumahan, Kementerian PUPR.
๐ Daftar Isi
- Tentang Proyek
- Fitur Utama
- Tech Stack
- Arsitektur Sistem
- Keamanan & Autentikasi
- Struktur Database
- API Documentation
- Instalasi & Deployment
- Penggunaan
- Roles & Permissions
- Roadmap Pengembangan
- Contributing
- Lisensi
๐ฏ Tentang Proyek
Latar Belakang
Database Kumuh Bangkim merupakan sistem informasi yang dikembangkan untuk:
- Sentralisasi Data: Mengumpulkan dan mengelola data kawasan kumuh dari seluruh Indonesia dalam satu platform terpusat
- Monitoring Verifikasi: Memantau kelengkapan dokumen verifikasi (Berita Acara, Matriks, Shapefile)
- Analisis Delineasi: Mengelola data luas kawasan kumuh berdasarkan kewenangan (Kabupaten/Kota, Provinsi, Pusat)
- Manajemen Dokumentasi: Mengelola surat masuk, surat keluar, nota dinas, dan dokumen administratif lainnya
Cakupan Data
| Kategori | Jumlah |
|---|---|
| Wilayah Administratif | 3 Wilayah |
| Provinsi | 34 Provinsi |
| Kabupaten/Kota | 514 Kab/Kota |
| Data Verifikasi Dokumen | 71+ Records |
| Data Luas Delineasi | 21+ Records |
โจ Fitur Utama
๐ Dashboard Analytics
- Statistik Real-time: Total dokumen, total luas kawasan (Ha), status kelengkapan
- Visualisasi Interaktif: 4 chart dinamis (Bar Chart, Pie Chart)
- Top 10 Provinsi: Ranking berdasarkan luas kawasan kumuh
- Distribusi Kewenangan: Pembagian luas per tingkat kewenangan
๐ Manajemen Data Kategori 1 - Kesesuaian Dokumen
- Monitoring status kelengkapan dokumen (BA, Matriks, SHP)
- Indikator visual status: โ Lengkap, โ ๏ธ Perlu Perbaikan, โ Tidak Ada
- Direct link ke Google Drive untuk akses dokumen
- Filter berdasarkan wilayah dan provinsi
- Export data ke format CSV
๐ Manajemen Data Kategori 2 - Data Luas Kumuh
- Data delineasi kawasan kumuh per kabupaten/kota
- Pembagian luas berdasarkan kewenangan penanganan
- Metode verifikasi (Desk Review / Desk & Survei)
- Link peta dan dokumen pendukung
- Export data ke format CSV
๐ Sistem Dokumentasi Surat
- Manajemen surat masuk dan keluar
- Kategorisasi: Surat Masuk, Surat Keluar, Nota Dinas, SK/Keputusan
- Pencatatan lengkap: nomor, tanggal, perihal, pengirim/penerima
- Integrasi Google Drive untuk penyimpanan dokumen
๐ Multi-Level Access Control
- Role-Based Access Control (RBAC)
- Pembatasan akses berdasarkan wilayah
- Audit trail aktivitas pengguna
๐ ๏ธ Tech Stack
Backend
| Technology | Version | Deskripsi |
|---|---|---|
| Python | 3.9+ | Bahasa pemrograman utama |
| Flask | 3.0.0 | Micro web framework |
| Flask-CORS | 4.0.0 | Cross-Origin Resource Sharing |
| Flask-JWT-Extended | 4.6.0 | JWT Authentication |
| Werkzeug | 3.0.1 | WSGI utilities |
Frontend
| Technology | Version | Deskripsi |
|---|---|---|
| HTML5/CSS3 | - | Struktur dan styling |
| JavaScript | ES6+ | Logic dan interaktivitas |
| Bootstrap | 5.3.2 | UI Framework |
| Bootstrap Icons | 1.11.1 | Icon library |
| jQuery | 3.7.1 | DOM manipulation |
| DataTables | 1.13.7 | Advanced table features |
| Chart.js | 4.x | Data visualization |
Infrastructure & Deployment
| Technology | Deskripsi |
|---|---|
| Vercel | Serverless deployment platform |
| Git/GitHub | Version control & collaboration |
| Google Drive API | Document storage integration |
Development Tools
โโโ IDE: VS Code / PyCharm
โโโ API Testing: Postman / Thunder Client
โโโ Version Control: Git
โโโ Package Manager: pip
๐๏ธ Arsitektur Sistem
High-Level Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ CLIENT LAYER โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ Browser โ โ Mobile โ โ Tablet โ โ
โ โ (Desktop) โ โ (Safari) โ โ (Chrome) โ โ
โ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โ
โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ HTTPS/TLS 1.3 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ VERCEL EDGE NETWORK โ โ
โ โ (Global CDN & SSL/TLS) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโ โ
โ โผ โผ โ
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โ โ Static Files โ โ Serverless โ โ
โ โ (HTML/JS/CSS) โ โ Functions โ โ
โ โ โ โ (Python/Flask) โ โ
โ โ /public/* โ โ /api/* โ โ
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโ โ
โ โ โ
โ PRESENTATION LAYER โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโ
โ APPLICATION LAYER โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ โ
โ โ FLASK APPLICATION โ โ โ
โ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโดโโโโโโโโโโโโโ โ โ
โ โ โ Auth Module โ โ API Routes โ โ Middleware โ โ โ
โ โ โ โ โ โ โ โ โ โ
โ โ โ - Login โ โ - /wilayah โ โ - CORS โ โ โ
โ โ โ - Token โ โ - /provinsi โ โ - JWT Auth โ โ โ
โ โ โ - Verify โ โ - /kategori1 โ โ - Logging โ โ โ
โ โ โ โ โ - /kategori2 โ โ โ โ โ
โ โ โ โ โ - /dokumen โ โ โ โ โ
โ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ BUSINESS LOGIC โ โ
โ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ โ
โ โ โ Access โ โ Data โ โ Report โ โ โ
โ โ โ Control โ โ Filtering โ โ Generation โ โ โ
โ โ โ โ โ โ โ โ โ โ
โ โ โ - RBAC โ โ - By Wilayah โ โ - Dashboard โ โ โ
โ โ โ - Wilayah โ โ - By Provinceโ โ - Charts โ โ โ
โ โ โ - Permission โ โ - By Status โ โ - Export CSV โ โ โ
โ โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DATA LAYER โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ IN-MEMORY DATA STORE โ โ
โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ โ
โ โ โ USERS โ โ WILAYAH โ โ PROVINSI โ โ โ
โ โ โ (5 admin) โ โ (3 region) โ โ (34 prov) โ โ โ
โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ โ
โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ โ
โ โ โ KATEGORI1 โ โ KATEGORI2 โ โ DOKUMENTASI โ โ โ
โ โ โ (71 docs) โ โ (21 areas) โ โ (5+ surat) โ โ โ
โ โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ EXTERNAL INTEGRATIONS โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ GOOGLE DRIVE โ โ โ
โ โ โ - Document Storage โ โ โ
โ โ โ - Shapefile Repository โ โ โ
โ โ โ - Map Files Storage โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Request Flow Diagram
โโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ Client โโโโโโโถโ Vercel โโโโโโโถโ Flask โโโโโโโถโ Data โ
โ โ โ Edge โ โ API โ โ Store โ
โโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ โ โ โ
โ 1. Request โ โ โ
โโโโโโโโโโโโโโโโถโ โ โ
โ โ 2. Route โ โ
โ โโโโโโโโโโโโโโโโโโถโ โ
โ โ โ 3. Validate โ
โ โ โ Token โ
โ โ โโโโโโโโโโโโโโโโโโถโ
โ โ โ 4. Fetch Data โ
โ โ โโโโโโโโโโโโโโโโโโโ
โ โ 5. Response โ โ
โ โโโโโโโโโโโโโโโโโโโ โ
โ 6. JSON โ โ โ
โโโโโโโโโโโโโโโโโ โ โ
โ โ โ โ
Directory Structure
databasekumuhbangkim/
โ
โโโ ๐ api/
โ โโโ ๐ index.py # Main Flask API (Serverless Function)
โ # - Authentication endpoints
โ # - CRUD operations
โ # - Data filtering logic
โ # - Business logic
โ
โโโ ๐ public/
โ โโโ ๐ index.html # Single Page Application (SPA)
โ โ # - Login interface
โ โ # - Dashboard UI
โ โ # - Data tables
โ โ # - Charts & visualizations
โ โ
โ โโโ ๐ app.js # Frontend Application Logic
โ # - API communication
โ # - State management
โ # - UI interactions
โ # - Export functionality
โ
โโโ ๐ local_server.py # Local development server
โโโ ๐ requirements.txt # Python dependencies
โโโ ๐ vercel.json # Vercel deployment config
โโโ ๐ .gitignore # Git ignore rules
โโโ ๐ README.md # Project documentation
๐ Keamanan & Autentikasi
Authentication Flow
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AUTHENTICATION FLOW โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ Client โ โ Flask Server โ
โโโโโโฌโโโโโโ โโโโโโโโโโฌโโโโโโโโโโ
โ โ
โ 1. POST /api/auth/login โ
โ {username, password} โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโถโ
โ โ
โ โโโโโโโโโโโดโโโโโโโโโโ
โ โ 2. Hash password โ
โ โ with SHA-256 โ
โ โ โ
โ โ 3. Compare with โ
โ โ stored hash โ
โ โ โ
โ โ 4. Generate token โ
โ โ if valid โ
โ โโโโโโโโโโโฌโโโโโโโโโโ
โ โ
โ 5. Response โ
โ {token, user_info, wilayah_akses} โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โ 6. Store token in localStorage โ
โ โ
โ 7. Subsequent requests with โ
โ Authorization: Bearer <token> โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโถโ
โ โ
โ โโโโโโโโโโโดโโโโโโโโโโ
โ โ 8. Verify token โ
โ โ & permissions โ
โ โโโโโโโโโโโฌโโโโโโโโโโ
โ โ
โ 9. Protected data response โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
Security Features
1. Password Security
# Password hashing menggunakan SHA-256
import hashlib
def hash_password(password):
return hashlib.sha256(password.encode()).hexdigest()
# Password tidak pernah disimpan dalam plain text
# Hanya hash yang disimpan dan dibandingkan
2. Token-Based Authentication
- Bearer Token: Setiap request API memerlukan token di header
- Token Validation: Server memvalidasi token pada setiap request
- Session Management: Token disimpan di localStorage browser
3. Role-Based Access Control (RBAC)
| Permission | Super Admin | Admin Pusat | Admin Wilayah |
|---|---|---|---|
| View Dashboard | โ | โ | โ |
| View All Wilayah | โ | โ | โ |
| View Own Wilayah | โ | โ | โ |
| CRUD Kategori 1 | โ | โ | โ |
| CRUD Kategori 2 | โ | โ | โ |
| CRUD Dokumentasi | โ | โ | โ (own) |
| Export CSV | โ | โ | โ |
4. Data Access Control
# Wilayah-based data filtering
WILAYAH_PROVINSI_MAPPING = {
"1": ["Aceh", "Sumatera Utara", ...], # Wilayah 1
"2": ["DKI Jakarta", "Jawa Barat", ...], # Wilayah 2
"3": ["Kalimantan Barat", "Papua", ...] # Wilayah 3
}
# Admin Wilayah hanya dapat mengakses data wilayahnya
def filter_by_user_access(data, user):
if user.role == "admin_wilayah":
return [d for d in data if d.wilayah_id == user.wilayah_akses]
return data
5. Security Headers & CORS
# CORS Configuration
CORS(app, resources={
r"/api/*": {
"origins": ["*"], # Configure for production
"methods": ["GET", "POST", "PUT", "DELETE"],
"allow_headers": ["Content-Type", "Authorization"]
}
})
6. Input Validation
- URL validation untuk Google Drive links
- Input sanitization untuk mencegah injection
- Type checking pada semua API endpoints
Security Best Practices Implemented
| Practice | Status | Description |
|---|---|---|
| Password Hashing | โ | SHA-256 encryption |
| Token Authentication | โ | Bearer token pada setiap request |
| Role-Based Access | โ | 3 level akses berbeda |
| CORS Protection | โ | Configured Flask-CORS |
| HTTPS Enforcement | โ | Via Vercel SSL/TLS |
| Input Validation | โ | URL & data validation |
| Error Handling | โ | Generic error messages |
๐ Struktur Database
Entity Relationship Diagram
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DATABASE SCHEMA (IN-MEMORY) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ USERS โ โ WILAYAH โ โ PROVINSI โ
โโโโโโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโโโโค
โ username (PK) โ โ id (PK) โโโโ โ id (PK) โ
โ password_hash โ โ kode_wilayah โ โ โ kode โ
โ nama_lengkap โ โ nama_wilayah โ โ โ nama โ
โ role โ โโโโโโโโโโโโโโโโโโโ โ โ wilayah_id (FK) โโโโ
โ wilayah_akses โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โ provinsi_akses โ โ
โโโโโโโโโโโโโโโโโโโ โ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ KATEGORI1 โ โ KATEGORI2 โ
โ (Kesesuaian Dokumen) โ โ (Data Luas Kumuh) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโค โโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ id (PK) โ โ id (PK) โ
โ wilayah_id (FK) โ โ wilayah_id (FK) โ
โ provinsi โ โ provinsi โ
โ kab_kota โ โ kab_kota โ
โ ba (0/1/2) โ โ metode โ
โ matriks (0/1/2) โ โ total_luas โ
โ shp (0/1/2) โ โ luas_kab โ
โ link_matriks โ โ luas_prov โ
โ link_shp โ โ luas_pusat โ
โ link_ba โ โ link_lokasi โ
โ catatan โ โ link_peta โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ link_ba โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DOKUMENTASI โ
โ (Manajemen Surat) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ id (PK) โ
โ wilayah_id (FK) โ
โ kategori โ
โ nomor_surat โ
โ tanggal โ
โ perihal โ
โ pengirim โ
โ penerima โ
โ link_dokumen โ
โ keterangan โ
โ created_by โ
โ created_at โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
Data Models
Users Collection
USERS = {
"super_admin": {
"username": "super_admin",
"password_hash": "sha256_hash", # superadmin123
"nama_lengkap": "Super Administrator",
"role": "super_admin",
"wilayah_akses": "ALL",
"provinsi_akses": None
},
"admin_pusat": {
"username": "admin_pusat",
"password_hash": "sha256_hash", # admin123
"nama_lengkap": "Admin Pusat",
"role": "admin_pusat",
"wilayah_akses": "ALL",
"provinsi_akses": None
},
# ... admin_wil1, admin_wil2, admin_wil3
}
Status Values
| Value | Status | Icon | Deskripsi |
|---|---|---|---|
| 0 | Tidak Ada | โ | Dokumen tidak tersedia |
| 1 | Perlu Perbaikan | โ ๏ธ | Dokumen ada tapi perlu revisi |
| 2 | Lengkap/Sesuai | โ | Dokumen lengkap dan sesuai |
๐ก API Documentation
Base URL
Production: https://your-domain.vercel.app/api
Local: http://localhost:8000/api
Authentication Endpoints
Login
POST /api/auth/login
Content-Type: application/json
{
"username": "string",
"password": "string"
}
Response (200 OK):
{
"status": "success",
"token": "generated_token_string",
"user": {
"username": "admin_pusat",
"nama_lengkap": "Admin Pusat",
"role": "admin_pusat",
"wilayah_akses": "ALL"
}
}
Get Current User
GET /api/auth/me
Authorization: Bearer <token>
Data Endpoints
Get Wilayah
GET /api/wilayah
Authorization: Bearer <token>
Response:
{
"status": "success",
"data": [
{"id": 1, "kode_wilayah": "WIL1", "nama_wilayah": "Wilayah 1"},
{"id": 2, "kode_wilayah": "WIL2", "nama_wilayah": "Wilayah 2"},
{"id": 3, "kode_wilayah": "WIL3", "nama_wilayah": "Wilayah 3"}
]
}
Get Provinsi
GET /api/provinsi?wilayah_id=1
Authorization: Bearer <token>
Get Kategori 1 (Kesesuaian Dokumen)
GET /api/kategori1?wilayah_id=1&provinsi=Aceh
Authorization: Bearer <token>
Response:
{
"status": "success",
"data": [
{
"id": 1,
"wilayah_id": 1,
"provinsi": "Aceh",
"kab_kota": "Kota Banda Aceh",
"ba": 2,
"matriks": 2,
"shp": 1,
"link_matriks": "https://drive.google.com/...",
"link_shp": "https://drive.google.com/...",
"link_ba": "https://drive.google.com/...",
"catatan": "Shapefile perlu revisi koordinat"
}
]
}
Get Kategori 2 (Data Luas Kumuh)
GET /api/kategori2?wilayah_id=1
Authorization: Bearer <token>
Response:
{
"status": "success",
"data": [
{
"id": 1,
"wilayah_id": 1,
"provinsi": "Aceh",
"kab_kota": "Kota Banda Aceh",
"metode": "Desk & Survei",
"total_luas": 150.5,
"luas_kab": 50.0,
"luas_prov": 45.5,
"luas_pusat": 55.0,
"link_lokasi": "https://drive.google.com/...",
"link_peta": "https://drive.google.com/...",
"link_ba": "https://drive.google.com/..."
}
]
}
Get Dokumentasi
GET /api/dokumentasi?kategori=Surat%20Masuk
Authorization: Bearer <token>
Dashboard Endpoints
Get Statistics
GET /api/dashboard/stats
Authorization: Bearer <token>
Response:
{
"status": "success",
"data": {
"total_dokumen": 71,
"total_luas": 3250.75,
"dokumen_lengkap": 45,
"total_area": 21
}
}
Get Chart Data
GET /api/dashboard/chart-data
Authorization: Bearer <token>
CRUD Operations (Super Admin Only)
Create Kategori 1
POST /api/kategori1
Authorization: Bearer <token>
Content-Type: application/json
{
"wilayah_id": 1,
"provinsi": "Aceh",
"kab_kota": "Kota Sabang",
"ba": 0,
"matriks": 0,
"shp": 0,
"catatan": "Data baru"
}
Update Kategori 1
PUT /api/kategori1/1
Authorization: Bearer <token>
Content-Type: application/json
{
"ba": 2,
"link_ba": "https://drive.google.com/..."
}
Delete Kategori 1
DELETE /api/kategori1/1
Authorization: Bearer <token>
Error Responses
// 401 Unauthorized
{
"status": "error",
"message": "Token tidak valid atau sudah kadaluarsa"
}
// 403 Forbidden
{
"status": "error",
"message": "Anda tidak memiliki akses ke resource ini"
}
// 404 Not Found
{
"status": "error",
"message": "Data tidak ditemukan"
}
๐ Instalasi & Deployment
Prerequisites
- Python 3.9 atau lebih tinggi
- pip (Python package manager)
- Git
- Node.js (untuk Vercel CLI, opsional)
Local Development
1. Clone Repository
git clone https://github.com/your-username/databasekumuhbangkim.git
cd databasekumuhbangkim
2. Setup Virtual Environment
# Buat virtual environment
python -m venv venv
# Aktivasi (Linux/Mac)
source venv/bin/activate
# Aktivasi (Windows)
venv\Scripts\activate
3. Install Dependencies
pip install -r requirements.txt
4. Run Local Server
python local_server.py
Server akan berjalan di http://localhost:8000
Production Deployment (Vercel)
1. Install Vercel CLI
npm i -g vercel
2. Login to Vercel
vercel login
3. Deploy
# Deploy to preview
vercel
# Deploy to production
vercel --prod
Configuration Files
vercel.json
{
"version": 2,
"builds": [
{
"src": "api/index.py",
"use": "@vercel/python"
},
{
"src": "public/**",
"use": "@vercel/static"
}
],
"routes": [
{
"src": "/api/(.*)",
"dest": "/api/index.py"
},
{
"src": "/(.*)",
"dest": "/public/$1"
}
]
}
requirements.txt
Flask==3.0.0
Flask-CORS==4.0.0
Flask-JWT-Extended==4.6.0
Werkzeug==3.0.1
๐ Penggunaan
Login
- Buka aplikasi di browser
- Masukkan kredensial sesuai role:
| Role | Username | Password |
|---|---|---|
| Super Administrator | super_admin | superadmin123 |
| Admin Pusat | admin_pusat | admin123 |
| Admin Wilayah 1 | admin_wil1 | wilayah1 |
| Admin Wilayah 2 | admin_wil2 | wilayah2 |
| Admin Wilayah 3 | admin_wil3 | wilayah3 |
Dashboard
Setelah login, dashboard akan menampilkan:
- Statistik overview (total dokumen, luas, kelengkapan)
- Chart distribusi data
- Quick access ke semua modul
Navigasi Menu
๐ Dashboard โ Overview dan statistik
๐ Kategori 1 โ Data kesesuaian dokumen
๐ Kategori 2 โ Data luas kawasan kumuh
๐ Dokumentasi โ Manajemen surat dan dokumen
๐ค Profile โ Informasi user
๐ช Logout โ Keluar dari sistem
Export Data
- Buka halaman data yang ingin di-export
- Klik tombol "Export CSV"
- File akan otomatis ter-download
๐ฅ Roles & Permissions
Super Administrator
Akses Penuh ke Seluruh Sistem
โ
Lihat semua data (Wilayah 1, 2, 3)
โ
Tambah data baru (Kategori 1 & 2)
โ
Edit data existing
โ
Hapus data
โ
Kelola dokumentasi
โ
Export semua data
โ
Akses dashboard lengkap
Admin Pusat
Akses View ke Seluruh Data
โ
Lihat semua data (Wilayah 1, 2, 3)
โ Tambah/Edit/Hapus Kategori 1 & 2
โ
Kelola dokumentasi (Pusat)
โ
Export semua data
โ
Akses dashboard lengkap
Admin Wilayah
Akses Terbatas pada Wilayah Sendiri
โ
Lihat data wilayah sendiri saja
โ Tambah/Edit/Hapus Kategori 1 & 2
โ
Kelola dokumentasi (Wilayah sendiri)
โ
Export data wilayah sendiri
โ
Akses dashboard (filtered)
Permission Matrix
| Feature | Super Admin | Admin Pusat | Admin Wil 1 | Admin Wil 2 | Admin Wil 3 |
|---|---|---|---|---|---|
| View Wilayah 1 | โ | โ | โ | โ | โ |
| View Wilayah 2 | โ | โ | โ | โ | โ |
| View Wilayah 3 | โ | โ | โ | โ | โ |
| CRUD Kategori 1 | โ | โ | โ | โ | โ |
| CRUD Kategori 2 | โ | โ | โ | โ | โ |
| CRUD Dokumentasi | โ | โ | โ | โ | โ |
๐บ๏ธ Roadmap Pengembangan
Phase 1: Foundation (Completed โ )
- Setup project structure
- Implement authentication system
- Create role-based access control
- Build dashboard with statistics
- Develop Kategori 1 module
- Develop Kategori 2 module
- Implement documentation management
- Deploy to Vercel
Phase 2: Data Persistence (Q1 2026)
- Migrate to PostgreSQL/Supabase database
- Implement data backup & recovery
- Add data versioning (audit trail)
- Create admin panel for user management
- Implement proper session management with refresh tokens
Phase 3: Enhanced Features (Q2 2026)
- Advanced filtering & search
- Bulk import from Excel/CSV
- Automated report generation (PDF)
- Email notifications
- Data validation rules
- Map visualization (Leaflet/Mapbox integration)
Phase 4: Integration & Automation (Q3 2026)
- Google Drive API integration (real-time sync)
- SSO integration (Google/Microsoft)
- Mobile responsive optimization
- PWA (Progressive Web App) support
- API rate limiting
- Webhook notifications
Phase 5: Analytics & AI (Q4 2026)
- Advanced analytics dashboard
- Trend analysis & predictions
- Automated data quality checks
- AI-powered document classification
- Natural language query interface
Phase 6: Enterprise Features (2027)
- Multi-tenant architecture
- Custom role creation
- Workflow automation
- Integration dengan SIMBG/OSS
- Open API untuk third-party integration
- High availability & disaster recovery
๐ค Contributing
Kami menyambut kontribusi dari semua pihak! Berikut panduan untuk berkontribusi:
Getting Started
- Fork repository ini
- Clone fork ke local machine
- Create branch untuk fitur baru
- Commit perubahan dengan pesan yang jelas
- Push ke fork
- Submit Pull Request
Branch Naming Convention
feature/ โ Fitur baru (feature/add-export-pdf)
bugfix/ โ Perbaikan bug (bugfix/fix-login-error)
hotfix/ โ Perbaikan urgent (hotfix/security-patch)
docs/ โ Dokumentasi (docs/update-readme)
refactor/ โ Refactoring code (refactor/cleanup-api)
Commit Message Format
type(scope): description
# Examples:
feat(auth): add JWT refresh token
fix(dashboard): correct chart rendering
docs(readme): update installation guide
refactor(api): improve error handling
Code Style Guidelines
Python (Backend):
- Follow PEP 8 style guide
- Use meaningful variable names
- Add docstrings to functions
- Handle exceptions appropriately
JavaScript (Frontend):
- Use ES6+ syntax
- Keep functions small and focused
- Comment complex logic
- Use consistent naming
Pull Request Process
- Update README.md jika ada perubahan interface
- Update requirements.txt jika ada dependency baru
- Pastikan semua test pass
- Request review dari maintainer
- Tunggu approval sebelum merge
๐ Lisensi
Proyek ini dilisensikan di bawah MIT License.
MIT License
Copyright (c) 2024 Database Kumuh Bangkim
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
๐ Kontak & Support
Technical Support
- Email: support@bangkim.pu.go.id
- Issue Tracker: GitHub Issues
Development Team
- Lead Developer: Tim IT Bangkim
- UI/UX: Tim IT Bangkim
- DevOps: Tim IT Bangkim
Useful Links
- Documentation: Wiki
- API Reference: API Docs
- Changelog: CHANGELOG.md
<p align="center"> <strong>Database Kumuh Bangkim</strong><br> <em>Sistem Informasi Terpadu Pengelolaan Data Kawasan Permukiman Kumuh Indonesia</em><br><br> Direktorat Jenderal Perumahan<br> Kementerian Pekerjaan Umum dan Perumahan Rakyat<br><br> <img src="https://img.shields.io/badge/Made%20with-โค๏ธ-red" alt="Made with love"> <img src="https://img.shields.io/badge/Indonesia-๐ฎ๐ฉ-red" alt="Indonesia"> </p> # Vercel-GitHub Integration Test Last verified: 2026-03-26 09:07 UTC # Verified: 2026-03-26 09:10 UTC
File Utama
- .SYNC_TEST
- .gitignore
- ADD_MISSING_ENTRIES.py
- ALL_KALBAR_LINKS.json
- BATCH_COLLECT.py
- COMPLETE_COLLECTION.py
- COMPLETE_REMAINING.py
- CONTINUE_COLLECTION.py