Firmaların şantiye bazında yaptıkları tüm giderleri kategorize ederek kayıt altına alabileceği, kullanıcı yetkilerine göre yönetebileceği backend API projesi.
- JWT tabanlı kimlik doğrulama (Access & Refresh Token)
- Rol bazlı yetkilendirme (Admin, Editor, User)
- Şantiye CRUD işlemleri
- Maliyet kategorileri ve maliyet kayıtları
- Multer ile dosya/fatura yükleme
- Express-validator ile input validasyonu
- Swagger API dokümantasyonu
- Bcrypt ile şifre güvenliği
- CORS desteği
- Runtime: Node.js
- Framework: Express.js
- Veritabanı: MongoDB (Mongoose)
- Authentication: JWT
- Validasyon: express-validator
- Dosya Yükleme: Multer
- Şifreleme: bcryptjs
- Dokümantasyon: Swagger
- Logging: Morgan
- Node.js (v14+)
- MongoDB
- npm veya yarn
- Repoyu klonlayın:
git clone https://github.com/aniltarar/SiteCostManagementApp-Backend.git
cd SiteCostManagementApp-Backend- Bağımlılıkları yükleyin:
npm install.envdosyası oluşturun:
PORT=3005
MONGO_URI=your_mongodb_connection_string
ACCESS_TOKEN_SECRET=your_access_token_secret
REFRESH_TOKEN_SECRET=your_refresh_token_secret- Uygulamayı başlatın:
npm run dev- API erişim:
- Base URL:
http://localhost:3005 - Swagger:
http://localhost:3005/api-docs
POST /auth/register- Kullanıcı kaydıPOST /auth/login- GirişPOST /auth/logout- ÇıkışPOST /auth/token-refresh- Token yenileme
GET /user- Kullanıcıları listeleGET /user/:userId- Kullanıcı detayPUT /user/:userId- Rol güncelleDELETE /user/:userId- Kullanıcı sil
GET /site- Şantiyeleri listeleGET /site/:siteId- Şantiye detayPOST /site- Şantiye oluşturPUT /site/:siteId- Şantiye güncelleDELETE /site/:siteId- Şantiye sil
GET /cost-category- Kategorileri listeleGET /cost-category/:siteId- Şantiye kategorileriPOST /cost-category- Kategori oluşturPUT /cost-category/:id- Kategori güncelleDELETE /cost-category/:id- Kategori sil
GET /cost/:siteId- Şantiye maliyetleriPOST /cost- Maliyet ekle (dosya yükleme destekli)PUT /cost/:costId- Maliyet güncelleDELETE /cost/:costId- Maliyet sil
- Tüm şantiyeleri ve kullanıcıları yönetir
- Maliyet kategorileri ve kayıtları oluşturur
- Kullanıcı rollerini değiştirir
Middleware'de tanımlı, geliştirilme aşamasında
Middleware'de tanımlı, geliştirilme aşamasında
{
firstName: String,
lastName: String,
email: String (unique),
password: String (hashed),
role: Enum['user', 'editor', 'admin']
}{
name: String,
location: String,
budget: Number,
startDate: Date,
endDate: Date,
createdBy: ObjectId
}{
name: String,
description: String,
isGlobal: Boolean,
siteId: ObjectId
}{
title: String,
unit: Enum,
quantity: Number,
unitPrice: Number,
netAmount: Number,
taxRate: Number,
taxAmount: Number,
grossAmount: Number,
moneyType: Enum,
costCategory: ObjectId,
siteId: ObjectId,
createdBy: ObjectId,
fileUrl: String
}- Şifreler bcrypt ile hash'lenir
- JWT token'lar httpOnly cookie'lerde saklanır
- Input validasyonu tüm endpoint'lerde aktif
- Dosya yükleme tip ve boyut kontrolü
- CORS yapılandırması
Anıl Tarar
- LinkedIn: https://www.linkedin.com/in/anil-tarar/
- Email: aniltararr@gmail.com
Bu proje kişisel portfolyo amaçlı geliştirilmiştir.