Sistem Pendukung Keputusan (SPK) untuk perankingan kandidat/mahasiswa ke departemen berdasarkan kriteria menggunakan metode Profile Matching.
- Manajemen Kriteria, Departemen, Aspek, Alternatif
- Perankingan otomatis dengan metode Profile Matching
- Export PDF & JSON
- Import data dari JSON
- Responsive design (mobile & desktop)
- Backend: Flask (Python)
- Database: Supabase (PostgreSQL)
- Frontend: HTML, CSS, JavaScript (Vanilla)
- Deployment: Vercel
- PDF Generation: ReportLab
- Python 3.9+
- Node.js (untuk Vercel CLI, opsional)
- Akun Supabase (gratis)
git clone https://github.com/username/SPK-Project.git
cd SPK-Projectpip install -r requirements.txt- Buat project di https://supabase.com
- Buka SQL Editor → New Query
- Copy paste SQL dari
CREATE_TABLES_SQLdisrc/models/supabase_db.py - Klik Run
Buat file .env di root project:
SUPABASE_URL=https://your-project-id.supabase.co
SUPABASE_KEY=your-supabase-anon-key
FLASK_ENV=development
FLASK_SECRET_KEY=your-secret-key-hereCara mendapatkan SUPABASE_URL dan SUPABASE_KEY:
- Buka Supabase Dashboard → Settings → API
- Project URL → copy untuk
SUPABASE_URL - anon public key → copy untuk
SUPABASE_KEY
python app.pyAplikasi akan berjalan di http://localhost:5000
git add .
git commit -m "Initial commit"
git push origin main- Buka https://vercel.com
- Klik Add New → Project
- Import repository GitHub
- Framework Preset: Python
Di Vercel Dashboard → Settings → Environment Variables:
SUPABASE_URL→ URL project SupabaseSUPABASE_KEY→ anon public key
Klik Deploy dan tunggu sampai selesai.
SPK-Project/
├── app.py # Entry point Web (Flask)
├── main_desktop.py # Entry point Desktop (PySide6)
├── requirements.txt # Dependencies
├── vercel.json # Konfigurasi Vercel
├── .env.example # Template environment variables
├── src/
│ ├── engine/ # Logika Profile Matching
│ ├── models/ # Database layer (Supabase & SQLite)
│ ├── utils/ # Export PDF & JSON
│ └── views/ # UI Desktop (PySide6)
├── templates/ # HTML templates
└── static/ # CSS & JS
| Method | Endpoint | Deskripsi |
|---|---|---|
| GET | /api/criteria |
Ambil semua kriteria |
| POST | /api/criteria |
Tambah kriteria |
| GET | /api/departments |
Ambil semua departemen |
| GET | /api/departments/<id>/ranking |
Ambil ranking per departemen |
| GET | /api/export/json |
Export data ke JSON |
| GET | /api/export/pdf |
Export laporan ke PDF |
| Masalah | Solusi |
|---|---|
SUPABASE_URL not set |
Pastikan .env sudah dibuat dan diisi |
| Tabel belum dibuat | Jalankan SQL via Supabase SQL Editor |
| 500 Internal Server Error | Cek log di Vercel Dashboard |