113 lines
3.3 KiB
Markdown
113 lines
3.3 KiB
Markdown
# 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.
|