Lompat ke kontenSkip to content
Lihat Curriculum Vitae
Semua proyekAll projects

Okt – Des 2026Oct – Dec 2026 · Back-end developerBack-end developer

Loopa — Smart Study Assistant

Aplikasi belajar dengan timer Pomodoro yang memakai webcam untuk mendeteksi tanda kantuk dan menyarankan jeda.A Pomodoro study app that uses the webcam to detect signs of drowsiness and suggest breaks.

Next.js · FastAPI · Python · YOLO11 · Supabase

DokumentasiDocumentation

Tangkapan layar dari situs yang sedang berjalan, diambil 4 November 2026.Screenshots of the live site, taken on 4 November 2026.

Beranda mode tamu, dibuka lewat Continue without an account
Beranda mode tamu, dibuka lewat Continue without an accountGuest home, opened via Continue without an account
Riwayat sesi belajar
Riwayat sesi belajarStudy session history
Statistik menit belajar per hari
Statistik menit belajar per hariStudy minutes per day
Pengaturan sesi fokus sebelum kalibrasi kamera
Pengaturan sesi fokus sebelum kalibrasi kameraFocus session setup before camera calibration
Tampilan di ponsel
Tampilan di ponselMobile view

MasalahProblem

Orang yang belajar dengan teknik Pomodoro sering tidak sadar saat mulai mengantuk. Loopa membaca webcam, menandai tanda kantuk, dan menyarankan jeda.People studying with the Pomodoro technique often don't notice when they start getting drowsy. Loopa reads the webcam, flags signs of drowsiness, and suggests a break.

Peran sayaMy role

Back-end developer. Saya membangun API sesi (FastAPI di Railway), autentikasi Supabase, dan melatih serta mengevaluasi model deteksinya.Back-end developer. I built the session API (FastAPI on Railway) and Supabase auth, and trained and evaluated the detection model.

Keputusan teknisTechnical decisions

Memeriksa dataset sebelum memercayai angkaAuditing the dataset before trusting the numbers

Saya mengaudit dataset kantukv2 dan menemukan 109 dari 192 gambar uji punya salinan hasil augmentasi di data latih. Split diulang per kelompok gambar sumber sehingga satu foto asli tidak pernah muncul di dua sisi.I audited the kantukv2 dataset and found that 109 of 192 test images had augmented copies in the training set. I re-split by source-image group so one original photo never appears on both sides.

Model kecil yang cukup cepat di CPUA small model that is fast enough on CPU

YOLO11n di-fine-tune pada 3.841 gambar dengan 6 kelas. Inferensi sekitar 52 ms per frame di CPU, sehingga backend tidak membutuhkan GPU.YOLO11n fine-tuned on 3,841 images with 6 classes. Inference takes about 52 ms per frame on CPU, so the backend needs no GPU.

Peringatan dihitung dari rangkaian frameAlerts come from a sequence of frames

Deteksi per frame dijadikan sinyal temporal (kedipan, menguap, mata tertutup) lalu diproses state machine peringatan dua tahap, bukan dari satu frame.Per-frame detections become temporal signals (blinks, yawns, closed eyes) processed by a two-stage alert state machine, never a single frame.

Tip AI tidak boleh jadi titik gagalAI tips must not be a point of failure

Saran istirahat dibuat oleh LLM. Bila LLM tidak tersedia, aplikasi memakai tip berbasis aturan sehingga sesi belajar tetap berjalan.Break suggestions come from an LLM. If the LLM is unavailable, the app falls back to rule-based tips so the session keeps running.

HasilResults

  • mAP50 0,959 pada 195 gambar uji statis setelah split ulang.mAP50 0.959 on 195 static test images after the re-split.
  • Sekitar 52 ms per frame di CPU.About 52 ms per frame on CPU.
  • Berjalan di produksi: frontend di Vercel, backend di Railway.Running in production: frontend on Vercel, backend on Railway.

Yang belum selesaiNot finished yet

  • Validasi memakai webcam langsung masih berjalan. Angka mAP50 berasal dari gambar uji statis dan belum mewakili kondisi webcam nyata.Live webcam validation is still in progress. The mAP50 figure comes from static test images and does not yet reflect real webcam conditions.
  • Login Google lewat Supabase belum diuji dengan akun sungguhan (per catatan proyek 30 Okt 2026).Google sign-in through Supabase has not been tested with a real account yet (per project notes, 30 Oct 2026).