Bu proje, yapay zeka destekli mülakat süreçlerini dijital ortama taşıyan kapsamlı bir insan kaynakları yönetim sisteminin frontend tarafını içerir. Next.js (App Router), TailwindCSS, TypeScript ve Zustand kullanılarak geliştirilmiştir.
# Bağımlılıkları yükleyin
npm install
# Geliştirme sunucusunu başlatın
npm run devTarayıcınızda http://localhost:3000 adresini ziyaret edin.
interview_frontend/
├── 📱 app/ # Next.js App Router - Sayfa rotaları
├── 🧩 components/ # UI ve feature bileşenleri
├── 🪝 hooks/ # Custom React hooks
├── 🛠️ lib/ # Yardımcı kütüphaneler
├── 🛡️ middlewares/ # Auth ve error middleware
├── 🔌 services/ # API entegrasyon katmanı
├── 🗃️ store/ # Zustand state management
├── 📝 types/ # TypeScript tip tanımları
├── 🔧 utils/ # Utility fonksiyonlar
├── 🎨 styles/ # Global CSS
└── 📁 public/ # Statik dosyalar
Her modül için detaylı README dosyaları oluşturulmuştur:
| Modül | Dosya | Açıklama |
|---|---|---|
| App | app/README.md |
Sayfa yapısı, routing, layout'lar |
| Components | components/README.md |
UI bileşenleri, feature components |
| Services | services/README_DETAILED.md |
API entegrasyonu, service pattern |
| Store | store/README_DETAILED.md |
Zustand state management |
| Hooks | hooks/README.md |
Custom React hooks |
| Types | types/README_DETAILED.md |
TypeScript tip tanımları |
| Utils | utils/README.md |
API config, validation |
| Lib | lib/README.md |
Yardımcı fonksiyonlar, mock data |
| Middlewares | middlewares/README_DETAILED.md |
Auth middleware, error handling |
Next.js 13+ App Router mimarisi ile sayfa yönetimi.
app/
├── page.tsx # Landing Page
├── layout.tsx # Root Layout
├── (protected)/ # 🔐 Korumalı rotalar (auth gerekli)
│ ├── dashboard/ # Ana kontrol paneli
│ ├── candidates/ # Talent Pool - Aday yönetimi
│ ├── applications/ # Başvuru yönetimi (Netflix UI)
│ ├── interviews/ # Mülakat yönetimi
│ └── reports/ # Raporlama & analitik
└── (public)/ # 🌐 Public rotalar
├── verify-email/ # E-posta doğrulama
└── reset-password/ # Şifre sıfırlama
| Sayfa | Özellikler |
|---|---|
| Dashboard | KPI kartları, takvim, slider'lar, AI chat |
| Candidates | Filtreli liste, detay panel, favori yönetimi |
| Applications | Netflix UI, çoklu görünüm, AI skor |
| Interviews | Oluşturma wizard, soru yönetimi, yayınlama |
| Reports | Grafikler, KPI'lar, trend analizi |
Atomic Design prensiplerine göre organize edilmiş bileşenler.
components/
├── ui/ # 🎨 Shadcn/ui bileşenleri (50+)
├── applications/ # Başvuru bileşenleri + Netflix UI
├── candidate/ # Aday bileşenleri + Pool
├── charts/ # Recharts grafikleri
├── dashboard/ # Dashboard bileşenleri
├── interview/ # Mülakat bileşenleri + AI
├── notifications/ # Bildirim bileşenleri
├── reporting/ # Rapor grafikleri
├── settings/ # Ayar panelleri
└── [Root Components] # Header, Modal'lar, Provider'lar
- Button, Input, Select, Checkbox
- Dialog, Sheet, Popover, Tooltip
- Table, Card, Badge, Avatar
- Calendar, Date Picker
- Toast, Alert, Progress
- Tabs, Accordion, Collapsible
API entegrasyon katmanı - Backend iletişimi.
| Servis | Endpoint'ler | Açıklama |
|---|---|---|
authService |
/auth/* |
Login, register, token refresh |
candidateService |
/candidates/* |
Aday CRUD, filtre, not |
interviewService |
/interviews/* |
Mülakat CRUD, publish |
applicationService |
/applications/* |
Başvuru listesi, durum |
notificationService |
/notifications/* |
Bildirim yönetimi |
profileService |
/profile/* |
Profil yönetimi |
// Service örneği
export const candidateService = {
async getCandidates(filters, page, limit) {
const response = await api.get("/candidates", { params });
return response.data;
},
// ...
};Global state management.
| Store | Amaç |
|---|---|
authStore |
Kullanıcı auth durumu |
candidateStore |
Aday listesi, filtreler, pagination |
interviewStore |
Mülakat listesi, seçili mülakat |
applicationStore |
Başvurular, filtreler |
reportingStore |
Rapor verileri, filtreler |
notificationStore |
Bildirimler (persist) |
favoriteCandidatesStore |
Favori adaylar |
// Store kullanımı
const { candidates, fetchCandidates, isLoading } = useCandidateStore();
useEffect(() => {
fetchCandidates();
}, []);Custom React hooks.
| Hook | Amaç |
|---|---|
useAuth |
Auth state ve işlemleri |
useApplication |
Tek başvuru verisi |
useApplicationAnalysisStatus |
AI analiz durumu polling |
useMobile |
Responsive detection |
useToast |
Toast bildirimleri |
TypeScript tip tanımları.
User,UserRole,UserPreferenceCandidate,CandidateStatus,CandidateFiltersInterview,InterviewStatus,InterviewQuestionApplication,ApplicationStatus,ApplicationFiltersNotification,Report,Appointment
CreateInterviewDTO,UpdateInterviewDTOExtendDurationDTO
api.ts- Axios instance, interceptors, token refreshtokenUtils.ts- JWT decode, expiry checkvalidationSchemas.ts- Zod validationvalidationUtils.ts- Yardımcı validation fonksiyonları
utils.ts-cn()fonksiyonu (Tailwind class merge)mockData.ts- Mock verilermock-applications.ts- Mock başvurular
// Korumalı rotalar için token kontrolü
if (!accessToken && !refreshToken) {
return NextResponse.redirect(new URL("/", req.url));
}/dashboard/*/candidates/*/applications/*/interviews/*/reports/*/settings/*
- TailwindCSS - Utility-first CSS
- Shadcn/ui - Headless UI components
- CSS Variables - Theme support (dark/light)
- Framer Motion - Animasyonlar
| Kategori | Teknoloji |
|---|---|
| Framework | Next.js 14 (App Router) |
| Language | TypeScript |
| Styling | TailwindCSS, Shadcn/ui |
| State | Zustand |
| Forms | React Hook Form + Zod |
| HTTP | Axios |
| Charts | Recharts |
| Animation | Framer Motion |
| Icons | Lucide React |
NEXT_PUBLIC_APP_URL=http://localhost:3001/api| Tür | Konvansiyon | Örnek |
|---|---|---|
| Components | PascalCase | InterviewCard.tsx |
| Hooks | camelCase + use prefix | useAuth.tsx |
| Services | camelCase + Service suffix | authService.ts |
| Stores | camelCase + Store suffix | authStore.ts |
| Types | PascalCase | Candidate |
| Utils | camelCase | tokenUtils.ts |
npm run dev # Development server
npm run build # Production build
npm run start # Start production server
npm run lint # ESLint checkVercel ile CI/CD pipeline üzerinden otomatik deployment.
# Production build
npm run build
# Vercel deploy
vercel --prod- Jest + RTL - Unit tests
- Cypress/Playwright - E2E tests
- MSW - API mocking
components/[feature]/klasöründe oluştur- TypeScript props interface tanımla
- Shadcn/ui bileşenlerini kullan
- README'ye ekle
services/klasöründe[name]Service.tsoluştur- API endpoint'lerini tanımla
- Types klasöründe tipleri oluştur
- README'ye ekle
store/klasöründe[name]Store.tsoluştur- State ve actions tanımla
- Service entegrasyonu yap
- README'ye ekle
Bu proje özel kullanım içindir.