1) Kapsam#
Bu doküman, aşağıdaki iki projenin kod temelli analiz özetidir:englishcamplanding: Next.js landing + kullanıcı paneli + admin paneli
englishcampbackend: NestJS backend API
2) Proje Özeti#
| Proje | Teknoloji | Ana Sorumluluk | Kanıt Dosyalar |
|---|
englishcamplanding | Next.js 16, React 19, TypeScript, TanStack Query, Zod | Çok dilli landing, OTP tabanlı giriş, kullanıcı dashboard, admin UI | englishcamplanding/package.json, englishcamplanding/app/[locale]/layout.tsx, englishcamplanding/api/services/*.ts |
englishcampbackend | NestJS 11, Mongoose, JWT, Swagger, Mailer | Auth, kullanıcı yönetimi, kurslar, placement test, eğitim materyali, contact, admin dashboard | englishcampbackend/src/app/app.module.ts, englishcampbackend/src/main.ts, englishcampbackend/src/*/controllers/*.ts |
3) Yüksek Seviye Mimari#
4) Backend Modül Haritası (Özet)#
| Modül | Base Path | Amaç |
|---|
| App | / | Basit root endpoint |
| Auth | /auth | OTP, refresh, logout, registration completion/status |
| Users | /me, /users, /admin/users | Profil, kullanıcı liste/detay, rol, silme |
| Courses | /courses | Kurs CRUD + duplicate |
| Proficiency Tests | /proficiency-tests | Sınav CRUD, submit, sonuçlar, admin sonuç ekranları |
| Education Materials | /education-materials | Materyal CRUD, kullanıcı atama, kullanıcı materyalleri |
| Contact | /contact | İletişim formu + admin yanıt/iş akışı |
| Settings | /settings | Anahtar-değer ayarları (örn. landing video URL) |
| Admin Dashboard | /admin/dashboard | Toplu istatistik/dağılım/trend verileri |
| Storage | /storage | Dosya yükleme |
5) Rol Matrisi (Özet)#
| Rol | API Yetki Özeti | UI Yetki Özeti | Kanıt |
|---|
| Public | Public endpoint'lere erişim (/auth/otp/*, kurs/sınav liste/detay, contact create) | Landing, kurslar, login/otp sayfaları | englishcampbackend/src/auth/auth.controller.ts, englishcampbackend/src/courses/controllers/courses.controller.ts, englishcampbackend/src/common/controllers/contact.controller.ts |
| User | JWT gereken user endpoint'ler (/me, /me/profile, sınav submit/sonuç, my-materials) | Dashboard ve profil düzenleme | englishcampbackend/src/users/user.controller.ts, englishcampbackend/src/proficiency-tests/controllers/proficiency-tests.controller.ts, englishcamplanding/app/[locale]/dashboard/page.tsx |
| Admin | AdminGuard endpoint'leri (kullanıcı listesi, materyal admin işlemleri, contact admin, dashboard) | Admin panel menüleri ve sayfaları | englishcampbackend/src/auth/guards/admin.guard.ts, englishcamplanding/app/[locale]/admin/layout.tsx |
| Superadmin | Admin + /users/:id/role | Admin UI'da rol değişimi açılır | englishcampbackend/src/users/user.controller.ts, englishcampbackend/src/auth/guards/superadmin.guard.ts, englishcamplanding/app/[locale]/admin/users/page.tsx |
6) Veri Modeli (Özet)#
| Varlık | Amaç | Kanıt |
|---|
User | Kimlik, rol ve profil bilgisi | englishcampbackend/src/users/schemas/user.schema.ts |
Course | Kurs verisi ve medya alanları | englishcampbackend/src/courses/schemas/course.schema.ts |
ProficiencyTest | Test tanımı ve sorular | englishcampbackend/src/proficiency-tests/schemas/proficiency-test.schema.ts |
UserTestResult | Kullanıcı test sonuçları | englishcampbackend/src/proficiency-tests/schemas/user-test-result.schema.ts |
EducationMaterial + UserEducationMaterialAssignment | Materyal ve kullanıcı atama ilişkisi | englishcampbackend/src/education-materials/schemas/education-material.schema.ts, englishcampbackend/src/education-materials/schemas/user-education-material-assignment.schema.ts |
Contact | İletişim talepleri ve admin yanıtları | englishcampbackend/src/common/schemas/contact.schema.ts |
Setting | Uygulama ayarları (key/value) | englishcampbackend/src/settings/schemas/setting.schema.ts |
Detaylı ER diyagram ve tam model listesi için: docs/03-technical-guide.md7) Env Değişkenleri (Özet)#
| Değişken | Proje | Amaç | Varsayılan/Fallback | Kanıt |
|---|
NEXT_PUBLIC_API_URL | landing | API base URL | http://localhost:3000 | englishcamplanding/api/http/axios.ts |
NEXT_PUBLIC_SITE_URL | landing | Canonical/sitemap/robots base URL | https://englishcamplanding.vercel.app | englishcamplanding/lib/seo.ts, englishcamplanding/app/sitemap.ts |
NEXT_PUBLIC_UMAMI_WEBSITE_ID | landing | Umami analytics site id | Kod içi default mevcut | englishcamplanding/components/analytics/analytics-loader.tsx |
NEXT_PUBLIC_GA_MEASUREMENT_ID | landing | Google Analytics ölçüm id | Yoksa GA script render edilmez | englishcamplanding/components/analytics/google-analytics.tsx |
MONGODB_URI | backend | MongoDB bağlantısı | mongodb://localhost:27017/englishcamp | englishcampbackend/src/config/mongodb.config.ts |
JWT_SECRET | backend | JWT imzalama | your-secret-key-change-in-production | englishcampbackend/src/config/jwt.config.ts |
MAIL_* | backend | SMTP gönderim ayarları | MAIL_PORT için 587 fallback | englishcampbackend/src/config/mail.config.ts |
R2_* | backend | Cloudflare R2 erişim ayarları | Fallback yok | englishcampbackend/src/config/r2.config.ts |
Detaylı tam env tablosu için: docs/03-technical-guide.md8) API Endpointleri (Özet)#
| Alan | Endpoint Sayısı | Not |
|---|
| App | 1 | Root health benzeri basit cevap |
| Auth | 6 | OTP + registration completion akışı |
| Users | 9 | Profil + admin kullanıcı yönetimi |
| Courses | 6 | Kurs CRUD + duplicate |
| Proficiency Tests | 15 | Sınav yaşam döngüsü + admin sonuç |
| Education Materials | 8 | Materyal CRUD + atama |
| Contact | 5 | Form + admin reply/status |
| Settings | 2 | key/value ayarı |
| Admin Dashboard | 1 | Aggregated metrikler |
| Storage | 1 | Dosya upload |
Detaylı tam endpoint tablosu için: docs/03-technical-guide.md9) Rate Limit Özeti#
| Kural/Endpoint | Limit | Pencere | Kanıt |
|---|
| Global default | 120 | 1 dakika | englishcampbackend/src/common/constants/rate-limit.constants.ts, englishcampbackend/src/app/app.module.ts |
POST /auth/refresh | 30 | 1 dakika | englishcampbackend/src/auth/auth.controller.ts |
POST /auth/otp/request | 5 | 5 dakika | englishcampbackend/src/auth/auth.controller.ts |
POST /auth/otp/verify | 12 | 5 dakika | englishcampbackend/src/auth/auth.controller.ts |
POST /contact | 6 | 1 saat | englishcampbackend/src/common/controllers/contact.controller.ts |
POST /storage/upload | 20 | 10 dakika | englishcampbackend/src/storage/storage.controller.ts |
Detaylı rate-limit tablosu için: docs/03-technical-guide.md, docs/04-operations.md10) Operasyon Snapshot (Kullanıcı Beyanı)#
| Alan | Değer |
|---|
| Orkestrasyon | Coolify |
| Sunucu | Hostinger KVM 1 |
| Coolify Project | EnglishCamp |
| Applications | Backend, Landing |
| Backend URL | https://api.englishcamper.com |
| Landing URL | https://englishcamper.com |
| Ek servis | BentoPDF (https://pdf.englishcamper.com) |
| DNS | Cloudflare * için A kaydı |
| Deploy tetikleme | GitHub main branch’e yeni commit geldiğinde deploy |
Modified at 2026-02-14 10:35:33