Laravel ile bir SaaS yan projesi başlattıysanız, genellikle şu aşamalardan geçersiniz:
- Yetkilendirmeyi ayarlamak
- Çoklu kiracılığı anlamak
- Stripe ile entegrasyonu sağlamak
- Bir yönetim paneli oluşturmak
- Ekipler ve roller eklemek
- Ve aslında ürününüzü geliştirmeye başlamak
Bu temel bileşenler bile haftalar — bazen aylar — sürebilir.
Aynı yığını sürekli olarak yeniden inşa ettiğim için, açık kaynak yaptım: Laravel Tenant Kit — Laravel 13 tabanlı çoklu kiracı SaaS uygulamaları için üretime uygun bir başlangıç seti.
v1.2.0 sürümü, OAuth (Google/GitHub), Sanctum API tokenları ve Filament’te SaaS analiz widget’larını ekliyor.
Kutudan çıkan özellikler
| Alan | İçerik |
|---|---|
| Tenancy | Veritabanı-başına-kiracı (Stancl), alt alan adı + özel alan adları |
| Auth | Merkezi uygulama ve her çalışma alanında Laravel Breeze |
| Ekipler | Roller (sahip/yönetici/üye), e-posta davetiyeleri |
| Faturalama | Laravel Cashier ile Stripe abonelikleri |
| Admin | /admin adresindeki Filament 5 paneli |
| API | Sanctum tokenları — merkezi platform + her kiracı için API |
| OAuth | Google & GitHub sosyal giriş |
| Analitik | Çalışma alanı büyüme grafiği, abonelikler, kullanıcı istatistikleri |
| i18n | İngilizce + Arapça (RTL desteği ile) |
| DevOps | Docker Compose, GitHub Actions CI, 35 PHPUnit testi, 36 noktalı duman testi |
Yığın: Laravel 13 · PHP 8.4 · Filament 5 · Stancl Tenancy · Spatie Permission · Cashier · Breeze · Tailwind · Vite · MySQL veya PostgreSQL · Redis
Çoklu kiracılık nasıl çalışır
Tek bir Laravel kod tabanı herkes için hizmet verir. Her çalışma alanı kendi veritabanına sahiptir — tekrar eden dağıtımlar yok, karışık kiracı verisi yok.
yourdomain.com → merkezi uygulama (kayıt, faturalama, yönetim)
acme.yourdomain.com → Acme çalışma alanı → veritabanı: tenant{id}
demo.yourdomain.com → Demo çalışma alanı → veritabanı: tenant{id}
Biri acme.yourdomain.com adresini ziyaret ettiğinde, Laravel URL’den çalışma alanını çözümler ve veritabanı bağlantısını otomatik olarak değiştirir.
Bir çalışma alanı oluşturulduğunda:
- Merkezi
tenants+domainstablolarında bir kayıt saklanır - Yeni bir veritabanı
tenant{id}sağlanır - Kiracı göçleri ve rol tohumları çalıştırılır
- Sahip kendi alt alanına yönlendirilir
Ayrıca, CLI üzerinden sağlama yapabilirsiniz:
php artisan tenant:provision acme "Acme Corp" --admin=[email protected] --password=secret
Hızlı başlangıç (yerel)
git clone https://github.com/mohammedelkarsh/laravel-tenant-kit.git
cd laravel-tenant-kit
composer install && npm install
cp .env.example .env && php artisan key:generate
php artisan migrate && php artisan db:seed && npm run build
hosts dosyanıza ekleyin:
127.0.0.1 laravel-tenant-kit.test
127.0.0.1 demo.laravel-tenant-kit.test
http://laravel-tenant-kit.test adresini açın — tamam.
Seed sonrası varsayılan kimlik bilgileri:
| Bağlam | URL | E-posta | Şifre |
|---|---|---|---|
| Platform yöneticisi | /admin | [email protected] | password |
| Demo çalışma alanı | http://demo.laravel-tenant-kit.test | [email protected] | password |
Tüm her şeyi doğrulamak için duman testi yapın:
php scripts/system-test.php # beklenen sonuç 36/36 geçti
Docker alternatifi
Yerel PHP/MySQL ayarınız yok mu? Tek bir script tüm yığını çalıştırır (PHP, Nginx, MySQL, Redis):
# Windows
.\scripts\docker-setup.ps1
# macOS / Linux
chmod +x scripts/docker-setup.sh && ./scripts/docker-setup.sh
Daha sonra http://laravel-tenant-kit.test:8080 adresini açın (port 8080 Docker ile).
Ekran Görüntüleri
Açılış sayfası:
Filament yönetim paneli ve SaaS analizleri:
Kiracı kontrol paneli & faturalama:
Demo geçişi (GIF):
API & OAuth (v1.2.0)
Sanctum, headless istemciler ve mobil uygulamalar için token tabanlı API’leri destekler.
Merkezi platform tokenı:
curl -X POST http://laravel-tenant-kit.test/api/auth/token \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":"password","device_name":"cli"}'
Kiracı API’si (alt alan kiracılığı çözümler):
curl -X POST http://demo.laravel-tenant-kit.test/api/auth/token \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":"password","device_name":"mobile"}'
Tüm API referansı: docs/api.md GitHub’da
OAuth: Google/GitHub kimlik bilgilerini .env dosyasına ekleyin — giriş butonları otomatik olarak merkezi giriş sayfasında belirecektir.
Neden veritabanı-başına-kiracı?
Tek veritabanlı çoklu kiracılık daha basit başlayabilir, ancak veritabanı-başına-kiracı sizlere:
- Güçlü izolasyon (verilerin müşteri arasında sızması zor)
- Müşteri bazında yedekleme ve dışa aktarımların kolaylığı
- Açık bir ölçeklendirme hikayesi (belli kiracıları dediğiniz veritabanlarına taşıyabilirsiniz)
Stancl Tenancy, bağlantı geçişi, önbellek/dosya sistemi/sıra başlangıçlarını ve Redis anahtarı ön eklemelerini yönetir, böylece kiracı verileri prodüksiyonda izole kalır.
PostgreSQL ve Redis desteklenmektedir — .env dosyası üzerinden geçiş sağlayabilir veya docs/docker.md dosyasındaki Docker profillerini kullanabilirsiniz.
Üretim notları
Gerçek dağıtımlar için gerekli olanlar:
yourdomain.com → A kaydı → sunucu IP'si
*.yourdomain.com → A kaydı → sunucu IP'si (wildcard — gereklidir)
DB kullanıcısının CREATE DATABASE yetkisine sahip olması gerekir. VPS + Laravel Forge/Ploi iyi çalışır; paylaşımlı hosting genellikle wildcard DNS ve dinamik veritabanı oluşturma için çok sınırlıdır.
php artisan migrate --force && php artisan config:cache && php artisan view:cache
Bu kimler için?
- Laravel ile B2B SaaS geliştiren geliştiriciler
- Ürün özelliklerinden önce Stripe + yönetim + kiracılığı istiyen takımlar
- İngilizce ve Arapça pazarlara yönelik ürünler (RTL dahil)
- Her yeni fikir için aynı kurulum şablonunu kopyalamaktan yorulan herkes
Sırada ne var
Gelecek yol haritasında: kullanım bazlı faturalama ölçümleri.
GitHub’da sorunlar ve PR’lar memnuniyetle karşılanır.
Bağlantılar
Eğer bu, size zaman kazandırıyorsa, GitHub’da bir ⭐ bırakmanız diğer Laravel geliştiricilerinin bunu bulmasına yardımcı olur.
MIT lisanslı. Ürün özelliklerini ilk günden göndermek isteyen geliştiriciler için yapıldı — üçüncü kez altyapıyı yeniden inşa etmek için değil.
Kaynak: Orijinal Makale







