Tech Stack

Daftar teknologi dan versi minimum yang dipakai yellow-bank-soal, plus alasan pemilihan.

Tech Stack

Daftar lengkap dependency inti dan versi minimumnya. Sumber kebenaran: backend/requirements.txt.

Backend

TeknologiVersi MinimumKegunaan
Python3.10+Runtime utama (butuh match statement & type hints modern)
FastAPI0.104.1+Web framework, REST API
Uvicorn0.24.0+ ([standard])ASGI server
python-multipart0.0.6+Parsing form upload (Excel import)

Database & ORM

TeknologiVersi MinimumKegunaan
PostgreSQL14+Database utama
SQLAlchemy2.0.23+ORM async (AsyncSession)
asyncpg0.29.0+Driver PostgreSQL async
Alembic1.13.0+Migrasi schema

Validasi & Konfigurasi

TeknologiVersi MinimumKegunaan
Pydantic2.5.0+Validasi schema (v2 — bukan v1)
pydantic-settings2.1.0+Manajemen env vars & config
python-dotenv1.0.0+Load .env (fallback)

Data & Matematika

TeknologiVersi MinimumKegunaan
NumPy1.26.2+Operasi matriks (kalibrasi IRT joint MLE)
SciPy1.11.4+Optimasi (scipy.optimize) untuk MLE theta
pandas2.1.4+Manipulasi data untuk laporan & impor Excel
openpyxl3.1.2+Baca/tulis file .xlsx klien

AI & HTTP Eksternal

TeknologiVersi MinimumKegunaan
openai1.6.1+SDK (dipakai untuk OpenRouter — kompatibel API)
httpx0.26.0+HTTP client async untuk panggilan eksternal

Background Job

TeknologiVersi MinimumKegunaan
Celery5.3.6+Task queue untuk job async (kalibrasi IRT, AI batch)
Redis5.0.1+ (server 6+)Broker Celery + cache

Testing

TeknologiVersi MinimumKegunaan
pytest7.4.3+Test runner
pytest-asyncio0.21.1+Test untuk kode async

Admin Panel

TeknologiVersi MinimumKegunaan
fastapi-admin1.0.0+Admin UI dasar untuk CRUD model

Infrastruktur & Deploy

TeknologiKegunaan
NginxReverse proxy + SSL termination
aaPanel + Python ManagerServer management (rekomendasi production)
Docker ComposeAlternatif deployment (lihat docker-compose.yml)

Integrasi Eksternal

LayananKegunaanStatus
WordPress + Sejoli TryoutAutentikasi siswa, pembelian, quota attemptPlanned (lihat Integrasi)
OpenRouter APIAI question generation (Qwen 2.5 32B, Mistral Small, Llama 3.3 70B)Aktif

Catatan Keputusan Teknologi

Beberapa keputusan desain yang patut diketahui kontributor:

Kenapa SQLAlchemy 2.0 async (bukan sync)?

CAT dan AI generation butuh I/O paralel (DB + HTTP ke OpenRouter). Async memungkinkan satu worker menangani banyak request concurrent tanpa blocking.

Kenapa Pydantic v2 (bukan v1)?

Performa 5-50x lebih cepat (Rust core) + dukungan JSON Schema yang lebih baik untuk OpenAPI docs otomatis FastAPI.

Kenapa Celery, bukan BackgroundTasks FastAPI?

BackgroundTasks FastAPI tidak persistent — kalau server restart, job hilang. Kalibrasi IRT bisa makan menit, perlu reliability queue.

Kenapa PostgreSQL (bukan SQLite/MongoDB)?

  • Constraint matematika butuh (mis. irt_b BETWEEN -3 AND 3) — PostgreSQL CHECK CONSTRAINT andal.
  • Transaksi multi-tabel atomik saat update TryoutStats + Session + UserAnswer.
  • Full-text search built-in untuk admin search siswa.

Cek Versi Terinstal

Untuk melihat versi aktual yang terpasang di environment Anda:

bash
cd ../yellow-bank-soal
source venv/bin/activate
pip freeze | grep -iE "fastapi|sqlalchemy|pydantic|celery"

Bacaan Lanjutan

Last updated Jul 25, 2026