Proje: OkulUp CRM · Hub: OkulUp CRM — Conventions
Store ve Hook Pattern
Zustand Store’ları
Projede 4 global store var:
useAuthStore— token, user, login/logout/hydrateSessionuseDataStore— tüm modül verileri + loadAllDatauseFeedbackStore— toast/snackbar bildirimleriuseDeleteStore— silme confirm dialog state’i
Feature Hook Pattern
Her modülün kendi use<Modül>Feature.js hook’u var:
hooks/useAnnouncementsFeature.js
hooks/useAppointmentsFeature.js
...
Bu hook’lar API çağrısı + local form state’ini barındırır, UI mantığını feature bileşeninden ayırır.
Page → Feature → Hook Hiyerarşisi
pages/AnnouncementsPage.jsx
└─ features/AnnouncementsTab.jsx
└─ hooks/useAnnouncementsFeature.js
Form Boş Değerleri
Her modülün EMPTY_<FORM_NAME>_FORM sabiti lib/constants.js’de tanımlı.
Yeni form açarken bu sabitlerden spread ile başla, asla hardcode etme.
API Çağrısı
lib/helpers.js içindeki requestJson(baseUrl, token, path, options) kullanılır.
Token useAuthStore’dan alınır; store dışında direkt localStorage’a erişme.
localStorage Key’leri
STORAGE_KEYS objesinden kullan (constants.js):
okulup.tokenokulup.favoriteActionsokulup.sidebarOpen
Related
- tech-stack-ve-yapi — genel proje yapısı