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.
| 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 |
| 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 |
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
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.
| 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 |
- Docker Desktop
- Git
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.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
| Service | URL |
|---|---|
| Home Page | http://localhost:8000 |
| Admin Dashboard | http://localhost:8000/admin |
| Organizer Dashboard | http://localhost:8000/organizer |
| RabbitMQ Management | http://localhost:15672 |
- 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:
