A full-stack travel booking platform built with Angular 19 and ASP.NET Core 10 featuring JWT authentication, tour management, booking system, and analytics dashboard.
- JWT-based authentication
- Role-based access control (Admin/Customer)
- Secure password hashing with BCrypt
- Create, edit, and delete tour packages
- Manage tour details (name, location, price, dates, availability)
- Admin dashboard with analytics
- Browse and search tours by location, price, and date
- View detailed tour information
- Book tours with availability checking
- View booking history
- Cancel bookings
- Total bookings and revenue metrics
- Monthly booking trends visualization
- Tour statistics
Frontend:
- Angular 19 (Standalone Components)
- TypeScript
- RxJS
- Angular Router & HTTP Client
Backend:
- ASP.NET Core 10 Web API
- Entity Framework Core
- SQL Server (LocalDB)
- JWT Authentication
- Clean Architecture
- .NET 10 SDK
- Node.js 22.x
- SQL Server LocalDB (or SQL Server Express)
- Navigate to the project root:
cd c:/Users/BABATUNDE/Desktop/Travel- Restore dependencies:
dotnet restore- Apply database migrations:
dotnet ef database update --project TravelBooking.Infrastructure --startup-project TravelBooking.API- Run the API:
dotnet run --project TravelBooking.APIThe API will be available at http://localhost:5000
- Navigate to the client folder:
cd client- Install dependencies:
npm install- Start the development server:
npm startThe app will be available at http://localhost:4200
TravelBooking.sln
├── TravelBooking.API/ # Web API Controllers
├── TravelBooking.Core/ # Domain Entities, DTOs, Interfaces
└── TravelBooking.Infrastructure/ # EF Core, Services, Data Access
client/src/app/
├── core/ # Services, Guards, Interceptors
├── features/
│ ├── auth/ # Login, Register
│ ├── admin/ # Dashboard, Tour Management
│ ├── tours/ # Tour Catalog, Details
│ └── booking/ # User Bookings
└── shared/ # Shared Components
To create an admin user, register normally and then manually update the database:
UPDATE Users SET Role = 'Admin' WHERE Username = 'your-username';POST /api/auth/register- Register new userPOST /api/auth/login- Login user
GET /api/tours- Get all toursGET /api/tours/{id}- Get tour by IDGET /api/tours/search- Search toursPOST /api/tours- Create tour (Admin)PUT /api/tours/{id}- Update tour (Admin)DELETE /api/tours/{id}- Delete tour (Admin)
POST /api/bookings- Create bookingGET /api/bookings/my-bookings- Get user bookingsGET /api/bookings- Get all bookings (Admin)POST /api/bookings/{id}/cancel- Cancel booking
GET /api/analytics- Get analytics data (Admin)
Both backend and frontend builds completed successfully:
- Backend: 0 Errors, 5 Warnings (nullable reference warnings)
- Frontend: Build successful (392.45 kB bundle)
- Add image upload functionality
- Implement payment gateway integration
- Add email notifications for bookings
- Add unit and integration tests
- Deploy to production environment
This project is for demonstration purposes.