Proje Dokumantasyonu
Bu proje; Laravel 12, Inertia.js v2, Vue 3, SSR, Passport API authentication ve paket destekli bir UI toolkit uzerine kurulu admin-oncelikli bir starter uygulamadir.
Backend mimarisi
Kod tabani, tum is mantigini controller icine koymak yerine domain odakli bir yapi kullanir.
Ana domain modulleri
app/Domain/Authapp/Domain/Userapp/Domain/Roleapp/Domain/Settingapp/Domain/Sessionapp/Domain/Mediaapp/Domain/ActivityLogapp/Domain/ApiRouteapp/Domain/Shared
Tipik request akisi
- Route, ince tutulmus bir controller'a gider.
- Gerekliyse validasyon Form Request ile yapilir.
- Veri, ilgili ozellik DTO kullaniyorsa DTO'ya donusturulur.
- Is mantigi
app/Domain/.../Actionsaltindaki action siniflarinda calisir. - Listeleme ve filtreleme icin Query siniflari kullanilir.
- Cevaplar Inertia veya
to_api()ile donulur.
Domain event'leri
app/Providers/DomainServiceProvider.php su eslesmeleri kaydeder:
UserCreated -> LogUserCreatedUserUpdated -> LogUserUpdatedRoleCreated -> LogRoleCreated
Bu sayede yan etkiler ana action siniflarinin disinda kalir.
Routing ve yetkilendirme
Web route'lari
routes/web.php, routes/web/ altindaki route dosyalarini yukler.
- public route'lar once yuklenir
- authenticated route'lar
authveverifiedaltinda gruplanir - permission korumali route dosyalari
check.permissionile sarilir
API route'lari
routes/api.php, routes/api/ altindaki dosyalari /api/v1 altinda yukler.
- public endpoint'ler token auth istemez
- authenticated endpoint'ler
auth:apikullanir - korumali endpoint'ler ek olarak
check.permissionkullanabilir
Permission cozumleme
check.permission middleware'i route isimlerinden yetki adini otomatik cikarir.
Ornekler:
users.index -> users.readusers.store -> users.createsettings.update.general -> settings.updateroute icinde acik verildiginde
Ilgili rehber:
Frontend mimarisi
Inertia sayfalari
Sayfalar resources/js/pages/ altinda bulunur.
Ornekler:
resources/js/pages/Admin/Usersresources/js/pages/Admin/Rolesresources/js/pages/Admin/Settingsresources/js/pages/Profile
Local composable'lar
Projeye ozel composable'lar resources/js/composables/ altinda tutulur.
Ilgili rehber:
Paket destekli UI toolkit
Admin panel, local pakete baglanan @lvntr/* alias'i uzerinden gelen UI bloklarini kullanir.
Ornekler:
@lvntr/components/DatatableBuilder/core@lvntr/components/FormBuilder/core@lvntr/components/TabBuilder/core@lvntr/components/ui/AppDialog.vue
Ilgili rehberler:
Ortak frontend kaliplari
AdminLayout icindeki global overlay'ler
AdminLayout.vue, ortak overlay bilesenlerini bir kez render eder:
ConfirmDialogComponentToastComponentAppDialog
Definitions ve enum'lar
- PHP enum verileri Inertia ile paylasilir ve
useEnum()ile kullanilir - veritabani tabanli definitions verileri
/definitionsendpoint'indenuseDefinition()ile alinir
Flash mesajlari
Controller'lar flash mesajlarla redirect eder, AdminLayout.vue ise bunlari PrimeVue toast olarak gosterir.