• 01 - Overview
    • 02 - User Guide
    • 03 - Technical Guide
    • 04 - Operations
    • App
      • Get application hello response
        GET
    • Users
      • Kullanıcı profili
        GET
      • Update current user profile
        PATCH
      • Opsiyonel kimlik doğrulama
        GET
      • Tüm kullanıcıları listele
        GET
      • Get user by id (Admin)
        GET
      • Kullanıcı sil
        DELETE
      • Update user profile by id (Admin)
        PATCH
      • Update user email by id (Admin)
        PATCH
      • Update user role by id (Superadmin)
        PATCH
    • Auth
      • Token yenileme
        POST
      • Kullanıcı çıkışı
        POST
      • Request OTP (Login or Register)
        POST
      • Verify OTP (Login or Register)
        POST
      • Complete registration
        POST
      • Get registration status
        GET
    • Courses
      • Create a new course (Admin only)
        POST
      • Get all courses
        GET
      • Duplicate an existing course
        POST
      • Kurs detayını görüntüle
        GET
      • Update an existing course (Admin only)
        PATCH
      • Delete a course (Admin only)
        DELETE
    • Storage
      • Upload a file to storage
    • Proficiency Tests
      • Create a new proficiency test
      • List available proficiency tests
      • Duplicate an existing proficiency test
      • Update an existing proficiency test
      • Get test details
      • Delete proficiency test (Admin)
      • Get available target languages
      • Get detailed test result (Admin)
      • Delete test result (Admin)
      • Get all test results (Admin)
      • Get test results for a specific user (Admin)
      • Get current user results
      • Get detailed test result
      • Check if user has completed the test
      • Submit a proficiency test
    • Settings
      • Get setting by key
      • Create or update a setting (Admin)
    • Education Materials
      • Create a new education material with multiple PDFs and videos
      • List all education materials with optional locale filtering
      • Assign an education material to one or more users (Admin)
      • Get assigned education materials for current user
      • Get assigned education materials for a specific user (Admin)
      • Get detailed information about a specific education material
      • Update education material details and/or add new PDFs
      • Delete an education material
    • Contact
      • Submit a contact request
      • Get contact requests (Admin)
      • Reply to a contact request (Admin)
      • Delete a contact request (Admin)
      • Update contact status (Admin)
    • Admin Dashboard
      • Get aggregated dashboard metrics for admin panel
    • Schemas
      • UserDocument
      • BaseResponseDto
      • RequestOtpDto
      • VerifyOtpDto
      • HelloResponseDto
      • AuthResponseDto
      • UserProfileDto
      • UserProfileResponseDto
      • UserResponseDto
      • UpdateMeProfileDto
      • OptionalAuthResponseDto
      • PaginationDto
      • AdminUpdateUserProfileDto
      • AdminUpdateUserEmailDto
      • OtpResponseDto
      • UpdateUserRoleDto
      • DeleteResponseDto
      • RefreshTokenDto
      • LogoutResponseDto
      • RequestOtpUnifiedDto
      • VerifyOtpUnifiedDto
      • CompleteRegistrationResponseDto
      • CompleteRegistrationDto
      • RegistrationStatusResponseDto
      • CourseResponseDto
      • UploadFileResponseDto
      • LevelRangeResponseDto
      • ProficiencyOptionResponseDto
      • ProficiencyQuestionResponseDto
      • ProficiencyTestDetailResponseDto
      • OptionDto
      • QuestionDto
      • LevelRangeDto
      • CreateProficiencyTestDto
      • UpdateProficiencyTestDto
      • ProficiencyTestListResponseDto
      • TargetLanguagesResponseDto
      • UserTestAnswerResponseDto
      • UserTestResultUserSummaryDto
      • UserTestResultTestSummaryDto
      • UserTestResultResponseDto
      • DeleteUserTestResultResponseDto
      • UserTestResultListResponseDto
      • UserTestStatusSummaryDto
      • UserTestStatusResponseDto
      • DeleteProficiencyTestResponseDto
      • AnswerDto
      • SubmitTestDto
      • SettingValueResponseDto
      • SettingResponseDto
      • UpsertSettingDto
      • MaterialPdfResponseDto
      • MaterialVideoResponseDto
      • EducationMaterialResponseDto
      • CreateEducationMaterialDto
      • AssignEducationMaterialSummaryDto
      • AssignEducationMaterialDto
      • AssignedByResponseDto
      • AssignedEducationMaterialResponseDto
      • MyAssignedEducationMaterialsResponseDto
      • UserSummaryForAssignmentsDto
      • AdminUserAssignedMaterialsResponseDto
      • UpdateEducationMaterialDto
      • DeleteEducationMaterialResponseDto
      • ContactResponseDto
      • CreateContactRequestDto
      • ReplyContactRequestDto
      • UpdateContactStatusRequestDto
      • DashboardUsersOverviewDto
      • DashboardCoursesOverviewDto
      • DashboardTestsOverviewDto
      • DashboardContactsOverviewDto
      • DashboardMaterialsOverviewDto
      • DashboardOverviewDto
      • DashboardTrendDto
      • DashboardDistributionItemDto
      • DashboardLevelDistributionItemDto
      • DashboardLanguageDistributionItemDto
      • DashboardDistributionsDto
      • DashboardRecentContactDto
      • DashboardRecentResultDto
      • DashboardRecentActivityDto
      • AdminDashboardStatsResponseDto

    02 - User Guide

    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ı#

    KategoriRoute ÖrnekleriDosya Kanıtı
    Public/{locale}, /{locale}/about, /{locale}/courses, /{locale}/contact, /{locale}/proficiency-testenglishcamplanding/app/[locale]/page.tsx, englishcamplanding/app/[locale]/courses/page.tsx, englishcamplanding/app/[locale]/contact/page.tsx
    Auth/{locale}/login, /{locale}/otp-verification, /{locale}/complete-registrationenglishcamplanding/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.
    Kanıt dosyaları:
    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.
    Kanıt dosyaları:
    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.
    Kanıt dosyası:
    englishcamplanding/app/[locale]/proficiency-test/page.tsx

    3.4 Dashboard (kullanıcı)#

    Profil güncelleme (age/phone/gender/city/country)
    Test sonuçlarını görme
    Atanan materyalleri görme
    Kanıt dosyası:
    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
    Kanıt dosyaları:
    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
    Kanıt dosyaları:
    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#

    Test CRUD + duplicate
    Sonuç listesi ve detay
    Kanıt dosyaları:
    englishcamplanding/app/[locale]/admin/proficiency-tests/page.tsx
    englishcamplanding/app/[locale]/admin/proficiency-tests/results/page.tsx

    4.4 Eğitim materyali yönetimi#

    Materyal CRUD
    Kullanıcılara materyal atama
    Kanıt dosyaları:
    englishcamplanding/app/[locale]/admin/education-materials/page.tsx
    englishcamplanding/app/[locale]/admin/education-materials/EducationMaterialForm.tsx

    4.5 Contact / Settings / Statistics#

    Contact taleplerini yanıtlama ve statü yönetimi
    Landing video URL ayarı (landing_video_url)
    Umami iframe üzerinden istatistik görüntüleme
    Kanıt dosyaları:
    englishcamplanding/app/[locale]/admin/contacts/page.tsx
    englishcamplanding/app/[locale]/admin/settings/page.tsx
    englishcamplanding/app/[locale]/admin/statistics/page.tsx

    5) Rol Matrisi#

    İşlemPublicUserAdminSuperadminKanıt
    Landing/kurs/iletişim sayfalarıEvetEvetEvetEvetenglishcamplanding/app/[locale]/*
    OTP request/verifyEvetEvetEvetEvetenglishcampbackend/src/auth/auth.controller.ts
    Kendi profilini görüntüleme (GET /me)HayırEvetEvetEvetenglishcampbackend/src/users/user.controller.ts
    Kendi profili patch (PATCH /me/profile)HayırEvetEvetEvetenglishcampbackend/src/users/user.controller.ts
    User list (GET /users)HayırHayırEvetEvetenglishcampbackend/src/users/user.controller.ts
    Kullanıcı rolü değişimi (PATCH /users/:id/role)HayırHayırHayırEvetenglishcampbackend/src/users/user.controller.ts
    Kurs create/update/deleteHayırHayırEvetEvetenglishcampbackend/src/courses/controllers/courses.controller.ts
    Test create/update/deleteHayırHayırEvetEvetenglishcampbackend/src/proficiency-tests/controllers/proficiency-tests.controller.ts
    Test submitHayırEvetEvetEvetenglishcampbackend/src/proficiency-tests/controllers/proficiency-tests.controller.ts
    Materyal atamaHayırHayırEvetEvetenglishcampbackend/src/education-materials/controllers/education-materials.controller.ts

    6) Veri Modeli (Kullanıcı Akışı Odaklı Özet)#

    VarlıkKullanıcıya EtkisiKanıt
    UserDashboard profil alanları (age, phone, gender, city, country vb.)englishcampbackend/src/users/schemas/user.schema.ts, englishcamplanding/app/[locale]/dashboard/page.tsx
    CourseKurs liste/detay içeriklerienglishcampbackend/src/courses/schemas/course.schema.ts, englishcamplanding/app/[locale]/courses/page.tsx
    ProficiencyTestSınav içeriği ve soru/opsiyon yapısıenglishcampbackend/src/proficiency-tests/schemas/proficiency-test.schema.ts
    UserTestResultDashboard test sonuç ekranıenglishcampbackend/src/proficiency-tests/schemas/user-test-result.schema.ts, englishcamplanding/app/[locale]/dashboard/page.tsx
    EducationMaterial + AssignmentKullanı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.md

    7) Env Değişkenleri (Kullanıcı Akışını Etkileyen)#

    DeğişkenKatmanEtkiVarsayılan/FallbackKanıt
    NEXT_PUBLIC_API_URLFrontendUI -> API çağrılarıhttp://localhost:3000englishcamplanding/api/http/axios.ts
    NEXT_PUBLIC_SITE_URLFrontendCanonical/sitemap/robotshttps://englishcamplanding.vercel.appenglishcamplanding/lib/seo.ts
    FRONTEND_BASE_URLBackendMateryal 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_*BackendOTP ve reply e-posta gönderimiMAIL_PORT=587 fallbackenglishcampbackend/src/common/services/email.service.ts

    8) API Endpointleri (Kullanıcı Rehberi Odaklı Özet)#

    MethodPathKim KullanırAçıklama
    POST/auth/otp/requestPublicOTP kodu ister
    POST/auth/otp/verifyPublicOTP doğrular, token döner
    POST/auth/complete-registrationUserProfil tamamlama
    GET/meUser/AdminOturumdaki kullanıcı profili
    PATCH/me/profileUser/AdminKendi profilini günceller
    GET/coursesPublicKurs listesi
    GET/courses/:idPublicKurs detayı
    GET/proficiency-testsPublicTest listesi
    POST/proficiency-tests/:id/submitUser/AdminTest gönderimi
    GET/proficiency-tests/results/meUser/AdminKendi sonuçları
    POST/contactPublicİletişim formu oluşturur
    GET/education-materials/my-materialsUser/AdminKullanıcıya atanmış materyaller
    Tam endpoint listesi için: 03 - Technical Guide
    Modified at 2026-02-14 10:13:54
    Previous
    01 - Overview
    Next
    03 - Technical Guide
    Built with