Bu proje, bir otel rezervasyon sisteminin backend kısmını oluşturmak için Node.js, Express.js ve MongoDB kullanılarak geliştirilmiştir. Sistem, kullanıcı kaydı, otel ve oda yönetimi gibi temel işlevleri gerçekleştirebilen RESTful API'lar sağlar.
Projeyi çalıştırmadan önce sisteminizde Node.js ve npm'in (Node.js Package Manager) yüklü olduğundan emin olun. Ayrıca, MongoDB veritabanınıza uzaktan veya yerel olarak erişim sağlamanız gerekmektedir.
Projeyi kurmak ve çalıştırmak için aşağıdaki adımları takip edin:
-
Reposu Klonlayın
git clone https://github.com/berkayderin/Hotel-Api-Nodejs.git cd Hotel-Api-Nodejs -
Bağımlılıkları Yükleyin
Projedeki tüm bağımlılıkları yüklemek için aşağıdaki komutu kullanın:
npm install
-
.env Dosyasını Oluşturun
Projeyi çalıştırmadan önce, kök dizinde bir
.envdosyası oluşturun ve aşağıdaki değişkenleri tanımlayın:MONGO_URL=mongodb+srv://<username>:<password>@<your-cluster-url>/<database>?retryWrites=true&w=majority JWT_SECRET=your_jwt_secret PORT=3001
-
Sunucuyu Başlatın
Sunucuyu başlatmak için aşağıdaki komutu kullanın:
npm start
Sunucu başarıyla çalıştığında, konsolda
"3001 Portunda server çalışıyor."mesajını göreceksiniz.
Bu backend sistemi, aşağıdaki temel işlevleri sağlayan RESTful API endpoint'lerini içerir:
- Kullanıcı İşlemleri:
- Kayıt:
POST /register - Giriş:
POST /login
- Kayıt:
- Otel İşlemleri:
- Otel listeleme:
GET /api/hotels - Otel detay:
GET /api/hotels/:id - Otel ekleme:
POST /api/hotels(Admin yetkisi gerektirir) - Otel güncelleme:
PATCH /api/hotels/:id(Admin yetkisi gerektirir) - Otel silme:
DELETE /api/hotels/:id(Admin yetkisi gerektirir)
- Otel listeleme:
- Oda İşlemleri:
- Oda listeleme:
GET /api/rooms - Oda detay:
GET /api/rooms/:id - Oda ekleme:
POST /api/rooms/:hotelId(Admin yetkisi gerektirir) - Oda güncelleme:
PATCH /api/rooms/:id(Admin yetkisi gerektirir) - Oda silme:
DELETE /api/rooms/:id/:hotelId(Admin yetkisi gerektirir)
- Oda listeleme:
Her bir endpoint için detaylı kullanım örnekleri ve beklenen request/response yapıları projenin dokümantasyonunda yer almaktadır.
Projede MVC (Model-View-Controller) mimarisi benimsenmiştir. models, views, ve controllers klasörleri altında ilgili dosyalar yer almaktadır. routes klasörü, uygulamanın rotalarını ve bu rotaların controller'lar ile nasıl ilişkilendirildiğini tanımlar.
- JWT (JSON Web Tokens): Kullanıcı kimlik doğrulama işlemleri için JWT kullanılmaktadır.
- bcryptjs: Kullanıcı şifrelerinin güvenli bir şekilde saklanması için şifreleme yapılır.
- cors: Farklı kaynaklardan gelen isteklerin yönetimi için kullanılır.
Projeye katkıda bulunmak isteyenler pull request gönderebilir veya mevcut sorunları çözmek için issue açabilirler.