Takis Stamatopoulos el20096@mail.ntua.gr
Afroditi Marianthi Chlapani el20889@mail.ntua.gr
Kyriaki Karatzouni el20634@mail.ntua.gr
Ensure you have the following installed:
- PgAdmin4
- JMeter
- Node.js and npm (for JavaScript dependencies)
- Python (for OR tools and other functionalities)
- Docker
- Clone the repository:
git clone https://github.com/ntua/saas2024-55.git
- Install dependencies: First, install Python dependencies specified in requirements.txt.
pip install -r requirements.txt
- Connect Database: Connect Postgresql Database.
SimplySolved is Dockerized for easy deployment.
- Build and run Docker containers:
docker-compose up --build
This commmand builds the Docker images and starts the containers defined in docker-compose.yml
.
- Verify container status: Run the following command in order to verify that all the necessary containers are running:
docker ps
Here are the microservices that should be running:
This project is a microservices-based application designed to handle various aspects of a problem-solving platform. Each microservice is responsible for a specific task, such as user management, payment processing, problem submission, problem solving, and statistics generation. The system is orchestrated using Docker Compose.
- Description: Handles payment transactions, including credit purchasing and balance management.
- Port:
3002
- Directory:
./payment-service
- Description: Allows users to submit problems, view them, and manage problem-related data.
- Port:
3003
- Directory:
./problem-service
- Description: This service manages the actual solving of the submitted problems. It has access to the Docker socket for running SDKs.
- Port:
5000
- Directory:
./solver-service
- Special Requirement: The Docker socket (
/var/run/docker.sock
) is mounted to allow the service to run containers dynamically.
- Description: Provides statistics and analytics on user submissions, problem-solving performance, and platform usage.
- Port:
3004
- Directory:
./statistics-service
- Description: Acts as a reverse proxy, routing requests to the appropriate microservices. All client requests pass through this gateway.
- Port:
3000
- Directory:
./api-gateway
- Description: The user interface for the platform. This service provides the web-based frontend for users to interact with the system.
- Port:
3006
(mapped to80
internally) - Directory:
./frontend
- Description: The core backend service. It interacts with the PostgreSQL database.
- Port:
3007
- Directory:
./backend
- Environment Variables:
POSTGRES_USER
:postgres
POSTGRES_HOST
:host.docker.internal
POSTGRES_DB
:mydatabase
POSTGRES_PASSWORD
:123
POSTGRES_PORT
:5432
All services are connected via the Docker bridge network named solveMyProblemNetwork
. This allows inter-service communication and ensures isolation from external networks.
This project is licensed under the MIT License. See the LICENSE file for more details.