Skip to content

Latest commit

 

History

41 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Templbay

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.

Proje Tanımı

  • 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.

Tech Stack

Backend (Templbay.API)

  • 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

Altyapı

  • Docker Compose (PostgreSQL + API)
  • Local dosya depolama (wwwroot/uploads)

Proje Mimarisi

Katmanlar

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

Yüksek Seviye Akış

  1. Frontend çağrıları '/api/*' üzerinden gider.
  2. Next.js rewrites ile çağrılar backend originine yönlendirilir.
  3. Backend controller -> service -> EF Core -> PostgreSQL akışıyla işlemi tamamlar.
  4. Upload edilen medya/dosyalar wwwroot/uploads altında tutulur ve statik olarak servis edilir.

Dizin Yapısı

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

Roller ve Yetkilendirme

  • 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.

Tüm Endpointler

Not: Aksi belirtilmedikçe tüm endpointlerin kökü /{host}/api/... şeklindedir.

Sistem

Method Path Auth Açıklama
GET /health Yok Uygulama health check

Auth

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)

Categories

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

Products

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)

Reviews

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

Reports

Method Path Auth Açıklama
POST /api/products/{productId}/reports Gerekli Ürün raporu oluştur

Users

Method Path Auth Açıklama
GET /api/users/{userName} Yok Public profil getir

Wishlist

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

Admin

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

Veri Modeli (Özet)

Ana tablolar:

  • Users
  • Products
  • Categories
  • Tags, ProductTags
  • ProductImages, ProductFiles
  • Reviews
  • ProductReports
  • Wishlists
  • Orders, OrderItems, Payments (entity/migration mevcut)

Ortam Değişkenleri

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.

Çalıştırma

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

2) Frontend (Local)

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.

Yardımcı İçerikler

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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages