• 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

    04 - Operations

    1) Çalıştırma Ön Koşulları#

    GereksinimDetayKanıt
    Node.jsFrontend ve backend Node tabanlıenglishcamplanding/package.json, englishcampbackend/package.json
    MongoDBBackend Mongoose ile bağlanırenglishcampbackend/src/database/database.module.ts
    SMTPOTP/contact/material mail akışı için gereklienglishcampbackend/src/common/modules/email.module.ts
    Cloudflare R2Dosya upload için gereklienglishcampbackend/src/storage/storage.service.ts

    2) Local Development#

    2.1 Backend#

    Varsayılan port: 3000 (PORT yoksa)
    Swagger: http://localhost:3000/api/docs
    Swagger JSON: http://localhost:3000/swagger/json
    Kanıt: englishcampbackend/src/main.ts

    2.2 Frontend#

    API base URL: NEXT_PUBLIC_API_URL (fallback http://localhost:3000)
    Kanıt: englishcamplanding/api/http/axios.ts

    2.3 Production Deployment (Coolify)#

    AlanDeğer
    Sunucu sağlayıcısıHostinger
    Sunucu paketiKVM 1
    OrkestrasyonCoolify
    Coolify Project adıEnglishCamp
    Application'larBackend, Landing
    Backend URLhttps://api.englishcamper.com
    Landing URLhttps://englishcamper.com
    Ek servisBentoPDF (https://pdf.englishcamper.com)
    DNSCloudflare * için A kaydı
    Deploy stratejisiGitHub main branch’e yeni commit geldiğinde otomatik deploy
    Kaynak: Kullanıcı beyanı

    3) Build / Test / Quality Komutları#

    3.1 Backend Komutları#

    KomutAmaç
    npm run buildNest build
    npm run startDist çalıştırma
    npm run devWatch mode
    npm run testUnit test
    npm run test:e2eE2E test
    npm run lintESLint
    Kanıt: englishcampbackend/package.json

    3.2 Frontend Komutları#

    KomutAmaç
    npm run buildNext production build
    npm run startNext production server
    npm run devNext development server
    npm run lintESLint
    npm run e2ePlaywright test
    npm run e2e:headedHeaded Playwright
    npm run e2e:uiPlaywright UI
    Kanıt: englishcamplanding/package.json

    4) Operasyonel Sağlık Kontrolleri#

    4.1 Hızlı smoke-check#

    4.2 Kritik fonksiyon kontrolleri#

    1.
    OTP isteği: /auth/otp/request
    2.
    Refresh token: /auth/refresh
    3.
    Settings okuma: /settings/landing_video_url
    4.
    Upload: /storage/upload

    4.3 Production URL kontrolleri#

    5) Operasyonel API Endpoint Özeti#

    MethodEndpointAmaçNot
    GET/Servis ulaşılabilirlikBasit metin cevap
    GET/api/docsAPI dokümantasyonuSwagger UI
    GET/swagger/jsonMachine-readable schemaSwagger JSON
    POST/auth/refreshAccess token yenilemeFrontend interceptor tarafından kullanılıyor
    GET/settings/:keyRuntime ayar okumaLanding video URL burada tutuluyor
    PUT/settingsRuntime ayar güncellemeAdmin yetkisi gerekir
    POST/storage/uploadDosya yüklemeR2 konfigürasyonu gerekir
    GET/admin/dashboardOperasyon metrikleriAdmin yetkisi gerekir

    5.1 Rate Limit Özeti#

    Endpoint/KuralLimitPencereNotKanıt
    Global default1201 dakikaOverride olmayan tüm endpointlerenglishcampbackend/src/common/constants/rate-limit.constants.ts, englishcampbackend/src/app/app.module.ts
    POST /auth/refresh301 dakika@Throttle({ default: RATE_LIMITS.AUTH_REFRESH })englishcampbackend/src/auth/auth.controller.ts
    POST /auth/otp/request55 dakikaOTP istek korumasıenglishcampbackend/src/auth/auth.controller.ts
    POST /auth/otp/verify125 dakikaOTP doğrulama korumasıenglishcampbackend/src/auth/auth.controller.ts
    POST /contact61 saatContact create için ayrı limitenglishcampbackend/src/common/controllers/contact.controller.ts
    POST /storage/upload2010 dakikaUpload abuse korumasıenglishcampbackend/src/storage/storage.controller.ts
    Ek not:
    IP tracker x-forwarded-for başlığını önceliklendirir, yoksa req.ip kullanır.
    Kanıt: englishcampbackend/src/app/app.module.ts

    6) Env Değişkenleri (Operasyon Odaklı)#

    DeğişkenKatmanOperasyonel EtkiKanıt
    PORTBackendServis dinleme portuenglishcampbackend/src/main.ts
    MONGODB_URIBackendVeritabanı erişimienglishcampbackend/src/config/mongodb.config.ts
    JWT_SECRETBackendAuth güvenliğienglishcampbackend/src/config/jwt.config.ts
    JWT_EXPIRATION / JWT_REFRESH_EXPIRATIONBackendToken yaşam döngüsüenglishcampbackend/src/config/jwt.config.ts
    MAIL_HOST, MAIL_PORT, MAIL_USER, MAIL_PASS, MAIL_FROM_*BackendOTP/reply/material e-postalarıenglishcampbackend/src/config/mail.config.ts
    FRONTEND_BASE_URLBackendMail içi materyal linklerienglishcampbackend/src/education-materials/use-cases/assign-education-material-to-users.use-case.ts
    R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_BUCKET, R2_ENDPOINT, R2_BUCKET_CUSTOM_DOMAIN, R2_ACCOUNT_IDBackendUpload/saklamaenglishcampbackend/src/config/r2.config.ts
    NEXT_PUBLIC_API_URLFrontendAPI çağrı hedefienglishcamplanding/api/http/axios.ts
    NEXT_PUBLIC_SITE_URLFrontendSEO canonical/sitemap/robotsenglishcamplanding/lib/seo.ts
    NEXT_PUBLIC_UMAMI_WEBSITE_IDFrontendUmami analyticsenglishcamplanding/components/analytics/analytics-loader.tsx
    NEXT_PUBLIC_GA_MEASUREMENT_IDFrontendGA aç/kapatenglishcamplanding/components/analytics/google-analytics.tsx

    7) Operasyonel Rol Matrisi#

    İşlem/AlanPublicUserAdminSuperadminKanıt
    / ve /api/docs erişimiEvetEvetEvetEvetenglishcampbackend/src/app/app.controller.ts, englishcampbackend/src/main.ts
    /auth/refreshEvetEvetEvetEvetenglishcampbackend/src/auth/auth.controller.ts
    /settings/:key (read)EvetEvetEvetEvetenglishcampbackend/src/settings/controllers/settings.controller.ts
    /settings (upsert)HayırHayırEvetEvetenglishcampbackend/src/settings/controllers/settings.controller.ts
    /admin/dashboardHayırHayırEvetEvetenglishcampbackend/src/admin-dashboard/controllers/admin-dashboard.controller.ts
    /storage/uploadEvetEvetEvetEvetenglishcampbackend/src/storage/controllers/storage.controller.ts

    8) Veri Modeli (Operasyon Etkisi Olan Varlıklar)#

    VarlıkOperasyonel ÖnemiKanıt
    UserAuth ve yetkilendirme temel varlığıenglishcampbackend/src/users/schemas/user.schema.ts
    RefreshToken + BlacklistedTokenToken yaşam döngüsü ve logout güvenliğienglishcampbackend/src/users/schemas/refresh-token.schema.ts, englishcampbackend/src/users/schemas/blacklisted-token.schema.ts
    OtpOTP doğrulama işleyişienglishcampbackend/src/users/schemas/otp.schema.ts
    SettingRuntime key/value konfigürasyonlarıenglishcampbackend/src/settings/schemas/setting.schema.ts
    ContactMüşteri iletişim operasyonuenglishcampbackend/src/common/schemas/contact.schema.ts
    Course, ProficiencyTest, UserTestResultEğitim içeriği ve sınav operasyonlarıenglishcampbackend/src/courses/schemas/course.schema.ts, englishcampbackend/src/proficiency-tests/schemas/proficiency-test.schema.ts, englishcampbackend/src/proficiency-tests/schemas/user-test-result.schema.ts
    EducationMaterial + AssignmentDosya dağıtımı ve kullanıcı atama operasyonlarıenglishcampbackend/src/education-materials/schemas/education-material.schema.ts, englishcampbackend/src/education-materials/schemas/user-education-material-assignment.schema.ts
    Detaylı ER diyagram için: docs/03-technical-guide.md

    9) Operasyonel Gözlemler#

    Request body limiti global 50mb olarak set edilmiş.
    Kanıt: englishcampbackend/src/main.ts
    CORS origin: true ile geniş açık.
    Kanıt: englishcampbackend/src/main.ts
    Global request logları console.log ile yazılıyor.
    Kanıt: englishcampbackend/src/main.ts
    Frontend tarafında 401 durumunda refresh retry kuyruğu uygulanıyor.
    Kanıt: englishcamplanding/api/http/interceptors.ts

    10) E2E / Test Kapsamı Gözlemi#

    Frontend Playwright senaryoları: courses, proficiency tests, profile editing.
    Kanıt: englishcamplanding/e2e/*.spec.ts
    Backend e2e testleri mevcut, ancak kapsam sınırlı.
    Kanıt: englishcampbackend/test/*.e2e-spec.ts
    Modified at 2026-02-14 10:37:51
    Previous
    03 - Technical Guide
    Next
    Get application hello response
    Built with