Skip to content

cekYc/ModaShop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

E-Ticaret MVP - Giyim Magazasi

Modern bir giyim e-ticaret uygulamasi. NestJS + Prisma backend, Next.js frontend ve Docker Compose ile tam entegre calisir.

Teknolojiler

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

Ozellikler

Guvenlik

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

Kullanici Yonetimi

  • JWT tabanli kimlik dogrulama (Access + Refresh Token)
  • Kullanici kaydi ve girisi
  • Profil yonetimi
  • Adres ekleme/duzenleme

Urun Yonetimi

  • Urun listeleme ve filtreleme
  • Urun detay sayfasi
  • Kategoriye gore filtreleme (hiyerarsik)
  • Varyant secimi (beden, renk)
  • Stok takibi

Sepet

  • Veritabani tabanli sepet (oturum acinca korunur)
  • Urun ekleme/cikarma
  • Miktar guncelleme
  • Varyant bazli sepet

Siparis Yonetimi

  • Checkout islemi
  • Siparis olusturma
  • Siparis gecmisi
  • Siparis durumu takibi

Odeme Sistemi

  • Fake odeme saglayici (test icin)
  • Webhook endpoint
  • Odeme simulasyonu

Admin Paneli

  • Dashboard (istatistikler, son siparisler)
  • Urun CRUD islemleri
  • Varyant yonetimi
  • Stok guncelleme
  • Kategori yonetimi
  • Siparis listeleme ve durum guncelleme
  • Urun fotografi yukleme

UI/UX

  • Dark mode destegi (sistem tercihi + manuel)
  • Responsive tasarim
  • Loading state'leri
  • Toast bildirimleri

Proje Yapisi

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

Kurulum

Gereksinimler

  • 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

Lokal Gelistirme

# 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

Erisim Adresleri

Servis URL Aciklama
Frontend http://localhost:3000 Web uygulamasi
Admin Panel http://localhost:3000/admin Yonetim paneli
API http://localhost:3001 Backend API
PostgreSQL localhost:5432 Veritabani
Redis localhost:6379 Cache servisi

Demo Hesaplari

Rol Email Sifre
Admin admin@example.com Admin123!

API Endpoint'leri

Auth

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

Products

Method Endpoint Aciklama
GET /api/products Urun listesi
GET /api/products/:slug Urun detayi
GET /api/products?categoryId=X Kategoriye gore

Categories

Method Endpoint Aciklama
GET /api/categories Kategori listesi
GET /api/categories/:slug Kategori detayi

Cart

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

Orders

Method Endpoint Aciklama
GET /api/orders Siparislerim
GET /api/orders/:id Siparis detayi
POST /api/orders Siparis olustur

Payments

Method Endpoint Aciklama
POST /api/payments/initiate/:orderId Odeme baslat
POST /api/payments/webhook Webhook (provider)
GET /api/payments/status/:orderId Odeme durumu

Admin

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

Veritabani Semasi

User ----------+-------- Address
               |
               +-------- Cart --------- CartItem --------+
               |                                         |
               +-------- Order -------- OrderItem -------+------ ProductVariant
                           |                             |              |
                           +-- Payment                   |          Product
                                                         |              |
                                                         +------ ProductImage
                                                                        |
                                                                    Category

Modeller

  • 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

Ortam Degiskenleri

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

Production Notlari

Guvenlik Kontrol Listesi

  • Rate limiting (IP bazli)
  • Refresh token rotation
  • Webhook HMAC dogrulamasi
  • MIME spoof koruması (magic bytes)
  • Helmet HTTP headers
  • Input validation
  • HTTPS zorunlu kilma
  • CORS production ayarlari

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

Yol Haritasi

  • Rate limiting
  • Dark mode
  • Guvenlik sertlestirme
  • Urun arama (Elasticsearch)
  • Redis cache entegrasyonu
  • Gercek odeme entegrasyonu (Stripe/iyzico)
  • E-posta bildirimleri
  • Urun yorumlari ve puanlama
  • Favorilere ekleme
  • Kupon sistemi
  • Coklu dil destegi
  • PWA destegi

Lisans

MIT


Son Guncelleme: Ocak 2026

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published