

ozelokul.com
SaaSÖzel okul, kolej ve üniversite keşif platformu; veli merkezi ve okul panelleriyle.
SEKTÖR
Okul SaaS’ı, kayıt sitesi, yapay zekâ öğretmen ve öğrenci uygulamaları: eğitim projelerimizden yetki modeli, KVKK kayıtları ve test yaklaşımı.
KISA CEVAP
AMG Yazılım eğitim alanında okul keşif ve yönetim SaaS’ı, kayıt odaklı okul sitesi, yapay zekâ öğretmen ve öğrenci uygulamaları geliştirdi. En kapsamlısı ozelokul.com: 139 migration, her tabloda satır güvenliği, 3 plan ve 56 izin anahtarlı bir yetki motoru, 81 il ve 973 ilçe verisi. 80 sunucu mutasyonu canlı sömürü denemesiyle denetlendi ve bulunan dört açık kapatıldı.
Türkiye’de özel okulların çoğu tek bina değil, birden çok kampüsü olan bir kurum. ozelokul.com’da bu yüzden kiracıyı marka (kurum) olarak kurduk, kampüsü ona yabancı anahtarla bağlı bir alt kapsam yaptık. Kişi ile kurum arasındaki bağ üyelik tablosunda duruyor; kampüs kapsamı ayrı bir tabloda.
Roller enum değil, izin anahtarı. Devraldığımız ilk şemada super_admin|parent_admin|school_admin enum’u ve okulu metinle tutan bir kolon vardı; ikisi de kaldırıldı, çünkü yeni bir rol eklemek migration gerektirmemeli. Bugün 7 rol şablonu (kurum yöneticisi, kampüs müdürü, kayıt ofisi, pazarlama, muhasebe, danışma, süper admin) ve 56 izin anahtarı var.
Bütün kontrol tek bir fonksiyonda toplanıyor: private.has_perm(user, perm, brand, campus). Sıra önemli: silinmiş hesap her zaman reddediliyor, ardından marka ve kampüs tutarlılığı, aktif üyelik, izin listesi ve kampüs kapsamı kontrol ediliyor. Abonelik de aynı soruyla karşılaşıyor; plan markaya ya da kampüse satılabiliyor, çünkü subscriptions tablosu ikisini de destekliyor.
ozelokul.com velinin okul seçimi ve okulun operasyonu üzerine kurulu. Okul, kolej ve üniversite profilleri, boş kontenjanlar, burs sınavı takvimi, erken kayıt ve indirimler ile metodolojisi açık bir fiyat endeksi herkese açık tarafta. Veli merkezinde alarm, anket, eşleştirme, maliyet hesabı ve yolculuk ekranları var. Okulun tarafında 22 bölümlü bir panel, okul başvurusu → belge → onay → kurum açma akışı, moderasyon ve veli CRM’i duruyor.
Kapsamın sınırı da yazılı. Bu üründe öğretmenler kullanıcı değil; tasarımda öğretmen girişi olmadığı için öğretmen kaydı bir içerik satırı. Yoklama ya da not modülü yok. İleride öğretmen paneli istenirse diye ilgili kolon şimdiden boş bırakılabilir duruyor, ama şemayı hayali modüllerle şişirmedik.
Sizin ihtiyacınız ders programı, yoklama veya not girişi gibi okul içi işler ise bunları keşif aşamasında ayrı iş paketleri olarak tanımlarız. Kapsamı baştan dürüst çizmek, sonradan sökülmesi zor tabloları önlüyor.
ozelokul.com’da KVKK bir çerez bandı değil, veritabanında izlenebilir bir zincir. Her form onayında consent_records tablosuna kullanıcı ya da anonim oturum kimliği, onaylanan metnin kimliği, bağlam (teklif, randevu, başvuru, bülten gibi), zaman ve geri alma zamanı yazılıyor. Bir check kısıtı kaydın ya kullanıcıya ya da anonim oturuma bağlı olmasını zorunlu kılıyor.
Yasal metinler sürümlü. Bir doğrulama turunda yöneticinin yayınlanmış metni yerinde değiştirebildiği görüldü; bu, eski onayların sessizce başka bir içeriğe işaret etmesi demekti. Şimdi yayınlanmış metin kimse tarafından değiştirilemiyor, yalnız yeni sürüm yayınlanabiliyor.
Hesap silindiğinde satırlar silinmiyor, kişisel alanlar boşaltılıyor: veli profilinde telefon ve semt, çocuk kaydında ad ve özel gereksinim notu temizleniyor ve talep kaydına dokunulan 12 tablonun adı yazılıyor. Okulun veli teklif havuzunu görmesi gerekiyor ama iletişim bilgisini görmemesi gerekiyor; bunu politika değil görünüm çözüyor ve iletişim kolonları veli izin verene kadar boş dönüyor. Bu bölüm hukuki görüş değil, yazılımın ne yaptığını anlatıyor.
Arama: Postgres’in ilike karşılaştırması Türkçe karakterleri çözmüyor. kadikoy aramasında 0, kadıköy aramasında 1 sonuç vardı; aksansız yazan veli hiçbir şey bulamıyor ve hata da görmüyordu. Tetikleyiciyle dolan normalize bir arama kolonu ve trigram indeksi eklendi, arama terimi de aynı kurallarla normalize ediliyor.
PDF: jsPDF’in yerleşik Helvetica fontunda ı, İ, ğ, Ğ, ş ve Ş yok. Roboto, Türkçe karakter aralıklarına indirgenip stil başına 515 KB’tan 39 KB’a düşürüldü ve gömüldü; kütüphane yalnız indirme düğmesine basılınca yükleniyor.
Konum ve taksonomi: 81 il ve 973 ilçe metin değil yabancı anahtar olarak seed ediliyor; 411 terimlik taksonomiye yeni terim yalnız platform panelinden ekleniyor. Listede olmayan bir etiket yayını Türkçe bir hatayla durduruyor.
Ödeme: müşteri kararıyla bir ödeme sağlayıcısı yok. Akış havale/EFT üzerine kurulu; okul ödemeyi panelden bildiriyor, yönetici onaylayınca fatura, abonelik ve denetim kaydı tek işlemde güncelleniyor. Veli bildirim kuyruğu kanaldan bağımsız; SMS ya da WhatsApp sağlayıcısı seçilmediyse kayıt kuyrukta bekliyor.
ozelokul.com’un müşterisi elinde tasarımı bitmiş ama tamamen sahte veriyle çalışan, yaklaşık 53 rota ve 50 bin satırlık bir arayüzle geldi. Beklenti tek piksele dokunmadan altına üretim kalitesinde bir backend kurmaktı. Mock verinin her alanı önce şemaya eşlendi, sonra seed migration’ı olarak veritabanına aktarıldı; işin tamamı 4 ay sürdü.
Yönetim paneli üç katman: elle yazılmış iş akışı ekranları, herhangi bir okulun paneline vekâleten girme ve şemadan üretilen bir veri tarayıcı. Sonuncusu bir sorunu çözdü: yöneticinin yetkisi vardı ama 149 tablonun çoğunun ekranı yoktu. Yeni bir kolon eklendiğinde ekran kendiliğinden güncelleniyor.
Denetim iki seviyede. Veritabanında 33 pgTAP dosyasında 560 iddia anonim okumayı, plan farkını, kampüs kapsamını ve maskelemeyi sınıyor; testin hangi rolle koştuğu da testin içinde doğrulanıyor. Sunucu tarafında 80 mutasyon ucu bir kapı haritasına eşlendi ve 30’u gerçek JWT’lerle canlı denendi. Dört bulgu sömürüldü, aralarında e-postaya bağlı olmayan davet token’ı vardı; hepsi kod ve migration tarafında kapatıldı.
Sora Okulları’nın eski sitesinde bilgi dağınıktı ve kayıt formu sayfanın en altında duruyordu. Veli formu doldurmadan önce okulu tanımak istiyor; okulun da anlatmak istediği bir yöntemi (Sora Kaizen) ve birden fazla şubesi vardı.
İçeriği velinin gerçekten sorduğu sıraya göre dizdik: hakkımızda, Sora Kaizen metodu, kampüs ortamı, şubeler, veliler için, kariyer, yatırımcı, iş ortakları ve blog ayrı sayfalar. Kayıt çağrısı her bölümün sonunda tekrar ediyor, böylece forma ulaşmak tek dokunuş mesafesinde.
Teknik taraf sade tutuldu. Site Next.js App Router ile statik üretiliyor ve Vercel’de yayında; içerik tek bir veri dosyasında, şubeler ve iletişim bilgileri oradan güncelleniyor. Yerel arama için sayfa başlıkları ve açıklamaları şube ve semt bazında yazıldı. Proje 5 hafta sürdü ve soraokullari.com yayında.
Bu örnek bir şeyi gösteriyor: her eğitim projesi SaaS değil. Kayıt getirmesi beklenen bir okul sitesinde iş, veritabanından çok içerik sırası ve tekrar eden çağrıyla çözülüyor.
Sorudaş, cevabı değil çözüm yolunu anlatan bir yapay zekâ öğretmen. Sınav hazırlığında modelin çözümü yanlışsa öğrencinin bunu fark etme yolu yok; bu yüzden güven kapısı domain katmanında saf bir fonksiyon ve doğrulanmamış çözüm öğretilmiyor. Her model çıktısı Zod şemasından geçiyor, prompt’lar sürümlü bir kayıt defterinde, ayrı bir math-check paketi çözümü altın setle denetliyor. architecture-guard 12 kasıtlı ihlalle kuralın çalıştığını test ediyor. Monorepo öğrenci, öğretmen, kurum, admin ve mobil uygulamalarını taşıyor; veli paneli, kota kapısı ve silme hakkı canlı Supabase’te doğrulandı.
UniApp üniversite öğrencileri için bir iOS uygulaması: etkinlik takvimi, topluluklar ve içerik keşfi öğrencinin seçtiği ilgi alanlarına göre süzülüyor, herkes aynı akışı görmüyor.
Lilly & Leo çocuklar için bir hikâye uygulaması. Her bölümün sonunda okunanı pekiştiren kısa bir test, günlük görevler ve koleksiyon var. Arayüzde büyük dokunma alanları ve sınırlı gezinme kullanıldı, dış bağlantı yok; çocuk güvenliği tasarımda önde tutuldu.
Bu modüller ihtiyaçsa keşifte ayrı iş paketi olarak tanımlanır. ozelokul.com’da bilerek yoklama ve not modülü yok, çünkü ürün okul tanıtımı, veli talepleri ve okul operasyonu üzerine kurulu ve tasarımda öğretmen girişi bulunmuyor. Öğretmen paneli ileride istenirse diye ilgili kolon şimdiden boş bırakılabilir durumda; öğretmen girişi bu kolondan başlayarak eklenebiliyor.
Kiracı kurumdur, kampüs onun içindeki kapsamdır. Kullanıcıya rol şablonu verilir, gerekirse sekme bazında ince ayar yapılır ve yetki kampüs kapsamıyla kesişir. ozelokul.com’da üyelik ve kapsam tek işlemde yazılıyor; aksi halde arada kapsam satırı olmadığı için üyelik kısa süreliğine bütün kampüslere yayılıyordu. Kimse kendi kapsamı dışına ya da kendinde olmayan bir izni veremiyor.
Veritabanında. ozelokul.com’da plan bir kod koşulu değil, plan_features tablosundaki satırlar: galeri fotoğraf sınırı Temel planda 5, Büyüme planında 40. Herkese açık profilde bir bölümün görünüp görünmeyeceğine tek bir fonksiyon karar veriyor ve kilitli bölüm sorguda hiç dönmüyor. Ön yüzde gizlemek yetmez, çünkü gizlenen veri yine de tarayıcıya gelmiş olur.
Evet. ozelokul.com’da müşteri kararıyla ödeme sağlayıcısı kullanılmadı ve akış havale/EFT üzerine kuruldu. Platform fatura kesiyor, okul ödemeyi kendi panelinden bildiriyor, yönetici onayladığında fatura ödendi olarak işaretleniyor, abonelik açılıyor ve denetim kaydı yazılıyor; üçü tek işlemde. Kartla ödeme gerekiyorsa sağlayıcı seçimi keşifte yapılır ve kapsama eklenir.
ozelokul.com’da ilk sürümde bulamıyordu: kadikoy aramasında 0, kadıköy aramasında 1 sonuç vardı ve kullanıcı hata da görmüyordu. Tetikleyiciyle dolan normalize bir arama kolonu ve trigram indeksi eklendi; arama terimi de aynı kurallarla normalize ediliyor. Normalizasyonu sorgu içinde yapmak indeksi devre dışı bırakacağı için kolon yaklaşımı seçildi.
Sorudaş’ta doğrulanmamış çözüm öğrenciye gösterilmiyor. Güven kapısı domain katmanında saf bir fonksiyon; her model çıktısı Zod şemasından geçiyor ve ayrı bir math-check paketi çözümü altın setle denetliyor. Kapıyı atlamak mimari kuralları ihlal ediyor ve bu kural 12 kasıtlı ihlalle test ediliyor. Her dış servisin sahte adaptörü olduğu için sistem API anahtarı olmadan da çalışıyor.
Size. Alan adı, sunucu, veritabanı ve servis hesapları sizin adınıza açılır. Teslimde kaynak kodun tamamını, tasarım dosyalarını ve tüm erişimleri size devrederiz.
Hayır. Kullanıcı ekranlarını ve yönetim paneli ekranlarını projenize özel olarak tasarlayıp sıfırdan geliştiririz. Böylece panel, sizin iş akışınıza göre çalışır.
İLGİLİ STÜDYO NOTLARI


Özel okul, kolej ve üniversite keşif platformu; veli merkezi ve okul panelleriyle.


Okul kurumsal sitesi ve kayıt akışı.


Cevabı değil, çözüm yolunu anlatan yapay zekâ öğretmen.


Üniversite öğrencilerine özel sosyal ve akademik platform.


Çocuklar için eğitici hikâye ve öğrenme uygulaması.
Bir tanışma görüşmesiyle başlarız. Kapsamı ve takvimi birlikte netleştirir, size yazılı bir teklif göndeririz.
hello@amgsoftwarestudio.com