Frank Nedir?
Frank, Docker kullanarak Laravel geliştirme sürecini hızlandıran bir araçtır. Karmaşık Laravel projeleri ile çalışırken karşılaştığım günlük hayal kırıklıklarından yola çıkarak birçok özellik geliştirilmiştir.
Hangi Sorunlarla Karşılaşıyoruz?
Karşılaştığım sorunlar:
- Belgelerdeki veya diğer kaynaklardaki kopyala-yapıştır komutlarını
phpilesailarasında uyarlamak:sail artisan ...veyasail composergibi. - Yerel bir PHP ve Node kurulumuna ihtiyaç duymak, bu da hızlı bir şekilde güncelliğini yitirir ve çakışmalara yol açar.
- Kod değişikliklerinden sonra kuyruk işçilerimi yeniden başlatmayı unutmamak.
- Claude’un
RefreshDatabaseile testleri çalıştırmasının yerel veritabanımı silmesine neden olması. - Kuyrukları, Claude ve yan uygulamalar için birden fazla terminal penceresi kullanmam gerekmesi.
- Docker üzerinden Laravel yüklemenin belgelerden çıkartılması.
Özellikler
Hayal kırıklıklarından yola çıkarak geliştirilen bazı özellikler:
Klasör Duyarlı Yerel Takma İsimler! (+ özel olanlar)
Python’dan ilham alarak, bir Frank yönettiği projeye girdiğinizde php, npm, composer, tinker gibi komutlar doğrudan altındaki konteynerlerden çalışır.
Ayrıca, frank.yml dosyasını düzenleyerek en sevdiğiniz (ve ekip ile paylaşılabilir) takma isimleri ekleyebilirsiniz. Örneğin, laravel.log dosyasını temizlemek için trunc takma ismi:
# Frank.yml
aliases:
trunc: "truncate -s 0 /var/www/html/storage/logs/laravel.log"
Ayrıca, “host” takma isimleri de tanımlayabilirsiniz:
browse:
cmd: "open http://localhost"
host: true
Tam Docker Yüklemesi!
Kesinlikle “tam” değil, çünkü Frank’i kullanmak için Brew ya da Go yüklemiş olmanız gerekiyor. Ancak yeni uygulamanız artık frank new my-app ile oluşturulabilir!
Podman desteği göz önünde bulundurulmaktadır.
Otomatik Kuyruk Yeniden Başlatma (+ TUI ile zamanlayıcı)
Aşamalı bir izleyici, kod yazarken sizi izliyor ve işleminiz bittiğinde işçileri yeniden başlatıyor. Uzun süre çalışan işleri kesmeden işlemenizi tamamlayabiliyorsunuz.
Ayrıca, ihtiyaç duyduğunuzda ek işçiler oluşturabilirsiniz.
PHP Çalışma Zamanı Seçimi
Frank, adını FrankenPHP‘den alıyor, ancak projelerinizi FPM ile de çalıştırabilirsiniz.
Klasik Nginx + PHP-FPM veya yeni FrankenPHP çalışma zamanları arasında seçim yapabilirsiniz.
HTTPS Hazır!
mkcert yerel olarak yüklüyse, otomatik http/3 ve http/2 ile HTTPS avantajlarından yararlanabilirsiniz.
Daha Fazlası…
- MCP sunucu
- Git Worktrees desteği ile ayrı veritabanları
- Tek dosya yapılandırması (
frank.yml) - Projenizin aynı veritabanı motorunu kullanarak test desteği
- Otomatik
.envgüncellemesi, lefthook yüklemesi - Küçük bir durum sayfası
- Gizli güncelleyici.
- Varsayılan Node paket yöneticisi seçimi (desteklenen: npm, pnpm, bun)
Kilitlenme Yok
Laravel geliştiricileri olarak alışkanlıklarımızdan vazgeçmek istemiyorum. Frank dilediğiniz gibi kullanılacak şekilde tasarlandı, hatta yeni bir Sail projesi yüklemek için bile:
frank new my-app --sail
Ayrıca, bir sail yapılandırmasını içe aktarabilir ve bir tane dışa aktarabilirsiniz.
Herhangi bir Laravel 12+ projesinde frank setup ile kolayca “benimseyebilirsiniz”.
Sınırlı Bağımlılıklar
Docker dışında, dış bağımlılıkları sınırlı tutmak için çaba sarf ettim. Bu nedenle, herhangi bir platformda (en azından UNIX benzeri) tek bir ikili dosya gönderme imkanı sunan Go’yu seçtim.
Ancak, mkcert ve lefthook yüklemenizi öneririm. Ben, kod yazarken CI işlevi gören lefthook’u kullanıyorum.
OS Uyumlu
Frank yalnızca Linux için geliştirildi ve test edildi. WSL dışında Windows desteği planlanmamaktadır. Mac için Brew veya Go üzerinden destek sağlanmakta, ancak geniş bir test yapılmamıştır.
Son Notlar
Frank’in temel amacı basit, sezgisel ve rahatsız etmeyen bir deneyim sunmaktır.
Şu anda Frank’i profesyonel projelerde kullanıyorum ve aktif olarak geliştirilmektedir.
Repo bağlantısı: https://github.com/phlisg/frank
Kaynak: Orijinal Makale


