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!










