Files
bogazici-api/README.md
Bulut Kuru 380ebb283e cors update
2026-03-28 00:04:52 +03:00

113 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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