This project implements a distributed microservices-based system for managing trains, schedules, tickets, users, and notifications.
Each service is independent and communicates through REST APIs. Some components also use MQTT for asynchronous notifications.
A web frontend is included to allow both administrators and customers to interact with the system.
The system is composed of the following services:
Handles user registration and stores user information.
Manages user authentication and JWT token generation.
Manages trains, schedules, and related data.
Handles ticket purchases and ticket management.
Manages user subscriptions to trains and sends notifications through MQTT.
MySQL database used by all services.
MQTT broker used for notifications.
Web interface for interacting with the system.
- Docker
- Docker Compose
No additional dependencies are required.
To start the entire system, move to the folder /project-dpwims and run:
docker compose up -–buildDocker will:
- build all service images
- start the containers
- initialize the databases
- automatically create two demo users (admin and customer)
- start the frontend
The system is ready when all containers are running.
Two users are automatically created at startup:
- Email: admin@example.com
- Password: Password123!
- Role: admin
- Email: customer@example.com
- Password: Password123!
- Role: customer
These accounts can be used to test the system through the frontend.
Once the system is running, the frontend is available at:
Docker will:
- build all service images
- start the containers
- initialize the databases
- automatically create two demo users (admin and customer)
- start the frontend
The system is ready when all containers are running.
Two users are automatically created at startup:
- Email: admin@example.com
- Password: Password123!
- Role: admin
- Email: customer@example.com
- Password: Password123!
- Role: customer
These accounts can be used to test the system through the frontend.
Once the system is running, the frontend is available at:
From the frontend, it is possible to:
- log in as admin or customer
- manage users, trains, stations, tickets, payments and schedules as admin
- purchase tickets, manage subscriptions and receive notifications as customer
To stop all services:
docker compose down -v- The system is fully containerized and requires no manual setup.
- Demo users are created automatically at startup through a seed script.
- The project is intended for demonstration and testing purposes.