# 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 ```bash # 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 ```bash # 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.