Skip to content

mostafasharaby/ATC_01557263081

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

38 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎟️ Event Booking System

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.


πŸ“Œ Project Overview

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

πŸ“ Folder Structure

πŸ”§ Backend (.NET API)

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

🎨 Frontend (Angular)

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

πŸš€ Features

πŸ” Authentication & Authorization

  • JWT Authentication with Role-based Authorization (Admin/User)
  • Google Sign-In
  • Email confirmation during registration
  • Password reset via email

πŸ§‘β€πŸ’» Admin Panel

  • Add, update, delete events
  • View total number of users, events, and revenue
  • Data visualization with Chart.js
  • Responsive dashboard with role-based access

πŸ‘₯ User Functionality

  • 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

πŸ› οΈ Tech Stack

Backend

  • 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

Frontend

  • Angular 18
  • Angular Material UI
  • Chart.js
  • RxJS
  • ngx-toastr
  • Angular Forms & Reactive Forms

πŸ§ͺ Testing

  • βœ… Unit Testing with xUnit
  • βœ… Assertions using FluentAssertions
  • βœ… Separated test project under /Tests

πŸ”§ Setup Instructions

πŸ”™ Backend

  1. Clone the repository:
    git clone git@github.com:mostafasharaby/Event-Booking-System.git
    cd back-end
    cd EventBooking
  2. πŸ” Configuration

    Before running the project, create a file named appsettings.json in the root of the backend project.
    You can use appsettings.example.json as a template.
    cp appsettings.example.json appsettings.json
  3. Apply migrations
  4.  dotnet ef database update
  5. Run the API
     dotnet run
  6. βœ… The API will run at: https://localhost:7146

πŸ”œ Frontend (Angular)

  1. Navigate to the frontend directory
    cd front-end
  2. Install dependencies
     npm install
  3. Run Angular Development Server
ng serve
  1. βœ… 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!

Image Image Image Image Image Image Image Image Image Image Image