A full-stack web application for users to browse, book, and manage event tickets, with a powerful admin dashboard for managing events and tracking insights.
This project is a modern, scalable Event Booking System built using:
- Backend: .NET 8 with Clean Architecture (Domain-Driven Design)
- Frontend: Angular 18
- Authentication: JWT, Google Sign-In, Email Confirmation, Password Reset
- Admin Panel: Analytics, Event Management (CRUD), User Stats
- User Panel: Event search, filtering, booking
- Extra Features: CQRS, MediatR, AutoMapper, Serilog, FluentValidation, xUnit Testing
back-end/EventEventBooking/
├── API/ # ASP.NET Core Web API Layer (controllers, middlewares)
├── Application/ # Application Layer (CQRS handlers, DTOs, interfaces)
├── Domain/ # Domain Layer (Entities, Enums, Interfaces, Exceptions)
├── Infrastructure/ # Infrastructure Layer (DB context, Repositories, Identity)
├── Tests/ # Unit tests with xUnit & FluentAssertions
front-end/
├── src/
│ ├── app/
│ │ ├── Services/ # Auth services, interceptors, guards
│ │ ├── shared/ # Shared UI components
│ │ ├── user/ # Event listing, booking, filters
│ │ ├── admin/ # Dashboard, charts, event CRUD
│ │ └── pages/ # Auth pages, home, events, booking success
- JWT Authentication with Role-based Authorization (Admin/User)
- Google Sign-In
- Email confirmation during registration
- Password reset via email
- Add, update, delete events
- View total number of users, events, and revenue
- Data visualization with Chart.js
- Responsive dashboard with role-based access
- Event listing with filtering (price, ticket availability)
- Search events by name or description
- Book tickets (only once per event)
- "Booked" status replaces "Book Now" on booked events
- Redirect to a success page after booking
- ASP.NET Core 8
- Clean Architecture + DDD
- Entity Framework Core
- FluentValidation
- CQRS with MediatR
- AutoMapper
- Serilog (Logging)
- xUnit + FluentAssertions (Unit Testing)
- Identity + JWT + Google OAuth
- Angular 18
- Angular Material UI
- Chart.js
- RxJS
- ngx-toastr
- Angular Forms & Reactive Forms
- ✅ Unit Testing with xUnit
- ✅ Assertions using FluentAssertions
- ✅ Separated test project under
/Tests
- Clone the repository:
git clone git@github.com:mostafasharaby/Event-Booking-System.git cd back-end cd EventBooking
-
Before running the project, create a file named
appsettings.jsonin the root of the backend project.
You can useappsettings.example.jsonas a template.cp appsettings.example.json appsettings.json
- Apply migrations
-
dotnet ef database update
- Run the API
dotnet run
- ✅ The API will run at: https://localhost:7146
- Navigate to the frontend directory
cd front-end - Install dependencies
npm install
- Run Angular Development Server
ng serve- ✅ The app will be available at: http://localhost:4200
🔐 Admin Credentials (for demo) Default admin credentials (after seeding or manual DB insert):
Email: admin@example.com Password: P@ssw0rd!
🔐 User Credentials (for demo) Default user credentials (after seeding or manual DB insert):
Email: noor@example.com Password: P@ssw0rd!










