University Course Timetabling System

A web-based system for the University Course Timetabling Problem, combining dynamic constraints, a backend and database, and the Grey Wolf Optimizer.

Nuxt.jsFastAPISupabase

๐Ÿบ UAD Course Scheduler - GWO Enhanced

Web-Based Academic Scheduling System with Dynamic Constraints (Nuxt.js Frontend + FastAPI Backend + Supabase)

Nuxt.js FastAPI Supabase

Open in GitHub


๐ŸŒ Live Demo

๐Ÿš€ Akses langsung sistem: penjadwalan-uad.vercel.app


๐Ÿง  Diagram Arsitektur Sistem

Architecture Diagram


๐Ÿ”ง Stack Teknologi

Komponen Teknologi
Frontend Nuxt.js 3, Tailwind CSS, Pinia
Backend FastAPI, Python 3.11, Uvicorn
Database Supabase (PostgreSQL) + RLS
Optimasi Grey Wolf Optimizer (GWO), NumPy, Pandas
Deploy Vercel (Frontend), Railway (Backend)

๐Ÿš€ Fitur Utama

1. ๐Ÿงฉ Dynamic Constraints UI

  • Tambah/ubah constraints secara real-time via dashboard admin
  • Validasi dinamis menggunakan Supabase RPC
  • Sistem prioritas multi-level

2. ๐Ÿบ Hybrid GWO Engine

# Contoh pemanggilan GWO dari endpoint FastAPI
@router.post("/optimize")
async def run_optimization():
    optimizer = GWOScheduler(
        constraints=await fetch_dynamic_constraints(),
        max_iter=100
    )
    return await optimizer.run_async()
  • Optimasi jadwal dengan paralelisasi menggunakan asyncio
  • Hasil cache tersimpan otomatis di Supabase

3. ๐Ÿ“Š Academic Analytics

  • Visualisasi heatmap beban dosen
  • Pelacakan historis perubahan jadwal
  • Auto-generate KRS berdasarkan hasil optimasi

๐Ÿ“‚ Struktur Repositori

Skripsiku/
โ”œโ”€โ”€ frontend/            # Nuxt.js 3
โ”‚   โ”œโ”€โ”€ composables/     # Visualisasi GWO
โ”‚   โ””โ”€โ”€ pages/admin/     # Manajemen constraints
โ”‚
โ”œโ”€โ”€ backend/             # FastAPI
โ”‚   โ”œโ”€โ”€ routers/         # API endpoints
โ”‚   โ””โ”€โ”€ gwo/             # Algoritma GWO
โ”‚
โ”œโ”€โ”€ supabase/            # SQL dan trigger RLS
โ”‚   โ”œโ”€โ”€ triggers/        
โ”‚   โ””โ”€โ”€ functions/       
โ”‚
โ””โ”€โ”€ docker/              # Setup container

โš™๏ธ Instalasi Lokal

  1. Clone Repositori

    git clone https://github.com/indogegewepe/Skripsiku
    
  2. Instalasi Frontend

    cd frontend
    npm install
    cp .env.example .env
    
  3. Instalasi Backend

    cd ../backend
    python -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
    cp .env.example .env
    
  4. Konfigurasi Supabase

    • Buat project baru di Supabase
    • Import file /supabase/schema.sql
    • Sesuaikan .env frontend & backend dengan kredensial Supabase
  5. Jalankan Sistem

    # Frontend (port 3000)
    npm run dev
    
    # Backend (port 8000)
    uvicorn main:app --reload
    

๐Ÿ“ˆ Perbandingan Kinerja

Metode Manual (Excel) Sistem GWO Peningkatan
Kompleksitas Waktu O(nยณ) O(n log n) 68% lebih cepat
Deteksi Konflik 72% manual 100% otomatis +28% akurasi
Waktu Re-Schedule 5-7 hari <2 jam 98.61% efisiensi waktu

๐Ÿค Cara Berkontribusi

  1. Fork repositori

  2. Buat branch fitur:

    git checkout -b feat/namafitur
    
  3. Commit perubahan:

    git commit -m "feat: tambah fitur X"
    
  4. Push & buat Pull Request

โžก๏ธ Lihat panduan lengkap di CONTRIBUTING.md


๐Ÿ“„ Lisensi

Proyek ini dilisensikan di bawah Academic Free License 3.0 โ€” hanya untuk penggunaan edukasi.


Dibuat dengan โค๏ธ oleh Bagas Uwaidha ๐Ÿ”— Portfolio | ๐Ÿ“ง bagasuwaidha007@gmail.com