Proje: Okul.com.tr CRM · Hub: Okul.com.tr CRM — Architecture
CRM API Katmanı
Axios Instance (src/utils/api.ts)
baseURL:config.api.baseUrl(ortama göre değişir)timeout: 30000mswithCredentials: false- Her istekte
Accept-Language: trheader’ı eklenir
Token Yönetimi
- Cookie’den
auth_tokenveyaauth_token_clientokunur - Request interceptor’da
Authorization: Bearer <token>olarak eklenir - Token süresi: 7 gün (cookieUtils.set ile
maxAge: 60*60*24*7)
401 / 403 Davranışı
- 401: Cookie’ler silinir (
auth_token,auth_token_client), auth store temizlenir,/login’e yönlendirilir - 403: DEV modda console’a detaylı debug çıktısı verilir; login isteği değilse errorLogger’a loglanır
- Login isteği için 401/403 beklenen hatalar olduğundan loglanmaz
Error Logger (src/utils/errorLogger.ts)
Tüm API hataları errorLogger.log() ile merkezi olarak kaydedilir. Hata tipi API_REQUEST_<METHOD> formatında tag’lenir.
API Yardımcı Fonksiyonlar
get, post, put, del, patch — hepsi src/utils/api.ts’den export edilir, axiosInstance üzerinden çalışır.
isApiSuccessWithData() — response.data?.data kontrolü yapar, guard olarak kullanılır.
Endpoint Tanımları (src/utils/endpoints.ts)
Tüm endpoint’ler tek dosyada toplanmış, pattern:
entityName: (id?: number | string) => id ? `/admin/entity/${id}` : '/admin/entity'İstisnalar:
media→ objedir (media.list,media.uploadTemporary,media.move,media.sort,media.delete(id))auth.login→/auth/login(admin prefix yok)announcements→/admin/school-content/announcements/events→/admin/school-content/events/achievements→/admin/school-content/achievements/
Related
- genel-mimari — Teknoloji yığını ve dizin yapısı
- auth-akisi — Zustand auth store detayları