01Sorun
Koçluk işletmeleri işini bir video platformu, bir mesajlaşma grubu, bir Excel dosyası ve ayrı bir takvimden kuruyor. Bu platform hepsini aynı kayıtlarda birleştiriyor.
Dağınık araçlar yüzünden öğrenci sırada ne olduğunu takip edemiyor; öğretmen de zamanını ders anlatmak yerine sınav sonucu ve devam bilgisi toplamakla geçiriyor.
02Yaklaşım
Tek bir rol modeli üzerine kurulu tek sistem: öğrenci, öğretmen, yönetici, süper yönetici. Ders içeriği, sınavlar, takvim ve raporlama aynı kayıtları paylaşıyor; böylece bir öğrencinin gelişimi elle çıkarılan bir özet değil, bir sorgu oluyor.
03Çözüm
React ön yüzü olan bir Flask API. Dersler konu ve içerik barındırıyor, videolar ilerleme takibiyle gömülüyor, sınavlar süreli ve otomatik puanlanıyor; performans raporları da aynı veriden üretiliyor.
- Beş rol
Öğrenci, veli, öğretmen, kurum yöneticisi, süper yönetici; JWT ile kimlik, uç nokta bazında yetki.
- Ders ve içerik
Ders, konu ve içerik yönetimi; videolar öğrenci bazında ilerleme takibiyle.
- Soru bankası ve sınav
Çoktan seçmeli, doğru/yanlış ve açık uçlu sorulardan süreli sınav; puanlama otomatik, birden çok deneme hakkı tanınabiliyor.
- Canlı ders ve takvim
Zoom, Google Meet ve Teams entegrasyonu; ortak takvim.
- Gelişim raporları
Öğrenci performansı, raporlama ve analiz, aynı kayıtlardan.
- Yapay zekâ çalışma asistanı
Öğrencinin sorusuna akış hâlinde cevap veren asistan.
04Nasıl kurdum
Bir API, bir ön yüz, otomatik yayın.
- Flask 3 ve SQLAlchemy
- API sürüm, servis, model ve görev katmanlarına ayrılmış; kimlik Flask-JWT-Extended ile.
- React ve TypeScript
- Vite ve Tailwind CSS; durum Zustand'da, sunucu verisi TanStack Query'de.
- SQLite'tan PostgreSQL'e
- Geliştirmede SQLite, canlıda PostgreSQL, Alembic göçleri. Arka plan işleri Celery işçilerinde.
- Docker ve GitHub Actions
- API ve ön yüz için ayrı imajlar; CI, kod kalitesi ve dağıtım için ayrı hatlar.
05Zor kısımlar
- Sınav sunucuda
Süre, deneme sınırı ve puanlamanın tamamı sunucu tarafında zorlanmak zorundaydı, çünkü tarayıcıda denetlenen her şey aşılabilir.
- Akan cevaplar
Yapay zekâ cevaplarını istek döngüsünü kilitlemeden tarayıcıya akıtmak, düz istek-cevap yerine Server-Sent Events gerektirdi.
- Beş rol, tek kural
Aynı uç noktaları paylaşan beş rol, yetkilendirmenin her işleyicide tekrarlanan bir koşul değil, tutarlı biçimde uygulanan tek bir dekoratör olmasını zorunlu kıldı.
06Bugün
Otomatik CI, kod kalitesi ve dağıtım hatlarıyla yayında. Benim payım sunucu ve yayınlama tarafı; uygulamanın kendisini ekip geliştirdi. Müşteriye ait hiçbir metrik ya da marka burada yayımlanmıyor.