first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 21:41:46 +03:00
commit b6e74bd024
56 changed files with 16114 additions and 0 deletions

View File

@@ -0,0 +1,151 @@
# Ortam Değişkenleri
Proje kök dizinindeki `.env` dosyasından veya sistem ortam değişkenlerinden okunur.
`.env` yoksa sistem değişkenleri kullanılır (ör. Docker, CI ortamları).
---
## Veritabanı
| Değişken | Varsayılan | Açıklama |
|---|---|---|
| `DB_HOST` | `localhost` | MySQL sunucu adresi |
| `DB_PORT` | `3306` | MySQL port |
| `DB_USER` | `root` | Veritabanı kullanıcı adı |
| `DB_PASSWORD` | _(boş)_ | Veritabanı şifresi |
| `DB_NAME` | `goaresv3` | Veritabanı adı |
---
## JWT
| Değişken | Açıklama |
|---|---|
| `JWT_SECRET` | Access token imzalama anahtarı (min 32 karakter önerilir) |
| `JWT_REFRESH_SECRET` | Refresh token imzalama anahtarı (min 32 karakter önerilir) |
> **Uyarı:** Her iki secret production ortamda farklı, uzun ve rastgele olmalıdır.
> Örnek üretim komutu:
> ```bash
> openssl rand -hex 32
> ```
---
## Uygulama
| Değişken | Varsayılan | Açıklama |
|---|---|---|
| `PORT` | `8080` | HTTP sunucu portu |
| `APP_BASE_URL` | `http://localhost:8080` | Email doğrulama linki oluşturmak için temel adres |
---
## Google OAuth
| Değişken | Varsayılan | Açıklama |
|---|---|---|
| `SOCIAL_AUTH_GOOGLE_OAUTH2_KEY` | - | Google OAuth istemci ID |
| `SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET` | - | Google OAuth istemci secret |
| `SOCIAL_AUTH_GOOGLE_REDIRECT_URL` | - | Google callback URL (ör: `http://localhost:8080/api/v1/auth/google/callback`) |
| `SOCIAL_AUTH_GOOGLE_SCOPES` | `openid,email,profile` | İsteğe bağlı scope listesi (virgülle ayrılmış) |
---
## GitHub OAuth
| Değişken | Varsayılan | Açıklama |
|---|---|---|
| `SOCIAL_AUTH_GITHUB_KEY` | - | GitHub OAuth istemci ID |
| `SOCIAL_AUTH_GITHUB_SECRET` | - | GitHub OAuth istemci secret |
| `SOCIAL_AUTH_GITHUB_REDIRECT_URL` | - | GitHub callback URL (ör: `http://localhost:8080/api/v1/auth/github/callback`) |
| `SOCIAL_AUTH_GITHUB_SCOPES` | `read:user,user:email` | İsteğe bağlı scope listesi (virgülle ayrılmış) |
---
## CORS Bootstrap
> Bu değerler sadece **ilk açılış seed** için kullanılır.
> DB'de kayıt varsa üzerine yazılmaz.
| Değişken | Varsayılan | Açıklama |
|---|---|---|
| `CORS_BOOTSTRAP_WHITELIST_ORIGINS` | _(boş)_ | Virgülle ayrılmış origin listesi (ör: `http://localhost:3000,https://admin.ornek.com`) |
| `CORS_BOOTSTRAP_BLACKLIST_ORIGINS` | _(boş)_ | Virgülle ayrılmış engelli origin listesi |
---
## Rate Limit Bootstrap
> Bu değerler sadece **ilk açılış seed** için kullanılır.
> `rate_limit_settings` tablosunda aynı `name` varsa değiştirilmez.
| Değişken | Varsayılan | Açıklama |
|---|---|---|
| `RL_BOOTSTRAP_LOGIN_MAX_REQUESTS` | `10` | `api/v1/auth/login` için maksimum istek |
| `RL_BOOTSTRAP_LOGIN_WINDOW_SECONDS` | `60` | Login penceresi (sn) |
| `RL_BOOTSTRAP_REGISTER_MAX_REQUESTS` | `5` | `api/v1/auth/register` için maksimum istek |
| `RL_BOOTSTRAP_REGISTER_WINDOW_SECONDS` | `60` | Register penceresi (sn) |
| `RL_BOOTSTRAP_API_MAX_REQUESTS` | `120` | Diğer endpointler için fallback `api` limiti |
| `RL_BOOTSTRAP_API_WINDOW_SECONDS` | `60` | Genel fallback pencere (sn) |
---
## Email
| Değişken | Varsayılan | Açıklama |
|---|---|---|
| `EMAIL_HOST` | - | SMTP sunucu adresi |
| `EMAIL_PORT` | - | SMTP port |
| `EMAIL_HOST_USER` | _(boş olabilir)_ | SMTP kullanıcı adı |
| `EMAIL_HOST_PASSWORD` | _(boş olabilir)_ | SMTP şifresi |
| `EMAIL_USE_TLS` | `false` | STARTTLS kullanılsın mı |
| `EMAIL_USE_SSL` | `false` | SMTPS (SSL/TLS) doğrudan bağlantı kullanılsın mı |
| `EMAIL_FROM` | - | Gönderici email adresi |
---
## Örnek `.env`
```dotenv
DB_HOST=localhost
DB_PORT=3307
DB_USER=root
DB_PASSWORD=sifrem
DB_NAME=goaresv3
JWT_SECRET=uretilen-guclu-secret-1
JWT_REFRESH_SECRET=uretilen-guclu-secret-2
PORT=8080
APP_BASE_URL=http://localhost:8080
EMAIL_HOST=10.80.80.70
EMAIL_PORT=1025
EMAIL_HOST_USER=
EMAIL_HOST_PASSWORD=
EMAIL_USE_TLS=false
EMAIL_USE_SSL=false
EMAIL_FROM=noreply@gauth.local
CORS_BOOTSTRAP_WHITELIST_ORIGINS=http://localhost:3000,http://localhost:5173
CORS_BOOTSTRAP_BLACKLIST_ORIGINS=
RL_BOOTSTRAP_LOGIN_MAX_REQUESTS=10
RL_BOOTSTRAP_LOGIN_WINDOW_SECONDS=60
RL_BOOTSTRAP_REGISTER_MAX_REQUESTS=5
RL_BOOTSTRAP_REGISTER_WINDOW_SECONDS=60
RL_BOOTSTRAP_API_MAX_REQUESTS=120
RL_BOOTSTRAP_API_WINDOW_SECONDS=60
```
---
## Güvenlik
- `.env` dosyasını **asla** Git'e commit etmeyin.
- `.gitignore` dosyanıza ekleyin:
```
.env
```
- Staging/production ortamlarda değişkenleri CI/CD secret yöneticisi (GitHub Secrets, Vault) ile iletin.