- PocketBase, veritabanı, kimlik doğrulama, dosya depolama ve yönetici panosunu içeren tek dosyalı açık kaynak bir arka uç
- Şema oluşturucu, veri doğrulama, gerçek zamanlı abonelik ve REST API ile birlikte gelen gömülü yüksek performanslı bir veritabanı yapısı
- E-posta/parola ve OAuth2 giriş (Google, Facebook, GitHub, GitLab) desteğiyle kullanıcı yönetimini basitleştirir
- Dosyalar yerel veya S3 depolamada güvenli şekilde saklanabilir; veritabanı kayıtlarına medya ekleyerek thumbnail otomatik oluşturma yapılabilir
- Bağımsız çalışan bir uygulama ya da Go·JavaScript ile genişletilebilen bir çerçeve olarak kullanılabilir; hafif ve özelleştirilmiş arka uçlar kurmak için kullanışlı
PocketBase Genel Bakış
- PocketBase, tek çalıştırılabilir dosyayla çalışan bir açık kaynaklı arka uç platformudur
- Veritabanını, kimlik doğrulamayı, dosya depolamayı ve yönetici panelini tek bir yerde entegre eder
- Ek sunucu yapılandırması olmadan hızlıca çalıştırılabilir bir yapısı vardır
Veritabanı Özellikleri
- Şema oluşturucu, veri doğrulama, gerçek zamanlı abonelik ve REST API destekleyen gömülü bir veritabanı içerir
- Gerçek zamanlı veri değişimi izleme ve abonelik işlevleri sunar
- REST API aracılığıyla veri okuma, oluşturma, güncelleme ve silme işlemleri kolayca yapılabilir
Kullanıcı Kimlik Doğrulaması
- Uygulama kullanıcı yönetimi ve e-posta/parola tabanlı giriş desteği sunar
- OAuth2 doğrulama ile Google, Facebook, GitHub ve GitLab hesaplarıyla kayıt olma ve giriş yapma imkanı sağlar
Dosya Depolama
- Dosyalar yerel veya S3 depolamada güvenli şekilde saklanabilir
- Veritabanı kayıtlarına medya dosyası eklenebilir
- Yükleme sırasında thumbnail otomatik oluşturma özelliği sunulur
Ölçeklenebilirlik ve Geliştirici Desteği
- PocketBase, bir tek başına çalışan uygulama olarak kullanılabilir veya Go ve JavaScript hook'ları ile genişletilebilen bir çerçeve olarak da kullanılabilir
- Geliştiriciler kendi mantıklarını ekleyerek özelleştirilmiş bir arka uç oluşturabilir
JavaScript SDK Örneği
- JavaScript SDK ile PocketBase sunucusuyla etkileşim kurulabilir
- Örnek kodda
example koleksiyonunun kayıt listesi alma, tek bir kayıt getirme, silme, oluşturma, gerçek zamanlı abonelik ve abonelikten çıkma işlevleri gösterilir
pb.collection('example').getList(), getOne(), create(), delete(), subscribe() gibi yöntemler sağlanır
1 yorum
Hacker News görüşleri
“SQLite ölçeklenebilir değil” sözü çoğu zaman erken optimizasyon yanılgısıdır
Gerçekte WAL çekişmesi sınırına çarpılan durumlar nadirdir ve tek bir binary’nin sadeliğinin dağıtık sistemlerin karmaşıklığından çok daha iyi olduğunu düşünüyorum
Günümüzde küçük projelere bile DB kümesi ve Redis cache eklemek olağan hale geldi ama Pocketbase, CRUD uygulamalarının %99’unda darboğazın DB değil ağ gecikmesi ve geliştiricinin bakım süresi olduğunu gösteriyor
Rust CLI benchmark’larıyla test ettim; aynı makinede MySQL ya da Postgres’ten daha iyi performans verdi
Bu ölçekteki projeler için SQLite en uygun seçenek
Tüm hesaplamaları uygulama tarafında yapmak gerektiği için uğraştırıcı
Pocketbase’ı görünce hemen upvote veriyorum
Birden fazla production uygulamasında kullanıyorum ve çok stabil
Arada breaking change’ler oluyor ama genel olarak harika ve ölçeklenebilirliği de iyi
İhtiyacınız olan özellik yoksa biraz uğraştırabiliyor ama deneyimli bir geliştirici bunu rahatlıkla çözebilir
Yalnız geliştirici tek kişi olduğu için gelecekteki bakım konusunda endişeliyim
Yine de front-end ile back-end’i ayırmanız gerektiğinde gerçekten çok iyi bir seçenek
Kişisel projelerde ve iç araçlarda Pocketbase’i sık kullanıyorum
PocketPages ile birlikte kullanınca dosya tabanlı routing ve template’leri kolayca kullanabiliyorsunuz
Otomatik DB migration özelliği sayesinde şema değişikliklerini sürüm yönetimine dahil edebiliyorsunuz
Hatta bir Gemini protokol sunucusu bağlayıp Lagrange ile kişisel bilgi grafiğimi geziyorum
Pocketbase, GUI üzerinden yapılandırılabilen bir arka uç sunucusu
Neredeyse hiç kod yazmadan çalışan bir back-end oluşturabildiğiniz için prototipler, MVP’ler ve basit uygulamalar için uygun
Bu kavramı yaygınlaştıran şey Firebase olmuştu
Benim yazdığım back-end’ler yüzlerce ila binlerce satır kod gerektiriyor; bunun onları nasıl ikame ettiğini anlamak istiyorum
Bu tür araçlarla yapılabilecek uygulamaların kapsamını merak ediyorum
Bir yan projede Pocketbase kullandım ve gerçekten çok etkilendim
Uzun zamandır Django ile çalışıyorum ama küçük ve orta ölçekli projelerde geleneksel bir back-end’i sıfırdan yazmaktan çok Pocketbase daha uygun geliyor
Sorunuz varsa memnuniyetle yanıtlayabilirim
Ayrıca PostgreSQL destekliyor mu, yoksa sadece SQLite’a mı özel bilmek istiyorum
Bu yüzden bir Claude Skill hazırladım; benzer bir deneyim yaşayan olup olmadığını merak ediyorum
Trailbase, aynı kavramın Rust ile uygulanmış bir versiyonu
Bu yüzden Trailbase’e geçtim
Yani tüm uygulamayı da barındırabiliyor
Kılavuz bağlantısı
Pocketbase’i yan projelerimde kimlik doğrulama katmanı olarak kullanıyorum
kavla.dev üzerinde çalışıyor ve hook sistemi harika
Go event hook dokümantasyonu sayesinde altyapı otomasyonunu da kolayca kurabildim
SQLite ve DuckDB ile hızlıca bir MVP çıkardım ama sonradan yedekleme ve production’a alma aşamasında pişman oldum
En baştan Supabase ile başlasaydım daha kolay olurdu gibi geliyor
Ben OpenSOHO’yu Pocketbase ile yaptım ve bu sayede geliştirme süresinden ciddi biçimde tasarruf ettim
Back-end’i yeniden kullanabilecek şekilde biraz değiştirdim ama zor değildi
Ekran görüntülerine bakınca bile Pocketbase izleri hemen seçiliyor
GitHub bağlantısı
Pocketbase’in SQLite yedeklemesi konusunda endişelendiğim için, çalışırken bile sqlite3_rsync ile yedek alabilen sqlrsync.com aracını kendim geliştirdim
MVP çalışıyor; Cloudflare Durable Objects tabanlı olduğu için hızlı ve güvenilir
Geri bildirimlere açığım