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: 30000ms
  • withCredentials: false
  • Her istekte Accept-Language: tr header’ı eklenir

Token Yönetimi

  • Cookie’den auth_token veya auth_token_client okunur
  • 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/