Foto kode tulisan tanganmu โ Gemma 4 membaca โ menjalankan โ menjelaskan dalam bahasa ibumu
"Setiap anak Indonesia berhak belajar coding, tidak peduli di mana mereka tinggal."
๐ Quickstart ยท โจ Fitur ยท ๐๏ธ Arsitektur ยท ๐ Bahasa Daerah ยท ๐ก API ยท ๐งฌ Fine-tuning
Indonesia punya 8,5 juta anak SD di daerah dengan koneksi internet tidak stabil. Banyak dari mereka:
- ๐ Menulis kode di buku tulis โ tidak punya laptop atau komputer
- ๐ฃ๏ธ Berbicara bahasa daerah โ belum fasih Bahasa Indonesia teknis
- ๐ Belum lancar membaca โ untuk siswa kelas 1โ3 SD
- ๐จโ๐ซ Gurunya kewalahan โ 1 guru mengajar 30+ siswa dengan level berbeda
CodeBuddy hadir untuk mereka โ bukan untuk yang sudah punya segalanya.
|
Upload foto kode tulisan tangan โ Gemma 4 membacanya langsung tanpa library OCR terpisah. Mendukung foto buram, pencahayaan buruk, dan tulisan tidak rapi. |
Pipeline 4 tahap otomatis: Validasi Syntax โ Eksekusi โ Analisis Error โ Feedback AI. Bukan sekadar chatbot โ AI mengambil keputusan di setiap tahap. |
|
Anak rekam pertanyaan dengan suara โ AI jawab dengan suara natural Bahasa Indonesia via edge-tts. Untuk siswa yang belum lancar membaca atau menulis. |
AI menjelaskan dalam Bahasa Indonesia, Jawa Krama, Sunda, Minang, dan Batak Toba โ memanfaatkan kemampuan 140+ bahasa Gemma 4. |
|
Guru SD bisa pantau progress seluruh kelas sekaligus. Gemma 4 menganalisis pola error dan memberi rekomendasi pengajaran konkret. |
Berjalan sepenuhnya via Ollama di perangkat lokal. Data siswa tidak pernah keluar dari perangkat โ privasi terjaga, cocok untuk daerah tanpa internet. |
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Frontend (Gradio ยท port 7860) โ
โ ๐ธ Foto โ ๐ Tutor โ ๐ค Suara โ ๐จโ๐ซ Guru โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HTTP REST
โโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Backend (FastAPI ยท port 8000) โ
โ โ
โ /api/ocr/extract โโโถ GemmaVisionService โ
โ /api/agent/tutor โโโถ CodeBuddyAgent โ
โ /api/audio/ask โโโถ STT + LLM + TTS โ
โ /api/teacher/* โโโถ Dashboard + AI Insight โ
โ /api/code/execute โโโถ SafeCodeExecutor โ
โ /api/students/* โโโถ SQLAlchemy + SQLite โ
โโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ โ
โโโโโโโโโโโโผโโโโโโโโโโโ โโโโโโโโโโผโโโโโโโโโโโโโโโโ
โ Ollama โ โ RestrictedPython โ
โ gemma4:e4b โ โ Sandbox โ
โ โ
Vision โ โ โ
Timeout 5s โ
โ โ
Function Call โ โ โ
No import/file/net โ
โ โ
128K context โ โโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
140+ bahasa โ
โโโโโโโโโโโโโโโโโโโโโโโ
Gemma 4 mendukung 140+ bahasa. CodeBuddy menggunakannya untuk menjangkau pelajar di seluruh nusantara:
| Kode | Bahasa | Contoh Respons AI |
|---|---|---|
id |
๐ฎ๐ฉ Bahasa Indonesia | "Variabel 'x' belum didefinisikan. Pastikan sudah memberi nilai sebelum dipakai." |
jw |
โ Basa Jawa Krama | "Variabel 'x' dereng dipun-damel. Mangga dipun-damel rumiyin." |
su |
๐ธ Basa Sunda | "Variabel 'x' tacan didamel. Punten didamel heula sateuacanna dipakรฉ." |
min |
๐๏ธ Bahaso Minang | "Variabel 'x' alun ado. Tolong buek dulu sabalum dipakai." |
bbc |
โต Hata Batak Toba | "Variabel 'x' ndang adong. Uli hutona jolo paima dipakai." |
- Python 3.10+
- Ollama โ
brew install ollama(macOS) - RAM 10GB+ untuk
gemma4:e4bยท RAM 6GB+ untukgemma4:e2b
git clone https://github.com/adindamochamad/codebuddy.git
cd codebuddy/backend
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txtollama serve # jalankan service
ollama pull gemma4:e4b # ~5GB, sekali saja# dari folder backend/
uvicorn main:app --reload --port 8000
# Docs: http://localhost:8000/docscd ../frontend
python app.py
# Buka: http://localhost:7860docker compose up -d ollama
docker build -t codebuddy-backend .
docker run -p 8000:8000 -e OLLAMA_BASE_URL=http://host.docker.internal:11434 codebuddy-backendcodebuddy/
โโโ backend/
โ โโโ api/
โ โ โโโ routes.py # 16 endpoint utama
โ โ โโโ teacher.py # Mode Guru (dashboard + AI insight)
โ โ โโโ schemas.py # Pydantic request/response models
โ โโโ services/
โ โ โโโ llm_service.py # GemmaService + GemmaVisionService
โ โ โโโ agent_service.py # CodeBuddyAgent (4-stage workflow)
โ โ โโโ audio_service.py # TTS (edge-tts) + STT (faster-whisper)
โ โ โโโ code_executor.py # SafeCodeExecutor (RestrictedPython)
โ โ โโโ ocr_service.py # Gemma4 Vision + PaddleOCR fallback
โ โโโ models/
โ โ โโโ database.py # SQLAlchemy ORM (Student, Submission, Progress)
โ โ โโโ crud.py # Async CRUD operations
โ โโโ data/
โ โ โโโ finetune_dataset.json # 55 contoh fine-tuning Bahasa Indonesia
โ โ โโโ finetune_unsloth.ipynb # Notebook Colab siap pakai
โ โ โโโ exercises/manifest.json # 8 latihan Python
โ โโโ tests/ # 139 test (pytest)
โโโ frontend/
โ โโโ app.py # Gradio UI (6 tab)
โโโ docker-compose.yml
โโโ Dockerfile
โโโ STORY.md # Narasi & 3 persona pengguna
| Method | Endpoint | Deskripsi |
|---|---|---|
POST |
/api/ocr/extract |
๐ธ Gemma 4 Vision: foto โ kode Python |
POST |
/api/agent/tutor |
๐ค Sesi tutoring 4-stage + bahasa daerah |
POST |
/api/agent/hint |
๐ก Hint bertahap level 1โ3 |
POST |
/api/audio/ask |
๐ค Suara โ AI โ Suara (end-to-end) |
POST |
/api/audio/tts |
๐ Text-to-Speech Bahasa Indonesia |
POST |
/api/audio/stt |
๐๏ธ Speech-to-Text (Whisper offline) |
POST |
/api/code/execute |
โ๏ธ Eksekusi Python di sandbox aman |
POST |
/api/code/validate |
โ Validasi syntax tanpa eksekusi |
GET |
/api/teacher/dashboard |
๐ Dashboard kelas guru |
GET |
/api/teacher/insights |
๐ง AI insight untuk pengajaran |
POST |
/api/exercises/generate |
๐ฒ Generate latihan dengan Gemma 4 |
GET |
/api/languages/ |
๐ Daftar bahasa daerah yang didukung |
Dokumentasi interaktif:
http://localhost:8000/docs
Dataset 55 contoh tersedia untuk fine-tuning Gemma 4 khusus tutoring Bahasa Indonesia:
# Jalankan di Google Colab (GPU T4 gratis)
# File: backend/data/finetune_unsloth.ipynbDataset mencakup:
- 15 contoh syntax error (typo, indentasi, tanda kutip)
- 15 contoh runtime error (NameError, TypeError, dll.)
- 10 contoh logic error (off-by-one, infinite loop, dll.)
- 10 contoh code quality (penamaan variabel, DRY principle)
- 5 contoh koreksi OCR (0 vs O, l vs 1, dll.)
|
SD Larantuka, Flores
Internet hanya 2 jam/hari. Menulis kode di buku tulis. Foto pakai HP bekas โ CodeBuddy menjelaskan errornya. |
SD Pedalaman Sumba
Bahasa ibu Kambera, Bahasa Indonesia masih kaku. Pakai Mode Suara โ tanya dengan suara, dapat jawaban dengan suara. |
MI Karangasem, Bali
Mengajar 4 sekolah seminggu. Dashboard Guru menunjukkan siapa yang stuck dan AI memberi saran pengajaran konkret. |
cd backend
pytest tests/ -v # 139 passed, 3 skipped
pytest tests/ --cov=. --cov-report=term-missing # dengan coverage| Layer | Teknologi |
|---|---|
| LLM | Gemma 4 e4b via Ollama (Vision + Function Calling) |
| Backend | FastAPI, SQLAlchemy async, aiosqlite, Pydantic v2 |
| Sandbox | RestrictedPython, timeout via daemon thread |
| Audio | edge-tts (TTS), faster-whisper (STT offline) |
| Frontend | Gradio 6 |
| Database | SQLite (async) |
| Testing | pytest, pytest-asyncio, pytest-cov |
| Deployment | Docker, docker-compose |
Apache License 2.0 โ bebas digunakan, dimodifikasi, dan didistribusikan.
Dibuat untuk Google Gemma 4 Good Hackathon 2026
- Kategori utama: Future of Education
- Kategori kedua: Digital Equity & Inclusivity
- Special Track: Ollama Prize ยท Unsloth Prize