Bu proje, çok rollü (Admin, Satıcı, Müşteri) bir e-ticaret platformu için geliştirilmiş, Node.js tabanlı, ölçeklenebilir ve güvenli bir RESTful API sunucusudur.
- Özellikler
- Teknolojiler
- Kurulum
- API Dokümantasyonu
- Proje Yapısı
- Kullanım
- Katkıda Bulunma
- Gelecek Planları
- Lisans
- JWT (JSON Web Token) tabanlı güvenli kimlik doğrulama
- Rol tabanlı yetkilendirme (RBAC) sistemi
- Desteklenen roller:
Admin,Seller,Customer,Applicant
- İki Katmanlı Ürün Sistemi:
- Base Product (Toptan ürünler) - Admin yönetimi
- Store Product (Mağaza ürünleri) - Satıcı yönetimi
- Kapsamlı ürün kategorilendirme
- Stok takibi ve yönetimi
- Sepet oluşturma ve yönetimi
- Sipariş verme akışı
- Ödeme onayı sistemi
- Sipariş durumu takibi
- Mongoose Transactions kullanımı
- Kritik işlemlerde ACID özelliklerinin korunması
- Ödeme onayı ve satıcı başvuru süreçlerinde güvenli veri işleme
- Kullanıcıların satıcı başvurusu yapabilmesi
- Admin onay/red sistemi
- Başvuru durumu takibi
- OpenAPI (Swagger) standartlarında hazırlanmış
- İnteraktif API dokümantasyonu
- Tüm endpoint'lerin detaylı açıklamaları
- Soft-delete (pasif silme) sistemi
- Mongoose
.lean()ve.populate()optimizasyonları - Verimli sorgu performansı
| Kategori | Teknoloji |
|---|---|
| Backend | Node.js, Express.js |
| Veritabanı | MongoDB, Mongoose (ODM) |
| Güvenlik | JSON Web Token (JWT), bcryptjs |
| Dokümantasyon | Swagger (OpenAPI), swagger-ui-express, yamljs |
| Diğer | dotenv, cors |
- Node.js (v18.0.0 veya üstü)
- MongoDB (Community veya Atlas)
- npm veya yarn paket yöneticisi
-
Repository'yi klonlayın:
git clone https://github.com/Tahir1072a/e_ticaret.git cd e_ticaret -
Bağımlılıkları yükleyin:
npm install
-
Ortam değişkenlerini yapılandırın:
Proje kök dizininde
.envdosyası oluşturun:# MongoDB Bağlantı URL'i MONGO_URI=mongodb+srv://<username>:<password>@cluster.mongodb.net/<database>?retryWrites=true&w=majority # JWT Gizli Anahtarı (güçlü bir parola kullanın) JWT_SECRET=super_secret_jwt_key_2024_secure_random_string # Sunucu Portu (opsiyonel, varsayılan: 3000) PORT=3000 # Node Ortamı NODE_ENV=development
-
Uygulamayı başlatın:
Geliştirme modunda:
npm run dev
Üretim modunda:
npm start
-
Başarılı kurulumu doğrulayın:
Tarayıcınızda
http://localhost:3000adresini ziyaret edin.
Sunucu çalışırken, kapsamlı ve interaktif API dokümantasyonuna aşağıdaki adresten erişebilirsiniz:
🌐 http://localhost:3000/api-docs
| Grup | Endpoint | Açıklama |
|---|---|---|
| Auth | POST /api/auth/login |
Kullanıcı girişi |
| Auth | POST /api/auth/register |
Kullanıcı kaydı |
| Products | GET /api/products |
Ürün listesi |
| Orders | POST /api/orders |
Sipariş oluşturma |
| Cart | GET /api/cart |
Sepet görüntüleme |
| Admin | GET /api/admin/users |
Kullanıcı yönetimi |
e_ticaret/
├── 📁 controllers/ # İş mantığı ve request handling
│ ├── authController.js
│ ├── productController.js
│ ├── orderController.js
│ └── adminController.js
├── 📁 middleware/ # Ara katman fonksiyonları
│ ├── auth.js
│ ├── rbac.js
│ └── validation.js
├── 📁 models/ # MongoDB şemaları
│ ├── User.js
│ ├── BaseProduct.js
│ ├── StoreProduct.js
│ └── Order.js
├── 📁 routes/ # API route tanımları
│ ├── auth.js
│ ├── products.js
│ ├── orders.js
│ └── admin.js
├── 📁 services/ # İş mantığı servisleri
│ ├── authService.js
│ ├── productService.js
│ └── paymentService.js
├── 📁 settings/ # Yapılandırma dosyaları
│ └── swagger.yaml
├── 📄 .env.example # Örnek ortam değişkenleri
├── 📄 package.json
├── 📄 README.md
└── 📄 server.js # Ana sunucu dosyası
// Kayıt
POST /api/auth/register
{
"name": "John Doe",
"email": "john@example.com",
"password": "securepassword",
"role": "Customer"
}
// Giriş
POST /api/auth/login
{
"email": "john@example.com",
"password": "securepassword"
}// Ürün listesi
GET /api/products?page=1&limit=10&category=electronics
// Ürün detayı
GET /api/products/:id// Sepete ürün ekleme
POST /api/cart/add
{
"productId": "product_id",
"quantity": 2
}
// Sipariş oluşturma
POST /api/orders
{
"items": [...],
"shippingAddress": {...}
}Projeye katkıda bulunmak isterseniz:
- Projeyi fork edin
- Feature branch oluşturun (
git checkout -b feature/amazing-feature) - Değişikliklerinizi commit edin (
git commit -m 'Add some amazing feature') - Branch'inizi push edin (
git push origin feature/amazing-feature) - Pull Request açın
Bu proje MIT Lisansı altında lisanslanmıştır.
Proje Sahibi: Tahir1072a
GitHub: https://github.com/Tahir1072a/e_ticaret
⭐ Projeyi beğendiyseniz yıldız vermeyi unutmayın!
Made with ❤️ by Tahir1072a