3.3 KiB
3.3 KiB
Boğaziçi Denizcilik API
Boğaziçi Denizcilik kurumsal web sitesi ve yönetim paneli için geliştirilmiş REST API backend uygulamasıdır.
Teknoloji
- PHP 8.4 / Laravel 12
- MySQL (Eloquent ORM)
- Laravel Sanctum — API token tabanlı kimlik doğrulama
- Spatie Permission — Rol ve yetki yönetimi (RBAC)
- Spatie ActivityLog — Model değişiklik takibi
- L5-Swagger — OpenAPI/Swagger API dokümantasyonu
- Pest 4 / PHPUnit 12 — Test
- Laravel Pint — Kod formatlama
- Docker + Apache — Konteyner tabanlı deployment
- Drone CI — CI/CD pipeline
Mimari
Proje Repository + DTO + Action pattern'i kullanır:
app/
├── Actions/ # İş mantığı (Create, Update, Delete)
├── DTOs/ # Veri transfer nesneleri
├── Http/
│ ├── Controllers/
│ │ ├── Api/Admin/ # Yönetim paneli API (auth gerekli)
│ │ └── Api/V1/ # Public API v1
│ ├── Requests/ # Form doğrulama
│ └── Resources/ # API response dönüştürücüler
├── Models/ # Eloquent modeller
├── Repositories/ # Veri erişim katmanı (Contracts + Eloquent)
└── Concerns/ # Tekrar kullanılabilir trait'ler
API Yapısı
Public API (/api/v1)
| Endpoint | Açıklama |
|---|---|
GET /categories |
Kurs kategorileri |
GET /courses |
Kurslar (filtreleme, arama, sayfalama) |
GET /schedules |
Kurs programları |
GET /announcements |
Duyurular |
GET /hero-slides |
Anasayfa slider |
GET /faqs |
Sıkça sorulan sorular |
GET /menus/{location} |
Menüler |
GET /pages/{slug} |
Statik sayfalar |
GET /stories |
Başarı hikayeleri |
GET /settings |
Site ayarları |
GET /guide-cards |
Eğitim rehber kartları |
GET /sitemap-data |
SEO sitemap verisi |
POST /leads |
İletişim formu (rate limited) |
POST /comments |
Yorum gönderimi (rate limited) |
Admin API (/api/admin)
Sanctum token ile korunan yönetim endpointleri:
- Kimlik doğrulama:
login,logout,me - İçerik yönetimi: Kurslar, kategoriler, programlar, duyurular, sayfalar, slider, FAQ, hikayeler
- Kullanıcı yönetimi: Kullanıcılar, roller, yetkiler
- Sistem: Ayarlar, dosya yükleme, önizleme tokenları, önbellek temizleme
API dokümantasyonu: /api/documentation (Swagger UI)
Kurulum
# Bağımlılıkları yükle
composer install
npm install
# Ortam dosyasını hazırla
cp .env.example .env
php artisan key:generate
# Veritabanını oluştur ve seed et
php artisan migrate --seed
# Geliştirme sunucusu (Laravel Herd ile)
# Site otomatik olarak https://bogazici-api.test adresinde erişilebilir
Geliştirme
# Testleri çalıştır
composer test
# Belirli bir testi çalıştır
php artisan test --compact --filter=testName
# Kod formatlama
vendor/bin/pint --dirty
# API route listesi
php artisan route:list --path=api
Deployment
Drone CI ile otomatik deployment yapılır:
| Branch | Ortam | Yol |
|---|---|---|
test |
Test | /opt/projects/bogazici/corporate-api/test/api |
main |
Production | /opt/projects/bogazici/corporate-api/prod/api |
Deployment Docker container içinde çalışır ve scripts/deploy-test.sh / scripts/deploy-prod.sh scriptleri kullanılır.