Skip to content

Repository files navigation

TicketHub - Event Ticketing System (A3)

Group 9

Project Description

TicketHub is an online event ticketing system that allows:

  • Customers: Search for events, select seats, book tickets, and pay via QR code.
  • Organizers: Create events, manage tickets, perform attendee check-in, and view revenue statistics.
  • Administrators: Approve events, manage users, and generate revenue reports.

Team Members

Student ID Full Name Role
2351050100 Nguyen Thanh Man Team Leader – Backend & Frontend Development, Admin Services, Docker, DevOps, GitHub Actions (CI), Documentation
2351010012 Tran Minh Anh Frontend & Backend Development, Customer Services, Landing Pages, Documentation
2351010120 Hoang Ngoc Luyen Frontend & Backend Development, Organizer Services, Documentation

Technologies Used

Component Technology
Backend Python (Flask RESTful API)
Frontend HTML, CSS, JavaScript, Bootstrap 5
Database MySQL + SQLAlchemy ORM
Message Queue RabbitMQ + Celery
Containerization Docker + Docker Compose
CI/CD GitHub Actions
API Documentation Swagger/OpenAPI (Flasgger)
Payment SePay + VietQR

System Architecture

The system follows a Layered Architecture combined with the MVC pattern.

  • Presentation Layer: Flask Routes + Jinja2 Templates
  • Business Logic Layer: Python Services + Controllers
  • Data Access Layer: SQLAlchemy ORM Models

Architecture Overview

TicketHub is designed using a three-layer architecture integrated with the Model–View–Controller (MVC) pattern.

  • The Presentation Layer handles HTTP requests and renders user interfaces through Flask Routes and Jinja2 Templates.
  • The Business Logic Layer processes all business operations, including user authentication, ticket booking, payment processing, event approval, and revenue analytics.
  • The Data Access Layer defines database entities using SQLAlchemy ORM and communicates directly with the MySQL database.

The layers communicate in a one-way dependency (top-down), resulting in a clean, maintainable, and scalable architecture that also simplifies team collaboration and task distribution.


C4 Container

Project Timeline

Week Milestone
Week 1 Project initialization
Week 2 Identify actors and primary use cases
Week 3 C4 Diagrams and Architecture Decision Records (ADRs)
Week 4 Frontend development
Week 5 Backend development
Week 6 Backend development
Week 7 Backend development
Week 8 RabbitMQ & Message Queue integration
Week 9 Documentation and Docker integration
Week 10 Final documentation, demonstration, and project completion

Installation & Setup

Prerequisites

  • Docker Desktop
  • Git

Run with Docker Compose

Note: Configure the required environment variables before running Docker Compose.

git clone https://github.com/mantks0803/EventTicketing_A3.git

cd EventTicketing_A3

docker-compose up -d --build

# Create database tables
docker exec -it tickethub_backend python models.py

# Import sample data (Linux/macOS)
cat database/migrations/init.sql | docker exec -i tickethub_db mysql -uroot -pyour_password event4

# Import sample data (Windows PowerShell)
Get-Content database/migrations/init.sql | docker exec -i tickethub_db mysql -uroot -p08032005 event4

Project Structure

.github/
└── workflows/              # GitHub Actions CI

backend/                    # Routes, services, models, Celery tasks

frontend/                   # HTML templates, CSS, JavaScript

database/
└── migrations/             # Database migration scripts

docs/
├── adrs/
├── api/
├── architecture/
└── sequence/

tests/

useCases/

docker-compose.yml

Access URLs

Service URL
Home Page http://localhost:8000
Admin Dashboard http://localhost:8000/admin
Organizer Dashboard http://localhost:8000/organizer
RabbitMQ Management http://localhost:15672

Project Demo

https://bit.ly/4t0NVLo


Documentation

  • Architecture Decision Records (ADRs): docs/adrs/
  • C4 Architecture Diagrams: docs/architecture/C4-Diagram/
  • API Documentation: docs/api/
  • Sequence Diagrams: docs/sequence diagram/

All REST APIs are fully documented using the OpenAPI 3.0.3 specification in:

docs/api/openapi.yaml

You can visualize and explore the API by importing the openapi.yaml file into Swagger Editor:

https://editor.swagger.io/

About

Final project for Software Architecturing, group of 3

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages