# academia.sh

> academia.sh, bir dersin teorisini sahadan gelen gerçek bir problemden ayırmayan, dersleri kayıt olmadan ücretsiz okunan bir öğrenme platformudur. Müfredat-kurs-konu-ders hiyerarşisiyle sunulur, ilerleme ve quiz teoriyle problemi ayırmadan ders bazında ölçülür, tam metin arama Postgres üzerinde çalışır; kurs sonu sınavı, sertifika ve çalışma asistanı Pro katmanda. İçerik ayrı bir GitHub reposunda tutulur; ilk alan bilgisayar bilimleri, model baştan çok disiplinli tasarlandı.

- Rolüm: Founder & Author
- Sınıf: Yan Yayınlar
- Durum: Devam ediyor
- Başlangıç: 2026-09-23
- Teknolojiler: Laravel, PHP, Livewire, Blade, Tailwind, PostgreSQL, Redis, Filament, Pest
- Yetenekler: Content Strategy, Curriculum Design, Full-Text Search, Database Design, Technical Writing, Static Content Architecture
- Web sitesi: https://academia.sh
- Kaynak: https://muhammetsafak.com/tr/portfolyo/academia/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
academia.sh, bir dersin teorisini sahadan gelen gerçek bir problemden ayırmayan; müfredat-kurs-konu-ders hiyerarşisiyle sunulan, dersleri kayıt olmadan ücretsiz okunan bir öğrenme platformudur. Kurs sonu sınavı, doğrulanabilir sertifika ve çalışma asistanı Pro katmanda. Sahadan gelen problem ayrı bir alıştırma değil, dersin kendi metninde teorinin devamı olarak duruyor — bu yüzden ilerleme yüzdesi ve quiz, teori ile problemi ayırmadan "yayınlanmış aktif ders" bazında ölçülüyor. İlk içerik bilgisayar bilimleri, ama model baştan çok disiplinli tasarlandı: yeni bir alan eklemek şema değişikliği değil, ders yazmak demek.

Yığını Laravel 13, Livewire ve Tailwind üzerine, tam metin aramayı PostgreSQL'in kendi motoruna (`ts_rank_cd` sıralama, `ts_headline` parçacık) kurdum; `search_vector` bir generated column olamıyor çünkü `to_tsvector`'ın sözlük argümanını `regconfig`'e çeviren cast immutable sayılmıyor, bu yüzden vektörü bir trigger üretiyor. İçerik uygulamanın veritabanında doğmuyor, ayrı bir GitHub reposunda duruyor ve platform oradan besleniyor — katkıya açılabilecek tek biçim bu. Sertifikada `holder_name` ve `course_title` düzenleme anında donduruluyor; bir ders işareti geri alınsa bile basılmış belge geçerliliğini koruyor.
