How obada-yahya/travel-and-accommodation-booking-platform works
TAABP is a hotel and accommodation booking API. Guests browse destinations and hotels, search availability, reserve rooms, manage bookings, and request invoices; authenticated guests can also review stays and see recently visited hotels. Administrative endpoints manage hotels, rooms, cities, amenities, and discounts. The architecture separates HTTP controllers, MediatR application handlers, domain repository contracts, and infrastructure persistence and integrations. The README documents image management and email notifications, though their complete request paths are not visible in the sampled source.
Main entry points: Controllers HTTP controllers · Interfaces Repository contracts · BookingHandlers Booking workflows · HotelHandlers Hotel discovery
Components 22
API surface
- HTTP controllers
TAABP.API/Controllers - Authentication
TAABP.API/Controllers/AuthenticationController.cs
Application workflows
- Booking workflows
Application/Handlers/BookingHandlers - Hotel discovery
Application/Handlers/HotelHandlers - City discovery
Application/Handlers/CityHandlers - Guest services
Application/Handlers/UserHandlers - Review workflows
Application/Handlers/ReviewHandlers - Administration
Application/Handlers - Discount workflows
Application/Handlers/DiscountHandlers - Amenity workflows
Application/Handlers/RoomAmenityHandlers - Room categories
Application/Handlers/RoomCategoryHandlers - Application services
Application/ServiceCollectionExtensions.cs
Domain contracts
- Repository contracts
Domain/Common/Interfaces - Booking domain
Domain/Entities
Infrastructure
- Application database
Infrastructure/Common/Persistence/ApplicationDbContext.cs - Repository implementations
Infrastructure/Common/Persistence/Repositories - Image storage
Infrastructure/ImageStorage - Email service
Infrastructure/Email - Invoice PDF
Infrastructure/Pdf
Other components
- Guest or admin
- Firebase storage
- Email provider
Connections 24
- Guest or admin → HTTP controllers: uses endpoints
- HTTP controllers → Authentication: authenticates
- HTTP controllers → Booking workflows: dispatches requests
- HTTP controllers → Hotel discovery: dispatches requests
- HTTP controllers → City discovery: dispatches requests
- HTTP controllers → Guest services: dispatches requests
- HTTP controllers → Review workflows: dispatches requests
- HTTP controllers → Administration: dispatches requests
- HTTP controllers → Discount workflows: dispatches requests
- HTTP controllers → Amenity workflows: dispatches requests
- HTTP controllers → Room categories: dispatches requests
- Booking workflows → Repository contracts: calls
- Hotel discovery → Repository contracts: calls
- City discovery → Repository contracts: calls
- Guest services → Repository contracts: calls
- Review workflows → Repository contracts: calls
- Discount workflows → Repository contracts: calls
- Amenity workflows → Repository contracts: calls
- Room categories → Repository contracts: calls
- Repository contracts → Repository implementations: implemented by
- Repository implementations → Application database: persists data
- Booking workflows → Invoice PDF: generates invoices
- Image storage → Firebase storage: stores images
- Email service → Email provider: sends messages