344 lines
9.4 KiB
Markdown
344 lines
9.4 KiB
Markdown
# WebGIS - Sistem Informasi Geografis untuk Pengentasan Kemiskinan
|
|
|
|
Aplikasi web berbasis map untuk visualisasi, manajemen, dan analisis data kemiskinan di wilayah Pontianak.
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Prerequisites
|
|
- PHP 7.4+
|
|
- Web Browser (Chrome, Firefox, Edge)
|
|
- Git
|
|
|
|
### Installation
|
|
|
|
```bash
|
|
# 1. Clone or download repository
|
|
cd /workspaces/project92e4821824385
|
|
|
|
# 2. Start PHP development server
|
|
php -S localhost:8000
|
|
|
|
# 3. Open in browser
|
|
# Navigate to: http://localhost:8000
|
|
|
|
# 4. Login with demo credentials
|
|
# Email: admin@system.local
|
|
# Password: admin123
|
|
```
|
|
|
|
## 📋 Features
|
|
|
|
### ✅ Authentication & Access Control
|
|
- Role-based login system (Admin, Petugas, Pimpinan)
|
|
- Session management dengan automatic timeout
|
|
- Secure password hashing dengan bcrypt
|
|
|
|
### ✅ Dashboard Analytics
|
|
- Real-time KPI cards (total households, avg poverty score, assistance rate)
|
|
- Status breakdown (verification status)
|
|
- Priority ranking (intervention priority levels)
|
|
- Area-wise statistics breakdown
|
|
|
|
### ✅ User Management (Admin Only)
|
|
- Create new users dengan role assignment
|
|
- Edit user roles
|
|
- Deactivate users (soft delete)
|
|
- User list dengan status indicators
|
|
|
|
### ✅ Spatial Data Management
|
|
- Multi-layer interactive map dengan Leaflet.js
|
|
- Map layers: Points (households), Roads, Parcels, Choropleth (Pontianak areas)
|
|
- Drag-drop marker repositioning
|
|
- Point search dan filtering
|
|
|
|
### ✅ Household Data
|
|
- Create household records dengan poverty assessment
|
|
- Income, employment status, housing condition tracking
|
|
- Household ranking by poverty score
|
|
- Verification status tracking
|
|
|
|
### ✅ Poverty Scoring System
|
|
- Automatic computation of SKR (socioeconomic score)
|
|
- SAG (geographic accessibility score)
|
|
- SPI (intervention priority score)
|
|
- Priority level assignment (Very High → Low)
|
|
|
|
### ✅ Verification & Assistance Tracking
|
|
- Record field verification results
|
|
- Track assistance distribution (food, cash, health, education, etc.)
|
|
- Delivery status monitoring
|
|
- Evidence & confidence scoring
|
|
|
|
### ✅ Export & Reporting
|
|
- GeoJSON export untuk spatial analysis
|
|
- Suitable untuk integration dengan GIS tools
|
|
|
|
## 🎨 Technology Stack
|
|
|
|
| Component | Technology |
|
|
|-----------|------------|
|
|
| **Frontend** | Vanilla HTML5, CSS3, JavaScript |
|
|
| **Map Library** | Leaflet.js (OpenStreetMap compatible) |
|
|
| **Backend** | PHP 7.4+ |
|
|
| **Database** | SQLite 3.0+ |
|
|
| **API** | RESTful JSON APIs |
|
|
| **Session** | PHP Sessions (cookie-based) |
|
|
|
|
## 📁 Project Structure
|
|
|
|
```
|
|
project92e4821824385/
|
|
├── api/ # 40+ PHP endpoints
|
|
│ ├── config.php # Database config & auth functions
|
|
│ ├── login.php # Login endpoint
|
|
│ ├── logout.php # Logout endpoint
|
|
│ ├── get_users.php # User list
|
|
│ ├── create_user.php # Create user
|
|
│ ├── update_user.php # Update user role
|
|
│ ├── delete_user.php # Deactivate user
|
|
│ ├── get_dashboard_summary.php
|
|
│ ├── get_area_breakdown.php
|
|
│ └── ... (30+ more endpoints for spatial/household data)
|
|
│
|
|
├── js/
|
|
│ └── app.js # Main application logic (~2300 lines)
|
|
│
|
|
├── css/
|
|
│ └── style.css # Responsive styling
|
|
│
|
|
├── db/
|
|
│ └── markers.db # SQLite database (auto-created)
|
|
│
|
|
├── index.html # Main entry point
|
|
├── API_REFERENCE.md # Detailed API documentation
|
|
├── USER_GUIDE.md # User manual for all roles
|
|
├── IMPLEMENTATION_SUMMARY.md # Tech stack & features
|
|
└── README.md # This file
|
|
```
|
|
|
|
## 👥 User Roles & Permissions
|
|
|
|
### Admin 👑
|
|
- Full system access
|
|
- User management (create, edit, delete)
|
|
- Data input and editing
|
|
- View analytics and dashboard
|
|
- Compute poverty scores
|
|
|
|
### Petugas (Data Officer) 📝
|
|
- Input/edit household data
|
|
- View map and statistics
|
|
- Verify households
|
|
- Record assistance distribution
|
|
- Cannot manage users
|
|
|
|
### Pimpinan (Manager) 👔
|
|
- View-only dashboard access
|
|
- View priority rankings
|
|
- Cannot input or modify data
|
|
|
|
## 🔐 Default Credentials
|
|
|
|
```
|
|
Email: admin@system.local
|
|
Password: admin123
|
|
Role: Admin
|
|
```
|
|
|
|
## 📖 Documentation
|
|
|
|
- **API Reference:** See `API_REFERENCE.md` for all endpoint Documentation
|
|
- **User Guide:** See `USER_GUIDE.md` for complete usage instructions
|
|
- **Implementation:** See `IMPLEMENTATION_SUMMARY.md` for technical details
|
|
|
|
## 🗄️ Database
|
|
|
|
### Auto-initialization
|
|
- Database schema automatically created on first run
|
|
- 11+ tables with proper relationships
|
|
- Indexes on performance-critical columns
|
|
- Cascade delete policies
|
|
|
|
### Tables
|
|
- `users` - User accounts & authentication
|
|
- `households` - Family poverty data
|
|
- `household_scores` - SKR, SAG, SPI calculations
|
|
- `assistance_distributions` - Bantuan tracking
|
|
- `verification_logs` - Verification history
|
|
- `markers, roads, land_parcels` - Spatial data
|
|
- `pontianak_areas, area_statistics` - Administrative boundaries
|
|
- `masjids, need_points` - Location data
|
|
- `score_metadata` - Scoring configuration
|
|
|
|
## 🔌 API Endpoints (40+)
|
|
|
|
### Authentication
|
|
- POST `/api/login.php` - Login
|
|
- POST `/api/logout.php` - Logout
|
|
- GET `/api/get_current_user.php` - Current user info
|
|
|
|
### User Management (Admin)
|
|
- GET `/api/get_users.php` - List users
|
|
- POST `/api/create_user.php` - Create user
|
|
- PUT `/api/update_user.php` - Update role
|
|
- DELETE `/api/delete_user.php` - Deactivate user
|
|
|
|
### Analytics
|
|
- GET `/api/get_dashboard_summary.php` - Dashboard KPIs
|
|
- GET `/api/get_area_breakdown.php` - Area statistics
|
|
|
|
### Household Management
|
|
- POST `/api/save_household.php` - Create household
|
|
- GET `/api/get_households.php` - List households
|
|
- PUT `/api/update_household.php` - Update household
|
|
- DELETE `/api/delete_household.php` - Delete household
|
|
- POST `/api/compute_household_scores.php` - Compute scores
|
|
- GET `/api/get_household_ranking.php` - Priority ranking
|
|
|
|
### Verification & Assistance
|
|
- POST `/api/save_verification_log.php` - Record verification
|
|
- GET `/api/get_verification_logs.php` - Verification history
|
|
- POST `/api/save_assistance_distribution.php` - Record assistance
|
|
- GET `/api/get_assistance_distributions.php` - Assistance history
|
|
|
|
### Spatial Data (20+)
|
|
- Points, Roads, Parcels, Pontianak Areas (CRUD operations)
|
|
- Choropleth data aggregation
|
|
- GeoJSON export
|
|
|
|
## ⚙️ Configuration
|
|
|
|
### Server Requirements
|
|
- PHP 7.4 or higher
|
|
- Web server (Apache, Nginx, phpd built-in)
|
|
- Write permissions for `/db/` folder
|
|
|
|
### Optional Production Setup
|
|
- Set up HTTPS/SSL certificate
|
|
- Configure proper session timeout
|
|
- Set up automated backups
|
|
- Enable database WAL mode for concurrency
|
|
|
|
## 🚀 Production Deployment
|
|
|
|
### Using Apache
|
|
```apache
|
|
<VirtualHost *:80>
|
|
ServerName system.local
|
|
DocumentRoot /var/www/project
|
|
<Directory /var/www/project>
|
|
AllowOverride All
|
|
Require all granted
|
|
</Directory>
|
|
</VirtualHost>
|
|
```
|
|
|
|
### Using Nginx
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
server_name system.local;
|
|
root /var/www/project;
|
|
|
|
location ~\.php$ {
|
|
fastcgi_pass 127.0.0.1:9000;
|
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
include fastcgi_params;
|
|
}
|
|
}
|
|
```
|
|
|
|
## 📊 Performance
|
|
|
|
- **Page Load:** < 3 seconds (on 10 Mbps connection)
|
|
- **API Response:** < 500ms for most endpoints
|
|
- **Map Rendering:** Real-time interactivity
|
|
- **Scoring Computation:** < 1 second for 100 households
|
|
|
|
## 🛠️ Development Guide
|
|
|
|
### Adding New Endpoint
|
|
1. Create new file in `/api/` folder: `your_endpoint.php`
|
|
2. Include `config.php` for database access
|
|
3. Use `requireLogin()` or `requireRole()` for access control
|
|
4. Return JSON response
|
|
|
|
Example:
|
|
```php
|
|
<?php
|
|
header('Content-Type: application/json');
|
|
require_once 'config.php';
|
|
|
|
requireRole(['Admin', 'Petugas']);
|
|
|
|
// Your code here
|
|
|
|
die(json_encode(['success' => true, 'data' => $result]));
|
|
?>
|
|
```
|
|
|
|
### Modifying Frontend
|
|
1. Edit `js/app.js` for logic changes
|
|
2. Edit `css/style.css` for styling
|
|
3. Edit `index.html` for structure/layout
|
|
4. Refresh browser to see changes (no build required)
|
|
|
|
## 🐛 Troubleshooting
|
|
|
|
### Login Issues
|
|
- Verify email: `admin@system.local`
|
|
- Verify password: `admin123`
|
|
- Check browser cookies are enabled
|
|
- Clear cache and try again
|
|
|
|
### Map Not Loading
|
|
- Check browser console for errors (F12)
|
|
- Verify internet connection (for Leaflet CDN)
|
|
- Try refreshing page
|
|
|
|
### Database Issues
|
|
- Ensure `/db/` folder has write permissions
|
|
- Check PHP error logs
|
|
- Delete `db/markers.db` to reset (will lose data)
|
|
|
|
### Performance Issues
|
|
- Check browser performance (F12 > Performance tab)
|
|
- Monitor server CPU/memory usage
|
|
- Consider adding pagination for large datasets
|
|
|
|
## 📝 Changelog
|
|
|
|
### Version 1.0 (May 2026)
|
|
- ✅ Complete authentication system
|
|
- ✅ Dashboard with real-time analytics
|
|
- ✅ User management for admins
|
|
- ✅ Household data management with scoring
|
|
- ✅ Interactive Leaflet map
|
|
- ✅ Verification and assistance tracking
|
|
- ✅ GeoJSON export capability
|
|
- ✅ Comprehensive API (40+ endpoints)
|
|
- ✅ User guide and API documentation
|
|
|
|
## 📞 Support
|
|
|
|
For issues, questions, or feature requests:
|
|
1. Check documentation in `USER_GUIDE.md`
|
|
2. Review API documentation in `API_REFERENCE.md`
|
|
3. Check browser console for error messages
|
|
4. Contact system administrator
|
|
|
|
## 📜 License
|
|
|
|
Academic Project - Universitas Tanjungpura
|
|
Mata Kuliah: Sistem Informasi Geografis
|
|
Dosen: Dr. Ir. Yus Sholva, ST., MT.
|
|
|
|
## 👨💻 Authors
|
|
|
|
**Frederick Ferdyand Halim** - Developer
|
|
Semester Genap 2024/2025
|
|
|
|
---
|
|
|
|
**Last Updated:** 9 Mei 2026
|
|
**Status:** Production Ready v1.0 |