1) Amaç#
Bu doküman, son kullanıcı ve admin için mevcut ekran akışlarını koddan doğrulanmış haliyle anlatır.2) Erişim Rotaları#
| Kategori | Route Örnekleri | Dosya Kanıtı |
|---|
| Public | /{locale}, /{locale}/about, /{locale}/courses, /{locale}/contact, /{locale}/proficiency-test | englishcamplanding/app/[locale]/page.tsx, englishcamplanding/app/[locale]/courses/page.tsx, englishcamplanding/app/[locale]/contact/page.tsx |
| Auth | /{locale}/login, /{locale}/otp-verification, /{locale}/complete-registration | englishcamplanding/app/[locale]/login/page.tsx, englishcamplanding/app/[locale]/otp-verification/page.tsx, englishcamplanding/app/[locale]/complete-registration/page.tsx |
| User Panel | /{locale}/dashboard, /{locale}/materials/{id} | englishcamplanding/app/[locale]/dashboard/page.tsx, englishcamplanding/app/[locale]/materials/[id]/page.tsx |
| Admin Panel | /{locale}/admin/* (users, courses, proficiency-tests, education-materials, contacts, settings, statistics) | englishcamplanding/app/[locale]/admin/layout.tsx, englishcamplanding/app/[locale]/admin/*/page.tsx |
3) Son Kullanıcı Akışları#
3.1 OTP ile giriş#
1.
Kullanıcı /{locale}/login sayfasında e-posta girer.
2.
Sistem /auth/otp/request çağrısı ile OTP ister.
3.
Kullanıcı /{locale}/otp-verification?email=... ekranında kodu girer.
4.
/auth/otp/verify sonucu registrationComplete=false ise /{locale}/complete-registration yönlendirmesi yapılır.
5.
Profil tamamlama sonrası kullanıcı /{locale}/dashboard ekranına yönlenir.
englishcamplanding/components/login-form.tsx
englishcamplanding/components/otp-verification-form.tsx
englishcamplanding/contexts/auth-context.tsx
3.2 Kurs keşfi ve detay#
1.
/{locale}/courses sayfasında kategori filtreleri ile kurslar listelenir.
2.
Detay sayfası /{locale}/courses/{slug} üzerinden açılır.
3.
PDF kaynakları ve varsa satın alma linki detail ekranında gösterilir.
englishcamplanding/app/[locale]/courses/page.tsx
englishcamplanding/app/[locale]/courses/[slug]/page.tsx
3.3 Seviye tespit sınavı#
1.
Kullanıcı /{locale}/proficiency-test ekranında dil/test seçer.
2.
Giriş yapmamışsa login diyalogu tetiklenir.
3.
Tamamlanan testler için /proficiency-tests/{id}/status kontrolü yapılır.
4.
Test submit ile sonuç dashboard tarafında listelenir.
englishcamplanding/app/[locale]/proficiency-test/page.tsx
3.4 Dashboard (kullanıcı)#
Profil güncelleme (age/phone/gender/city/country)
Atanan materyalleri görme
englishcamplanding/app/[locale]/dashboard/page.tsx
4) Admin Akışları#
4.1 Kullanıcı yönetimi#
Kullanıcı listeleme, filtreleme, silme
Superadmin için rol değişimi
Kullanıcı detayından güvenli profil güncelleme + e-posta güncelleme
englishcamplanding/app/[locale]/admin/users/page.tsx
englishcamplanding/app/[locale]/admin/users/[id]/page.tsx
4.2 Kurs yönetimi#
Create / Edit / Detail / Delete / Duplicate
englishcamplanding/app/[locale]/admin/courses/page.tsx
englishcamplanding/app/[locale]/admin/courses/create/page.tsx
englishcamplanding/app/[locale]/admin/courses/[id]/edit/page.tsx
4.3 Proficiency test yönetimi#
englishcamplanding/app/[locale]/admin/proficiency-tests/page.tsx
englishcamplanding/app/[locale]/admin/proficiency-tests/results/page.tsx
4.4 Eğitim materyali yönetimi#
Kullanıcılara materyal atama
englishcamplanding/app/[locale]/admin/education-materials/page.tsx
englishcamplanding/app/[locale]/admin/education-materials/EducationMaterialForm.tsx
Contact taleplerini yanıtlama ve statü yönetimi
Landing video URL ayarı (landing_video_url)
Umami iframe üzerinden istatistik görüntüleme
englishcamplanding/app/[locale]/admin/contacts/page.tsx
englishcamplanding/app/[locale]/admin/settings/page.tsx
englishcamplanding/app/[locale]/admin/statistics/page.tsx
5) Rol Matrisi#
| İşlem | Public | User | Admin | Superadmin | Kanıt |
|---|
| Landing/kurs/iletişim sayfaları | Evet | Evet | Evet | Evet | englishcamplanding/app/[locale]/* |
| OTP request/verify | Evet | Evet | Evet | Evet | englishcampbackend/src/auth/auth.controller.ts |
Kendi profilini görüntüleme (GET /me) | Hayır | Evet | Evet | Evet | englishcampbackend/src/users/user.controller.ts |
Kendi profili patch (PATCH /me/profile) | Hayır | Evet | Evet | Evet | englishcampbackend/src/users/user.controller.ts |
User list (GET /users) | Hayır | Hayır | Evet | Evet | englishcampbackend/src/users/user.controller.ts |
Kullanıcı rolü değişimi (PATCH /users/:id/role) | Hayır | Hayır | Hayır | Evet | englishcampbackend/src/users/user.controller.ts |
| Kurs create/update/delete | Hayır | Hayır | Evet | Evet | englishcampbackend/src/courses/controllers/courses.controller.ts |
| Test create/update/delete | Hayır | Hayır | Evet | Evet | englishcampbackend/src/proficiency-tests/controllers/proficiency-tests.controller.ts |
| Test submit | Hayır | Evet | Evet | Evet | englishcampbackend/src/proficiency-tests/controllers/proficiency-tests.controller.ts |
| Materyal atama | Hayır | Hayır | Evet | Evet | englishcampbackend/src/education-materials/controllers/education-materials.controller.ts |
6) Veri Modeli (Kullanıcı Akışı Odaklı Özet)#
| Varlık | Kullanıcıya Etkisi | Kanıt |
|---|
User | Dashboard profil alanları (age, phone, gender, city, country vb.) | englishcampbackend/src/users/schemas/user.schema.ts, englishcamplanding/app/[locale]/dashboard/page.tsx |
Course | Kurs liste/detay içerikleri | englishcampbackend/src/courses/schemas/course.schema.ts, englishcamplanding/app/[locale]/courses/page.tsx |
ProficiencyTest | Sınav içeriği ve soru/opsiyon yapısı | englishcampbackend/src/proficiency-tests/schemas/proficiency-test.schema.ts |
UserTestResult | Dashboard test sonuç ekranı | englishcampbackend/src/proficiency-tests/schemas/user-test-result.schema.ts, englishcamplanding/app/[locale]/dashboard/page.tsx |
EducationMaterial + Assignment | Kullanıcıya atanmış materyallerin görünümü | englishcampbackend/src/education-materials/schemas/education-material.schema.ts, englishcampbackend/src/education-materials/schemas/user-education-material-assignment.schema.ts |
Contact | İletişim formu kayıtları | englishcampbackend/src/common/schemas/contact.schema.ts |
Detaylı ER diyagram için: docs/03-technical-guide.md7) Env Değişkenleri (Kullanıcı Akışını Etkileyen)#
| Değişken | Katman | Etki | Varsayılan/Fallback | Kanıt |
|---|
NEXT_PUBLIC_API_URL | Frontend | UI -> API çağrıları | http://localhost:3000 | englishcamplanding/api/http/axios.ts |
NEXT_PUBLIC_SITE_URL | Frontend | Canonical/sitemap/robots | https://englishcamplanding.vercel.app | englishcamplanding/lib/seo.ts |
FRONTEND_BASE_URL | Backend | Materyal atama e-postasındaki link üretimi | '' | englishcampbackend/src/config/mail.config.ts, englishcampbackend/src/education-materials/use-cases/assign-education-material-to-users.use-case.ts |
MAIL_* | Backend | OTP ve reply e-posta gönderimi | MAIL_PORT=587 fallback | englishcampbackend/src/common/services/email.service.ts |
8) API Endpointleri (Kullanıcı Rehberi Odaklı Özet)#
| Method | Path | Kim Kullanır | Açıklama |
|---|
POST | /auth/otp/request | Public | OTP kodu ister |
POST | /auth/otp/verify | Public | OTP doğrular, token döner |
POST | /auth/complete-registration | User | Profil tamamlama |
GET | /me | User/Admin | Oturumdaki kullanıcı profili |
PATCH | /me/profile | User/Admin | Kendi profilini günceller |
GET | /courses | Public | Kurs listesi |
GET | /courses/:id | Public | Kurs detayı |
GET | /proficiency-tests | Public | Test listesi |
POST | /proficiency-tests/:id/submit | User/Admin | Test gönderimi |
GET | /proficiency-tests/results/me | User/Admin | Kendi sonuçları |
POST | /contact | Public | İletişim formu oluşturur |
GET | /education-materials/my-materials | User/Admin | Kullanıcıya atanmış materyaller |
Modified at 2026-02-14 10:13:54