# academia.sh: teori ile sahadan gelen problem aynı derste durabilir mi?

> Ücretsiz ve herkese açık, metin merkezli öğrenme platformu; ders kitabı teorisiyle sektörde karşılaşılan problemleri tek ders akışında tutuyor.

- Şu an ne yapıyor: Ücretsiz ve kayıt duvarı olmayan bir öğrenme platformu olarak yayında: alan-müfredat-kurs-ünite-ders hiyerarşisi, tam metin arama, ilerleme takibi ve doğrulanabilir sertifika çalışıyor. Bilgisayar bilimleri müfredatını okumak isteyen herkes bugün kullanabilir.
- Tür: Web uygulaması
- Olgunluk: Beta
- Durum: Geliştiriliyor
- Odak: Eğitim ve Araştırma
- Başlangıç: 2026-08-13
- Teknolojiler: Laravel, PHP, Livewire, Blade, Tailwind, PostgreSQL, Redis, Filament, Pest
- Etiketler: #egitim, #icerik-platformu, #acik-erisim
- Web sitesi: https://academia.sh
- Bu işin arkasındaki araştırmalar: Laravel'in preload eğrisi: 123 dosya, 1.912 dosyadan sekiz kat fazla kazandırıyor (https://www.muhammetsafak.com.tr/research/laravel-preload-egrisi/) · opcache preload deploy faturasını on dört kata kadar siliyor — ama yedi framework'ün beşi onu size vermiyor (https://www.muhammetsafak.com.tr/research/opcache-preload-deploy-faturasi/)
- Kaynak: https://www.muhammetsafak.com.tr/labs/academia/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
Video kurs platformlarının aksine birincil ortam yazı: okunabilir, aranabilir,
alıntılanabilir, tarayıcıda kalıcı. academia.sh bilgiyi bir ders kitabı gibi
sunuyor — alan, müfredat, kurs, ünite, ders — ve tamamı ücretsiz. İlk
içerik bilgisayar bilimleri, ama model baştan çok disiplinli: matematik ya da
dil bilim eklemek şema değişikliği değil, ders yazmak.

Asıl mesele burada değil. Asıl mesele şu: bir ders yalnız teoriyi taşırsa ders
notu olur, yalnız sahadan gelen problemi taşırsa blog yazısı. İkisini aynı
akışta tutmak — tanımın hemen ardından o tanımın sahada nerede kırıldığını
yazmak — neye mal olur?

## Teori ile problemi tek derste tutmak

Sahadan gelen problem ayrı bir "alıştırma" varlığı **değil**; dersin kendi
metninde, teorinin devamı olarak duruyor. Problemler uydurulmuş örnekler de
değil: sektörde gerçekten karşılaşılmış olanlar. Bu tercih ders varlığını tek
tutuyor.

Ayırsaydım iki ürün çıkardı — bir tarafta okunacak metin, diğer tarafta
çözülecek alıştırma listesi — ve bölünme anında ilerleme, arama, ölçme de
ikiye bölünürdü. Tek varlıkta kalmanın karşılığı iki yerde görülüyor:

**İlerleme.** Yüzde ders bazında tutuluyor, payda "yayınlanmış aktif dersler".
Bir dersin teorisini okuyup problemini atlamak diye bir durum yok; ikisi aynı
ders. Ölçme de aynı ilkeyi izliyor: quiz teoriyi değil dersin bütününü soruyor.

**Arama.** Metin merkezli bir platformda arama süs değil omurga — video
platformunda arayamadığın şey burada birincil erişim yolu. Postgres tam metin
araması: ağırlıklar başlık A, giriş B, gövde C; sıralama `ts_rank_cd`, parçacık
`ts_headline`. `search_vector` bir generated column **değil**, olamıyor da —
ama gerekçe `to_tsvector` değil: iki argümanlı biçimi immutable. Sorun sözlüğün
satırda `text` olarak durması; `regconfig`'e cast edilmesi gerekiyor ve o cast
immutable sayılmıyor, Postgres de ifadeyi generated column'da kabul etmiyor.
Vektörü bu yüzden bir trigger üretiyor.

## Ücretsiz, kayıtsız, metin merkezli

Çıkan şey açık, ücretsiz ve yalnızca işini yapan bir eğitim platformu:
ödeme duvarı yok, reklam yok, dikkati içerikten çeken bir katman yok.
İçerikler de uygulamanın veritabanında doğmuyor — markdown olarak ayrı bir
GitHub reposunda duruyor, platform oradan besleniyor. Bu ayrım ileriyi de
belirliyor: müfredat, katkıya gerçekten açılabilecek tek biçimde, düz metin
olarak tutuluyor. Bugün yazan tek kişiyim; yarın olmak zorunda değil.

Yığın sade: Laravel 13, Blade + Livewire, Tailwind,
PostgreSQL 16, Redis; yönetim Filament'te. Markdown sunucuda render ediliyor
(`league/commonmark` + `tempest/highlight`), çalışma zamanında Node yok.

Sertifika tarafında bir karar özellikle dişe dokunur: `holder_name` ve
`course_title` düzenleme anında donduruluyor. Sonradan değişen bir isim
basılmış belgeyi değiştirmiyor, bir ders işareti geri alınsa bile belge geçerli
kalıyor — geri alma bir hata düzeltmesidir, kazanılmış belgeyi iptal etmez.
Doğrulama sayfası herkese açık ama `noindex, nofollow`: bir kişinin adı arama
sonuçlarında çıkmamalı.

Repository katmanı yok. Eloquent zaten o rolü üstleniyor; iş akışı barındıran
her şey `Action`, durumsuz yetenekler `Service`. Kalite kapıları Pest + Pint +
Larastan level 6.

## Model gerçekten disiplin-bağımsız mı

Devam etmesinin sebebi kalan iş listesi değil. Bilginin herkese açık, ücretsiz
ve erişilebilir olması gerektiğini düşünüyorum: öğrenmenin önündeki engel bilginin
kendi zorluğu olmalı — ödeme ekranı, kayıt duvarı ya da bir şirketin kapatma
kararı değil. Metin merkezli olması da, içeriğin ayrı bir repoda durması da
bu vizyonun sonucu: okunabilir, kopyalanabilir, birileri devam ettirmek
isterse devam ettirilebilir.

Asıl açık soru içerik tarafında ve teknik değil. Şema çok disiplinli, ama bu
modelin şartı her dersin sahadan gelen problemi de taşıması. Bilgisayar
bilimlerinde bunu yazabiliyorum çünkü o sahada yıllardır çalışıyorum.
İkinci bir bilim dalı eklemek migration istemiyor — yazar istiyor.
Modelin gerçekten disiplin-bağımsız olup olmadığı ancak o yazar
bulununca belli olacak.
