Bu doküman, Interview App frontend kod tabanını devralacak geliştiricilere yol gösterir. Proje modüler ve komponent bazlı bir mimariye sahip olduğundan, aşağıdaki başlıklar altında kod yapısını kavramanız ve sağlıklı ilerlemeniz hedeflenmiştir.
- Projeyi lokalinizde çalıştırmak için
.envdosyasını doldurun (örn.NEXT_PUBLIC_APP_URL). npm installvenpm run devkomutlarıyla çalıştırabilirsiniz.- Klasik Next.js App Router yapısı kullanılmıştır. Route yapısı
app/dizinindedir.
Her modülün kendi sayfası, state yönetimi (store) ve servis katmanı (services) vardır.
| Sayfa | Açıklama |
|---|---|
app/(public)/ |
Giriş, kayıt, doğrulama gibi anonim sayfalar. |
app/(protected)/ |
Giriş yapılmış kullanıcıların erişebileceği modüller. |
dashboard/ |
Giriş sonrası ana gösterge paneli. |
interviews/ |
Mülakat oluşturma ve yönetim ekranları. |
applications/ |
Başvuruların listelendiği ve incelendiği sayfalar. |
candidates/ |
Aday filtreleme, listeme ve detay sayfaları. |
Her modülün store yapısı ayrı tutulmuştur. Store'lar /store/ dizinindedir ve fetch, update, create gibi fonksiyonlar içerir. Örnek:
useInterviewStore.getState().fetchInterviews();State'ler birden fazla yerde kullanılacağı için store'lar sade ve test edilebilir tutulmuştur.
Tüm API çağrıları services/ klasöründe merkezi bir yapıda tutulur.
Her servis fonksiyonu, API endpoint mantığına karşılık gelir.
Örnek:
await interviewService.getUserInterviews();
await applicationService.getApplications();Geliştirme sırasında backend endpoint yapısına göre eksik veya hatalı fonksiyonlar olabilir. Bu nedenle backend ile sürekli iletişim halinde olunmalıdır.
Tüm TS interface ve enum tanımları types/ klasöründedir. Eğer backend tarafında yeni veri alanları tanımlanırsa, burası güncellenmelidir.
types/user.ts→ Kullanıcı modelitypes/interview.ts→ Mülakat modelitypes/application.ts→ Başvuru modeli
Not: Kod çalışıyor gibi gözükse bile eksik veya uyumsuz tipler projeyi uzun vadede kırılgan hale getirir.
- UI bileşenleri
components/ui/altında ShadCN + Tailwind mimarisiyle inşa edilmiştir. - Feature bazlı bileşenler
components/interview/,components/dashboard/,components/applications/klasörlerinde bulunur. - Bileşen isimleri
PascalCaseolarak yazılmıştır.
api/chat/route.ts: AI Assistant mantığı oturtulmuş, ancak backend analiz mimarisine entegre edilmesi gerekecek.interviewStore/applicationStore/candidateStore: Genişletilmeye açıktır.- Test altyapısı henüz kurulmamıştır. Planlama yapılması önerilir.
dashboard/sayfası, tüm mülakatları getiriyor. Bu backend tarafında optimize edilmelidir (örn. sadece 5 tanesi gelsin).candidateStoreveriyi/api/candidatesüzerinden fetch ediyor; geçici dummy API olabilir.useParamsile gelen ID'lerde doğrulama yapılmıyor.- Bazı modüllerde
useEffectçağrıları gereksizfetchtetikliyor olabilir.
- Her store/servis ilişkisini kontrol edin.
- Bileşenlerde mutlaka prop tipi tanımlanmalı.
Yeni bir geliştirici olarak yapmanız gerekenler:
README.md+ bu dokümanı detaylıca okuyun.authStore,interviewStore,applicationStoreyapısını inceleyin.- Öncelikli olarak
interview,application,dashboardyapısını çözümleyin. - Eksik veya hatalı API fonksiyonlarını backend geliştiricisiyle netleştirin.
- Yeni modül ekleyecekseniz
components/feature-name/,store/,services/,types/katmanlarını unutmayın.
Kod tabanı ölçeklenebilir ve açık bir mimariyle kurgulanmıştır. Bu yapıyı koruyarak ilerlemek, projenin sürdürülebilirliğini artıracaktır. Başarılar 🙌