# Main **Özet:** Uygulamanın giriş noktası (`main.go:38`). Fiber v3 web framework'ünü başlatır, `DB_MODE`'a göre PostgreSQL veya SQLite bağlantısını kurar, AutoMigrate çalıştırır ve tüm route'ları tanımlar. **Kütüphaneler:** Fiber v3, GORM, PostgreSQL, SQLite, godotenv **Bağlantılar:** [[Index]], [[Config]], [[RequestLog]], [[OpenAIHandler]], [[AnthropicHandler]], [[HealthHandler]], [[SwaggerUI]], [[DockerSetup]] ## Başlangıç Adımları 1. `.env` dosyası yüklenir (`godotenv.Load()`) 2. [[Config]] okunur (`config.Load()`) 3. `DB_MODE` kontrol edilir — PostgreSQL DSN veya SQLite bağlantısı + AutoMigrate (`RequestLog`) 4. Fiber v3 app oluşturulur (`fiber.Config{AppName: "LLM Gateway v1.0", ServerHeader: "optoant-gateway"}`) 5. Route'lar tanımlanır: - `GET /health` → [[HealthHandler]] - `GET /swagger/swagger.json` → statik dosya serve - `GET /swagger` → `/swagger/` redirect - `GET /swagger/*` → Swagger UI HTML (CDN) - `ALL /v1/*` → [[OpenAIHandler]] (direct passthrough) - `ALL /anthropic`, `/anthropic/*` → [[AnthropicHandler]] (Bifrost dönüşümü) 6. `app.Listen(addr)` ile server başlatılır ## Önemli Detaylar - DB bağlantısı başarısız olursa uygulama **devam eder** (DB'siz çalışabilir) - Tüm backend istekleri `.env`'deki `OPENAI_BACKEND` adresine gider - OpenAI endpoint'i direkt passthrough yaparken, Anthropic endpoint'i format dönüşümü yapar - Swagger UI **CDN'den** yüklenir (offline çalışmaz) - API key auto-injection: `OPENAI_KEY` env'i tanımlıysa, client Authorization göndermezse otomatik eklenir ## Geliştirme - **Air hot-reload:** `.air.toml` ile canlı yeniden derleme (`air`) - **Production build:** `build.sh` ile `CGO_ENABLED=0` optimize binary - **Docker:** `docker/Dockerfile` multi-stage + `docker-compose.yml`