Templbay, dijital ürünlerin (template, UI kit, plugin, grafik, 3D asset, uygulama vb.) listelendiği, yönetildiği ve indirilebildiği bir pazar yeri uygulamasıdır.
Kullanıcılar kayıt olur, giriş yapar ve profilini yönetir.
Kullanıcılar Creator rolüne geçip ürün yayınlayabilir.
Ürünler kategori, etiket, arama ve sıralama ile listelenebilir.
Kullanıcılar ürünleri favorilere ekleyebilir, yorum yapabilir, ürün raporlayabilir.
Admin paneli ile kullanıcı/ürün/yorum/rapor moderasyonu yapılabilir.
ASP.NET Core Web API (net9.0)
Entity Framework Core 9
PostgreSQL (Npgsql EF provider)
JWT Bearer Authentication
Swagger / OpenAPI (Development ortamında aktif)
BCrypt (BCrypt.Net-Next) parola hashleme
Frontend (templbay-frontend)
Next.js 16.2.2 (App Router)
React 19.2.3
Axios
React Markdown (react-markdown, remark-gfm, rehype-sanitize)
Lucide icons
Docker Compose (PostgreSQL + API)
Local dosya depolama (wwwroot/uploads)
Controllers: HTTP endpointleri ve request/response yönetimi
Services: iş kuralları ve uygulama mantığı
Data: AppDbContext, migration, seeding
Models: domain entity sınıfları
DTOs: API input/output contractları
Frontend çağrıları '/api/*' üzerinden gider.
Next.js rewrites ile çağrılar backend originine yönlendirilir.
Backend controller -> service -> EF Core -> PostgreSQL akışıyla işlemi tamamlar.
Upload edilen medya/dosyalar wwwroot/uploads altında tutulur ve statik olarak servis edilir.
Templbay/
├─ Templbay.API/ # ASP.NET Core API
│ ├─ Controllers/
│ ├─ Services/
│ ├─ Data/
│ ├─ Models/
│ ├─ DTOs/
│ └─ Migrations/
├─ templbay-frontend/ # Next.js frontend
│ ├─ src/app/
│ ├─ src/components/
│ ├─ src/context/
│ └─ src/services/
├─ examples/ # örnek ürün içerikleri
├─ docs/ # detaylı dokümantasyon
└─ docker-compose.yml
User: temel kullanıcı işlemleri
Creator: ürün oluşturma/yönetme + User yetkileri
Admin: yönetim endpointlerine erişim
JWT token, Authorization: Bearer <token> ile gönderilir.
Not: Aksi belirtilmedikçe tüm endpointlerin kökü /{host}/api/... şeklindedir.
Method
Path
Auth
Açıklama
GET
/health
Yok
Uygulama health check
Method
Path
Auth
Açıklama
POST
/api/auth/register
Yok
Kayıt ol
POST
/api/auth/login
Yok
Giriş yap
GET
/api/auth/me
Gerekli
Oturumdaki kullanıcıyı getir
PUT
/api/auth/profile
Gerekli
Profil güncelle
PUT
/api/auth/password
Gerekli
Şifre değiştir
POST
/api/auth/become-creator
Gerekli
Creator rolüne geç
DELETE
/api/auth/account
Gerekli
Kendi hesabını sil
POST
/api/auth/upload-avatar
Gerekli
Avatar yükle (multipart/form-data)
Method
Path
Auth
Açıklama
GET
/api/categories
Yok
Tüm kategoriler
GET
/api/categories/{id}
Yok
Kategori detayı
POST
/api/categories
Admin
Kategori oluştur
PUT
/api/categories/{id}
Admin
Kategori güncelle
DELETE
/api/categories/{id}
Admin
Kategori sil
Method
Path
Auth
Açıklama
GET
/api/products
Yok
Ürün listele (page, pageSize, categoryId, search, tag, sortBy)
GET
/api/products/{slug}
Yok
Slug ile ürün detayı
GET
/api/products/download/{productId}
Yok
Ürün dosyasını indir
GET
/api/products/mine
Creator/Admin
Kendi ürünlerini getir
GET
/api/products/mine/archived
Creator/Admin
Arşiv ürünleri getir
GET
/api/products/by-id/{id}
Creator/Admin
ID ile ürün getir
POST
/api/products
Creator/Admin
Ürün oluştur
PUT
/api/products/{id}
Creator/Admin
Ürün güncelle
DELETE
/api/products/{id}
Creator/Admin
Soft delete
PUT
/api/products/{id}/restore
Creator/Admin
Soft delete geri al
DELETE
/api/products/{id}/permanent
Creator/Admin
Kalıcı sil
POST
/api/products/upload-image
Creator/Admin
Galeri görseli yükle (multipart/form-data)
POST
/api/products/upload-file
Creator/Admin
Deliverable dosyası yükle (multipart/form-data)
Method
Path
Auth
Açıklama
GET
/api/products/{productId}/reviews
Yok
Ürün yorumları
POST
/api/products/{productId}/reviews
Gerekli
Yorum oluştur
PUT
/api/products/{productId}/reviews/{id}/approve
Admin
Yorumu onayla
Method
Path
Auth
Açıklama
POST
/api/products/{productId}/reports
Gerekli
Ürün raporu oluştur
Method
Path
Auth
Açıklama
GET
/api/users/{userName}
Yok
Public profil getir
Method
Path
Auth
Açıklama
GET
/api/wishlist
Gerekli
Favori listesi
POST
/api/wishlist/{productId}
Gerekli
Favoriye ekle
DELETE
/api/wishlist/{productId}
Gerekli
Favoriden çıkar
Method
Path
Auth
Açıklama
GET
/api/admin/users
Admin
Kullanıcıları sayfalı getir
POST
/api/admin/users
Admin
Yeni kullanıcı oluştur
PUT
/api/admin/users/{id}
Admin
Kullanıcı güncelle
DELETE
/api/admin/users/{id}
Admin
Kullanıcı sil
PUT
/api/admin/users/{id}/role
Admin
Kullanıcı rolü güncelle
GET
/api/admin/products
Admin
Tüm ürünleri getir
PUT
/api/admin/products/{id}/status
Admin
Ürün statüsü güncelle
GET
/api/admin/reviews
Admin
Tüm yorumlar
PUT
/api/admin/reviews/{id}/approve
Admin
Yorumu onayla
DELETE
/api/admin/reviews/{id}
Admin
Yorumu sil
GET
/api/admin/reports
Admin
Raporları getir (status query opsiyonel)
PUT
/api/admin/reports/{id}/status
Admin
Rapor statüsü güncelle
Ana tablolar:
Users
Products
Categories
Tags, ProductTags
ProductImages, ProductFiles
Reviews
ProductReports
Wishlists
Orders, OrderItems, Payments (entity/migration mevcut)
Kök .env dosyası (.env.example referans):
Değişken
Açıklama
POSTGRES_PASSWORD
PostgreSQL şifresi
JWT_SECRET
En az 32 karakter JWT secret
FRONTEND_ORIGIN
API CORS için frontend origin
ALLOWED_ADMIN_USER_IDS
Virgülle ayrılmış admin user id listesi
API_BASE_URL
Frontend rewrite için API origin (http://localhost:5018)
Backend appsettings örneği: Templbay.API/appsettings.example.json.
1) Docker ile Backend + DB
Copy-Item .env.example .env
# .env içeriğini doldur
docker compose up -- build
API: http://localhost:5018
DB: localhost:5433
cd templbay-frontend
npm install
npm run dev
Frontend: http://localhost:3000
Next.js, /api/* ve /uploads/* isteklerini backend’e rewrite eder.
Production build sırasında API_BASE_URL zorunludur.
3) Backend’i Docker yerine local çalıştırmak isterseniz
cd Templbay.API
dotnet restore
dotnet run
Local profil varsayılan URL: http://localhost:5018
Swagger (yalnızca Development): http://localhost:5018/swagger
Seed ve Migration Notları
Uygulama açılışında migration otomatik uygulanır (db.Database.Migrate()).
Varsayılan kategori seti idempotent olarak seed edilir.
Security:AllowedAdminUserIds üzerinden admin rolü senkronizasyonu yapılır.
examples/: hızlı yükleme için örnek ürün paketleri
examples/upload_examples.py: örnekleri API üzerinden otomatik yükleme scripti
docs/: mimari ve deployment runbook dokümanları