The Shuttle project is a set of microservices mostly based on Spring Boot for controlling a space taxi. Within the framework of this project, various functionality has been implemented for working with space flights and interaction between microservices.
To launch the Shuttle project, follow these steps:
Ensure you have the following software installed on your system:
- Docker and Docker Compose
- Java 21 or newer
- Gradle 6.8 or newer
The project requires PostgreSQL and MongoDB databases. You can either install them manually or set them up using Docker.
-
PostgreSQL:
- Download and install PostgreSQL from the official website.
- Start the PostgreSQL service.
-
MongoDB:
- Download and install MongoDB from the official website.
- Start the MongoDB service.
- PostgreSQL:
docker pull postgres:latest docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
- MongoDB:
export MONGODB_VERSION=6.0-ubi8 docker run --name mongodb -d mongodb/mongodb-community-server:$MONGODB_VERSION
cd docker
docker compose up
cd shared
./gradlew publishToMavenLocal
cd discovery-server
./gradlew bootRun
cd ../config-server
./gradlew bootRun
I apologize for such inconveniences, in the future all microservices will be launched via kybernetes
The following list lists the microservices of the project with the status of their implementation (this list may change regularly due to the addition of new features and architecture refactoring):
- Pilot Feedback Service and User Feedback Service (Implemented, not tested)✅
- Shuttle Information Service (Not implemented)😪
- Pilot Information Service (Not implemented)😪
- User Information Service (Not implemented)😪
- Pilot Rank Service (In progress)🔨
- Trip Path Finder Service (In progress)🔨
- Trip Calculation Service (Not implemented)😪
- Payment Service (Not implemented)😪
- Pilot Personal Data Service (In progress)🔨
- Order Service (Not implemented)😪
- Station Information Service (Not implemented)😪
Microservices communicate with each other through Apache Kafka, which provides messaging and rating updates.
- Calculation of the path from one planet to another, taking into account their movement in orbit
- Collecting and processing feedback from users and pilots.
- Choosing a flight class.
- Pilot rank system.
- Verification of personal data of pilots.
- Calculating the cost of a flight due to the length and complexity of the flight.
- Implementation of the payment service taking into account the Shuttle commission (thank you for choosing us!😊😊😊).
- React app for documentation, using React flow (its very beautiful and awesome!!!!)
- Simulation of shuttle breakdowns (WITHOUT ENDANGERING THE LIVES OF PASSENGERS!😇😇😇).
- Implementation in 3D space, so that it would be like NASA: https://eyes.nasa.gov/apps/solar-system/#/home
The project uses the following technologies and approaches:
- Spring Boot for creating microservices. (There are exceptions, for example, the path finding microservice)
- Apache Kafka for message processing.
- OpenTelometry, Graphana, Prometheus for monitoring and tracing.
- Docker & Kubernetes & GitHub Actions for deploying.
- PGSQL, MONGODB, REDIS, CASSANDRA as databases.
The diagram previously shown here is now invalid
In the future, all documentation, diagrams, calculations of metrics such as DAU, MAU and so on will be implemented as a React application using React Flow, there will be no more such vile diagrams 😥😥😥
To run the project, you will need the following tools and dependencies:
- Java 17 or later
- Maven 3.8.1 or later
- Docker (optional, for working with containers)
Make sure that all dependencies are installed and configured before starting the project.
don't steal anything please((((
If you have any questions or suggestions, you can contact me via GitHub Issues or by Email or by Telegram.
Shuttle is the space taxi of the future, driven by modern microservice technologies!