Dört ayrı programla yürüyen eğitim merkezini tek sisteme almak
- Müşteri
- İsim paylaşılmıyor
- Sektör
- Sürücü kursu ve mesleki yeterlilik eğitimi
- Yıl
- 2026
Problem
Sürücü kursu, SRC, psikoteknik ve ADR eğitimleri ayrı ayrı takip ediliyordu; aynı aday her modülde yeniden kaydediliyor, ödeme bilgisi panellere göre farklı görünüyordu.
Yaklaşım
Önce para akışını tek gerçeğe bağladım, sonra modülleri o gerçeğin üzerine kurdum. Kayıt olayı ile parasal işlem birbirinden ayrıldı.
Mimari
- Çok kiracılı yapı — her kurum izole, modüller ayrı ayrı lisanslanabiliyor
- Tek para gerçeği: tüm tahsilat ve borçlandırma tek işlem tablosunda
- Kayıt olayı parasal işlemden ayrı tutuldu — aday birden fazla modüle yazılabiliyor
- Mutabakat uç noktası: panel bakiyeleri ile işlem toplamı arasındaki farkı sıfırlıyor
- MEBBİS aktarımı: alan eşleştirmeli otomatik doldurma, kaydetme adımı insanda
- Android uygulaması (Capacitor) — sahada çalışan personel için
Sonuç
| Ölçüt | Önce | Sonra |
|---|---|---|
| Aday kaydı | Her modülde ayrı kayıt | Tek aday, çoklu modül |
| Ödeme bilgisi | Panellere göre farklı | Tek kaynak + mutabakat raporu |
| MEBBİS veri girişi | Bir mesai saati, her alan elle | Otomatik doldurma, onay insanda |
| Sistem durumu | Dört ayrı program | Üretimde, günlük kullanımda |
Teknolojiler
- TypeScript
- React
- Express
- PostgreSQL
- Drizzle ORM
- Docker
- Capacitor
İlişkiyi baştan söyleyeyim
Bu proje bağımsız bir müşteri işi değil: iş ortağımın hissedar olduğu bir firma talep etti. Bunu saklamıyorum, çünkü bir vaka çalışmasının işlevi yalnızca “bunu yapabiliyorum” demek değil, okuyanın kendi durumuyla kıyaslayabilmesidir.
Yapılan iş ve sistemin bugün üretimde çalışıyor olması bundan etkilenmiyor.
Başlangıç: ERP istendi
Talep bir ERP’ydi. Ama teşhis ettiğim sorun kaynak planlaması değildi — aynı kişinin dört ayrı yerde farklı kayıtlarla var olmasıydı. Bir aday hem SRC hem psikoteknik alıyorsa iki kez kaydediliyor, ödemesi iki ayrı yerde takip ediliyor, ve iki panel farklı bakiye gösterebiliyordu.
Hazır bir ERP bu sorunu çözmezdi; kendi kayıt modelini dayatıp aynı kopukluğu başka bir biçimde üretirdi.
Kritik karar: önce para, sonra modüller
Projenin dönüm noktası şu ayrımdı: kayıt bir olaydır, tahsilat başka bir olaydır.
Başlangıçta ikisi iç içeydi ve tutarsızlığın kaynağı buydu. Tüm parasal hareketleri tek bir işlem tablosuna taşıdım; kayıt kaydı ayrı tutuldu. Böylece bir aday birden fazla modüle yazılabiliyor, ödemesi tek yerden görülüyor.
Buna bir de mutabakat uç noktası ekledim: panellerde görünen bakiyelerle işlem toplamı arasındaki farkı hesaplıyor. Fark sıfır değilse bir yerde hata var demektir ve kullanıcı fark etmeden önce ben görüyorum.
MEBBİS: bilerek otomatikleştirmediğim yer
Aday bilgilerinin MEBBİS’e girilmesi en çok zaman alan işti. Tam otomasyon denedim — sistemin captcha’sı buna uygun değildi.
Bunun yerine alan eşleştirmeli otomatik doldurma yaptım: bilgiler hazırlanıyor, forma yerleştiriliyor, kaydet düğmesine hâlâ insan basıyor. Resmî bir sisteme veri yazan adımı otomatikleştirmemek bilinçli bir tercihti.
Güvenlik: canlıdayken bulunan iki kritik açık
Sistem yayına alındıktan sonra kapsamlı bir güvenlik denetimi yaptım. İki kritik bulgu çıktı ve ikisi de o sırada canlıydı:
- Dosya yükleme ve indirme uçları kimlik doğrulaması istemiyordu ve dizin dışına çıkışa açıktı — aday belgeleri korumasızdı.
- Yetkilendirmenin tek geçtiği fonksiyon rol kontrolü yapmıyordu; öğrenci hesabı kurumun arka ofisine erişebiliyordu.
İkisi de düzeltildi. Bunu vaka çalışmasına yazıyorum çünkü açık bulunmayan sistem, denetlenmemiş sistemdir. Kendi yazdığım kodda kritik açık çıktı; buldum ve kapattım.
Bugün
Sistem üretimde ve günlük kullanımda. Kullanıcılardan bildirim geldikçe düzeltiyoruz. Son dönemde eklenenlerin çoğu sahadan gelen geri bildirimden çıktı — örneğin mobil arayüz, “panel web sitesi gibi görünüyor, randevu planlamak zor” geri bildirimi üzerine baştan tasarlandı.