Asia/Jakarta
ProjectsOctober 14, 2026

Kilas Tugas

image
  • Problem: Mahasiswa mengalami Task Paralysis / Overwhelm Freeze saat menerima silabus/tugas kuliah tebal (5–15 halaman) dengan deadline jauh, berujung sistem kebut semalam (H-1/H-0).
  • Core Value: "Jangan tanya 'kapan selesai', tanyakan 'apa yang dikerjakan hari ini'."
  • Solution: Membedah instruksi tugas panjang jadi rantai 3–8 sub-tugas terukur (25–90 menit) terdistribusi menuju deadline, dilengkapi Pomodoro timer, kalender, dan blueprint sharing.
Text
┌─────────────────────────────────────────────────────────────┐
│                     Client Layer (PWA / SPA)                │
│    React 18 + Vite 5 + Tailwind CSS + Lucide Icons          │
│    IndexedDB (Offline Store) + Service Worker (PWA Sync)    │
│    Hosting: Vercel Edge Network (kilastugas.vercel.app)     │
└──────────────────────────────┬──────────────────────────────┘
                               │ HTTPS REST / JSON
                               ▼
┌─────────────────────────────────────────────────────────────┐
│                     Backend API Layer                       │
│    Python 3.11/3.12 + FastAPI + Pydantic v2                 │
│    Reverse Proxy: Nginx + SSL Let's Encrypt                 │
│    Hosting: Ubuntu VPS (api-kilastugas.najmifaza.my.id)      │
└──────────────┬───────────────────────────────┬──────────────┘
               │                               │
               ▼ Local HTTP (:20128)           ▼ TCP Connection Pool (aiomysql)
┌──────────────────────────────┐ ┌──────────────────────────────┐
│     AI Inference Gateway     │ │      Persistence Layer       │
│  9Router Proxy               │ │  MariaDB 10.x                │
│  Model: ag/gemini-3.7-flash  │ │  - Smart Task Cache (<20ms)  │
│  Fallback: Static Templates  │ │  - Tasks & Subtasks DB       │
└──────────────────────────────┘ └──────────────────────────────┘

  • Framework: React 18 + Vite 5
  • Styling: Tailwind CSS 3.4
  • State & Storage: LocalStorage + IndexedDB (kilastugas_offline_db)
  • PWA & Offline: Service Worker, Web Push Manager, Background Sync Batch
  • Timer Engine: Persistent Timestamp-based Pomodoro (Date.now() drift-free) + Web Audio API + Notifications API
  • Export Formats: Google Calendar Web Intent + RFC 5545 iCalendar (.ics)
  • Runtime & Web Framework: Python + FastAPI (Asynchronous ASGI)
  • Validation: Pydantic v2
  • Database Engine: MariaDB 10.x via aiomysql connection pool
  • File Parser: pypdf & python-docx (In-memory parser, tanpa simpan ke disk VPS)
  • Deployment: Nginx reverse proxy ke Uvicorn daemon (Systemd)
  • Tri-Engine Decomposition:
  • Smart Cache (<20ms): Cek kemiripan task serupa di DB; hindari re-inference token AI.
  • AI Inference (<2s): Ekstrak instruksi & hasilkan langkah aksi via gateway 9Router.
  • Fallback Templates: 5 template akademik built-in (Laporan Lab, Makalah, Coding, Presentasi, Review Jurnal) saat offline/limit.
  • In-Memory Document Parser (/api/extract-syllabus):
  • Upload PDF/DOCX silabus tugas, diekstrak di RAM tanpa jejak file di server.
  • Dynamic Micro-Pacing & Rebalancer (/api/tasks/{id}/rebalance):
  • Hitung status: On Track, Behind Schedule, Overdue.
  • Distribusi ulang sisa sub-tugas secara adaptif jika mahasiswa tertinggal deadline.
  • Offline-First PWA Sync (/api/tasks/sync-batch):
  • Tetap berfungsi offline dengan IndexedDB, sinkronisasi otomatis batch saat online.
  • Persistent Focus Engine (Pomodoro):
  • Floating pill timer antar-halaman, siklus 25/5 menit, title sync, chime sound.
  • Social Task Blueprint (/p/:id):
  • Tautan publik tugas untuk diimpor rekan sekelas dalam 1 klik tanpa login.
MethodEndpointDescription
POST/api/breakdownEksekusi AI/Cache/Fallback breakdown tugas
POST/api/extract-syllabusParsing in-memory berkas PDF / DOCX tugas
POST/api/tasksSimpan tugas & sub-tugas ke MariaDB
GET/api/tasks/{task_id}Ambil detail tugas beserta sub-tugas
PATCH/api/tasks/{task_id}/subtasks/{subtask_id}Update status centang sub-tugas
POST/api/tasks/{task_id}/rebalanceHitung ulang pacing jika tertinggal jadwal
POST/api/tasks/sync-batchSinkronisasi batch offline IndexedDB
GET/api/public/{share_slug}Ambil template blueprint tugas publik

Related projects

Panggih Sedulur: Kuisioner Minat Bakat UKM Unsoed

Panggih Sedulur: Kuisioner Minat Bakat UKM Unsoed

Platform kuisioner interaktif untuk UKM Unsoed dengan sistem scoring 5 kategori utama, branching questions, dan rekomendasi personalisasi.
Website Resmi BEM Universitas Jenderal Soedirman

Website Resmi BEM Universitas Jenderal Soedirman

Pengembangan dan pengelolaan website resmi Badan Eksekutif Mahasiswa Universitas Jenderal Soedirman (BEM-U) menggunakan WordPress, Elementor, dan custom inject HTML.
URL Shortener BEM Unsoed Edition

URL Shortener BEM Unsoed Edition

Pengembangan aplikasi pemendek URL profesional dengan antarmuka Glassmorphism untuk kebutuhan publikasi BEM Universitas Jenderal Soedirman.
GrowTo: Platform Direktori Delivery Order Purwokerto

GrowTo: Platform Direktori Delivery Order Purwokerto

Pengembangan platform informasi layanan delivery order untuk area Purwokerto sebagai Final Project program Soedirman Digital School 2025.
NiceGuy Sound Board

NiceGuy Sound Board

Buat para streamer laper yang pengen naik kereta Bigmo via Soundboard telah kami sediakan aplikasi yang sudah sepaket dengan sound2 yang sering digunakan oleh rektor kita BIGMO.

Edu-Tajwid: Platform Edukasi Digital Ilmu Tajwid

TajwidApps adalah platform edukasi berbasis web yang dirancang untuk membantu pengguna mempelajari hukum bacaan Al-Qur'an (Tajwid), makharijul huruf, dan sifat huruf secara fasih dan tartil.

Transformasi Digital Rabiha Tour & Travel: Branding dan Pengembangan Website

Pengembangan identitas visual, desain konten media sosial menggunakan CorelDRAW & Photoshop, serta pembangunan website company profile menggunakan WordPress Elementor.
Najmi Calculator: Kalkulator Interaktif dengan Fitur Real-Time

Najmi Calculator: Kalkulator Interaktif dengan Fitur Real-Time

Pengembangan aplikasi kalkulator responsif menggunakan Vanilla JavaScript dengan fitur Dark Mode dan sistem Error Handling kustom.