- Performs rocket simulations and returns simulation data
- Stores simulation input data in mongo-db
- Install python3 3.11.5 or above
- install mongodb-atlas
- Install dependencies
python3 -m pip install -r requirements.txt
- make format
- make test
- make clean
- make build
- Setup MONGODB_CONNECTION_STRING:
$ touch .env && echo MONGODB_CONNECTION_STRING="$ConnectionString" > .env
- run docker compose:
docker-compose up --build -d
- Dev:
python3 -m uvicorn src:app --reload --port 3000
- Prod:
gunicorn -k uvicorn.workers.UvicornWorker src:app -b 0.0.0.0:3000
├── README.md # this file
├── requirements.txt
│
├── lib
│ │
│ ├── api.py # main app
│ │── secrets.py
│ │
│ ├── controllers
│ │ ├── interface.py
│ │ ├── environment.py
│ │ ├── flight.py
│ │ ├── motor.py
│ │ └── rocket.py
│ │
│ ├── services
│ │ ├── environment.py
│ │ ├── flight.py
│ │ ├── motor.py
│ │ └── rocket.py
│ │
│ ├── routes
│ │ ├── environment.py
│ │ ├── flight.py
│ │ ├── motor.py
│ │ └── rocket.py
│ │
│ ├── repositories
│ │ ├── interface.py
│ │ ├── environment.py
│ │ ├── flight.py
│ │ ├── motor.py
│ │ └── rocket.py
│ │
│ ├── models
│ │ ├── interface.py
│ │ ├── environment.py
│ │ ├── flight.py
│ │ ├── motor.py
│ │ ├── rocket.py
│ │ │
│ │ └── sub
│ │ ├── aerosurfaces.py
│ │ └── tanks.py
│ │
│ └── views
│ ├── interface.py
│ ├── environment.py
│ ├── flight.py
│ ├── motor.py
│ └── rocket.py
│
└── tests
- OpenAPI standard: https://api.rocketpy.org/redoc
- Swagger UI: https://api.rocketpy.org/docs
General API workflow. Current available models are: Environment, Flight, Rocket and Motor.
sequenceDiagram
participant User
participant API
participant MongoDB
User ->> API: POST /model
API ->> MongoDB: Persist API Model as a document
MongoDB -->> API: Model ID
API -->> User: 201 ModelCreated View
User ->> API: GET /model/:id
API ->> MongoDB: Read API Model document
MongoDB -->> API: API Model document
API -->> User: 200 API ModelView
User ->> API: PUT /model/:id
API ->> MongoDB: Update API Model document
API -->> User: 204
User ->> API: DELETE /model/:id
API ->> MongoDB: Delete API Model document
MongoDB -->> API: Deletion Confirmation
API -->> User: 204
sequenceDiagram
participant User
participant API
participant MongoDB
participant RocketPy lib
User ->> API: GET model/:id/simulate/
API -->> MongoDB: Retrieve API Model document
MongoDB -->> API: API Model document
API ->> RocketPy: Initialize RocketPy native class and simulate
RocketPy lib -->> API: Simulation Results
API -->> User: Simulation Results
User ->> API: GET /model/:id/rocketpy
API -->> MongoDB: Retrieve API Model document
MongoDB -->> API: API Model document
API ->> RocketPy: Initialize RocketPy native class
RocketPy lib -->> API: RocketPy native class
API -->> User: RocketPy native class as .dill binary (amd64)