A Rust-based deck game project.
This open-source project is a deck game built in Rust, utilizing various components and services to create an interactive and scalable game. The project's main components include:
- Frontend Client
- API Gateway
- Keycloak for authentication (with an additional Postgres Database)
- Application Server
- Game Server
- Postgres Database
The project uses Docker Compose for containerization and gRPC for client-server communication.
The project is divided into several layers and components, each handled by a different team member. Here's an overview of the project structure:
- Frontend Client: The client application used to play the game;
- API Gateway: Responsible for routing and handling incoming requests;
- Application Server: Manages game logic and business rules;
- Game Server: Handles game sessions and real-time interactions;
- Postgres Database: Stores necessary data for the game;
- Keycloak: Provides authentication services for the project.
Before you can run the project, ensure you have the following prerequisites installed on your system:
To run the project, follow these steps:
- Clone the repository:
git clone https://github.com/Krahos/shuftle
- Navigate to the project directory:
cd shuftle
- Copy the
.env.dist
as your local.env
file:
cp .env.dist .env
- Build the images:
docker compose build --no-cache
NB: This also let build Keycloak within the proper Database vendor.
- Start the Docker containers using Docker Compose:
docker compose up -d
This command will start all the project's containers, including Keycloak and the PostgreSQL database.
We welcome contributions to this open-source project. If you'd like to contribute, please follow these steps:
-
Fork the repository;
-
Create a feature branch with a descriptive name:
git checkout -b feature/your-feature-name
- Make your changes and commit them:
git commit -m "Add your feature description"
- Push your changes to your forked repository:
git push origin feature/your-feature-name
- Open a Pull Request (PR) to the main repository;
- Your PR will be reviewed and merged if approved.