TetTicket is an online ticket management platform designed for Tet events. This project aims to high traffic system.
❗Note: this is a personal project on my career journey to become a Senior Backend Developer. So this project probably won't be the most optimal because I'm working on it and studying at the same time.
-> Defense Line 1: RateLimiter - Circuit Breaker (Resilience4j)
-> Defense Line 2: Distributed Cache -> Redisson.
-> Defense Line 3: Local Cache (Guava)
- Swagger API: http://localhost:1122/swagger-ui.html
Deploy: Docker Compose
Logging: Prometheus + Grafana (Spring Boot, MySQL, Redis, Node Exporter)
Stack: ELK - Elasticsearch - LogStash - Kibana
Testing Performance: Vegeta, WRK.
Setup Proxy Nginx for Load Balancer
Expected to be implement.:
Message Queue: Kafka Cluster. ...
- Language: Java 23
- Framework: Spring Boot (Domain Driven Design)
- Database:
- MySQL: Used for storing user, event, and ticket data.
- AWS: S3.
- Redis: Redisson (Sentinel, LUA)
- Security: Keycloak for Authentication and Authorization.
- API Documentation: Spring OpenAPI + Swagger v2.3.0
- Docker: Containerized services.
- Prometheus: Tracing.
- Grafana: Logging.
-
Clone the repository:
git clone https://github.com/TaiTitans/TetTicket.git cd TetTicket/tetticket.com/environtment -
Start the backend services with Docker Compose:
docker-compose up -d
-
Access the application at
http://localhost:1212.
TetTicket/
├── tetticket.com/ # Backend with DDD
│ ├── tetticket-application/
│ ├── tetticket-domain/
│ ├── tetticket-infrastructure/
| ├── tetticket-controller/
│ └── tetticket-start
| ├── environtment/ # Data project
| ├── environtment/docker-conpose-dev.yml # Docker Compose configuration
| ├── environtment/docker-conpose-broker-kafka.yml
└── README.md # Project documentation
- Register an account or log in.
- Browse the list of events and select one you want to join.
- Choose ticket type, quantity, and proceed with payment.
- Check your email for the e-ticket.
If you'd like to contribute to the project:
- Fork this repository.
- Create a new branch:
git checkout -b feature/feature-name
- Commit your changes:
git commit -m "Short description of your changes" - Push your branch:
git push origin feature/feature-name
- Open a Pull Request.
This project is licensed under the MIT License.
- Author: TaiTitans
- Email: [email protected]