E-Ticaret MVP - Giyim Magazasi
Modern bir giyim e-ticaret uygulamasi. NestJS + Prisma backend, Next.js frontend ve Docker Compose ile tam entegre calisir.
Katman
Teknoloji
Backend
NestJS 10, Prisma 5, PostgreSQL 15
Frontend
Next.js 14 (App Router), React 18, Tailwind CSS
Auth
JWT, Passport.js, bcrypt
Altyapi
Docker, Docker Compose, Redis
Rate limiting (IP bazli, brute-force koruması)
Refresh token rotation (eski tokenlar gecersiz)
HMAC-SHA256 webhook signature dogrulamasi
Magic bytes ile MIME spoof koruması
Helmet ile HTTP guvenlik header'lari
XSS sanitization
CSRF koruması
JWT tabanli kimlik dogrulama (Access + Refresh Token)
Kullanici kaydi ve girisi
Profil yonetimi
Adres ekleme/duzenleme
Urun listeleme ve filtreleme
Urun detay sayfasi
Kategoriye gore filtreleme (hiyerarsik)
Varyant secimi (beden, renk)
Stok takibi
Veritabani tabanli sepet (oturum acinca korunur)
Urun ekleme/cikarma
Miktar guncelleme
Varyant bazli sepet
Checkout islemi
Siparis olusturma
Siparis gecmisi
Siparis durumu takibi
Fake odeme saglayici (test icin)
Webhook endpoint
Odeme simulasyonu
Dashboard (istatistikler, son siparisler)
Urun CRUD islemleri
Varyant yonetimi
Stok guncelleme
Kategori yonetimi
Siparis listeleme ve durum guncelleme
Urun fotografi yukleme
Dark mode destegi (sistem tercihi + manuel)
Responsive tasarim
Loading state'leri
Toast bildirimleri
eTicaret/
|-- backend/
| |-- prisma/
| | |-- schema.prisma # Veritabani semasi
| | |-- migrations/ # Veritabani migration'lari
| | +-- seed.js # Ornek veri
| |-- src/
| | |-- auth/ # Kimlik dogrulama modulu
| | |-- users/ # Kullanici modulu
| | |-- categories/ # Kategori modulu
| | |-- products/ # Urun modulu
| | |-- cart/ # Sepet modulu
| | |-- orders/ # Siparis modulu
| | |-- payments/ # Odeme modulu
| | |-- upload/ # Dosya yukleme modulu
| | |-- admin/ # Admin modulu
| | +-- prisma/ # Prisma servisi
| +-- Dockerfile
|-- frontend/
| |-- src/
| | |-- app/ # Next.js sayfalari
| | |-- components/ # React bilesenleri
| | |-- contexts/ # Context providers
| | +-- lib/ # Yardimci fonksiyonlar
| +-- Dockerfile
|-- docker-compose.yml
|-- .gitignore
+-- README.md
Docker ve Docker Compose
Node.js 20+ (lokal gelistirme icin)
Docker ile Baslatma (Onerilen)
# Projeyi klonlayin
git clone < repo-url>
cd eTicaret
# .env dosyasini olusturun
cp .env.example .env
# Docker Compose ile baslatin
docker compose up -d
# Loglari izleyin
docker compose logs -f
# Backend
cd backend
npm install
cp .env.example .env
npm run prisma:generate
npm run prisma:migrate
npm run start:dev
# Frontend (yeni terminal)
cd frontend
npm install
npm run dev
Method
Endpoint
Aciklama
POST
/api/auth/register
Kullanici kaydi
POST
/api/auth/login
Giris
POST
/api/auth/refresh
Token yenileme
POST
/api/auth/logout
Cikis
GET
/api/auth/me
Mevcut kullanici
Method
Endpoint
Aciklama
GET
/api/products
Urun listesi
GET
/api/products/:slug
Urun detayi
GET
/api/products?categoryId=X
Kategoriye gore
Method
Endpoint
Aciklama
GET
/api/categories
Kategori listesi
GET
/api/categories/:slug
Kategori detayi
Method
Endpoint
Aciklama
GET
/api/cart
Sepeti getir
POST
/api/cart/add
Sepete ekle
PUT
/api/cart/item/:id
Miktar guncelle
DELETE
/api/cart/item/:id
Sepetten cikar
DELETE
/api/cart/clear
Sepeti temizle
Method
Endpoint
Aciklama
GET
/api/orders
Siparislerim
GET
/api/orders/:id
Siparis detayi
POST
/api/orders
Siparis olustur
Method
Endpoint
Aciklama
POST
/api/payments/initiate/:orderId
Odeme baslat
POST
/api/payments/webhook
Webhook (provider)
GET
/api/payments/status/:orderId
Odeme durumu
Method
Endpoint
Aciklama
GET
/api/admin/stats
Dashboard istatistikleri
GET
/api/admin/products
Tum urunler
POST
/api/admin/products
Urun ekle
PUT
/api/admin/products/:id
Urun guncelle
DELETE
/api/admin/products/:id
Urun sil
POST
/api/admin/products/:id/variants
Varyant ekle
PUT
/api/admin/variants/:id
Varyant guncelle
DELETE
/api/admin/variants/:id
Varyant sil
GET
/api/admin/orders
Tum siparisler
PUT
/api/admin/orders/:id/status
Siparis durumu
GET
/api/admin/categories
Tum kategoriler
POST
/api/admin/categories
Kategori ekle
PUT
/api/admin/categories/:id
Kategori guncelle
DELETE
/api/admin/categories/:id
Kategori sil
User ----------+-------- Address
|
+-------- Cart --------- CartItem --------+
| |
+-------- Order -------- OrderItem -------+------ ProductVariant
| | |
+-- Payment | Product
| |
+------ ProductImage
|
Category
User: Kullanici bilgileri, rol (USER/ADMIN)
Address: Teslimat adresleri
Category: Urun kategorileri (hiyerarsik, parent-child)
Product: Urun bilgileri
ProductVariant: Beden, renk, fiyat, stok
ProductImage: Urun gorselleri
Cart: Kullanici sepeti
CartItem: Sepet urunleri
Order: Siparisler
OrderItem: Siparis kalemleri
Payment: Odeme kayitlari
Asagidaki degiskenler .env dosyasinda tanimlanmalidir:
DATABASE_URL=postgresql://postgres:postgres@db:5432/ecommerce
JWT_SECRET=your-super-secret-jwt-key
JWT_REFRESH_SECRET=your-super-secret-refresh-key
JWT_EXPIRATION=15m
JWT_REFRESH_EXPIRATION=7d
PORT=3001
NEXT_PUBLIC_API_URL=http://localhost:3001
Ortam Degiskenleri (Production)
# Güçlü, benzersiz secret'lar kullanin
JWT_SECRET=< min-32-karakter-rastgele>
JWT_REFRESH_SECRET=< min-32-karakter-rastgele>
WEBHOOK_SECRET=< min-32-karakter-rastgele>
# Production'da debug kapatın
NODE_ENV=production
MIT
Son Guncelleme: Ocak 2026