This is API for proxying requests in InnoSport website. It checks Accounts user token and make request to InnoSport API on behave of the user.
- Python 3.12 & Poetry
- FastAPI
- Formatting and linting: Ruff, pre-commit
- Deployment: Docker, Docker Compose, GitHub Actions
-
Install Python 3.12+
-
Install Poetry
-
Install project dependencies with Poetry.
poetry install
-
Set up pre-commit hooks:
poetry run pre-commit install --install-hooks -t pre-commit -t commit-msg
-
Set up project settings file (check settings.schema.yaml for more info).
cp settings.example.yaml settings.yaml
Edit
settings.yaml
according to your needs.
Set up PyCharm integrations
- Ruff (plugin).
It will lint and format your code. Make sure to enable
Use ruff format
option in plugin settings. - Pydantic (plugin). It will fix PyCharm issues with type-hinting.
- Conventional commits (plugin). It will help you to write conventional commits.
Run the ASGI server
poetry run python -m src.api
OR using uvicorn directly
poetry run uvicorn src.api.app:app --use-colors --proxy-headers --forwarded-allow-ips=*
Now the API is running on http://localhost:8000. Good job!
We use Docker with Docker Compose plugin to run the service on servers.
- Copy the file with environment variables:
cp .example.env .env
- Change environment variables in the
.env
file - Copy the file with settings:
cp settings.example.yaml settings.yaml
- Change settings in the
settings.yaml
file according to your needs (check settings.schema.yaml for more info) - Install Docker with Docker Compose
- Build a Docker image:
docker compose build --pull
- Run the container:
docker compose up --detach
- Check the logs:
docker compose logs -f
- Run
poetry update
to update all dependencies (it may update nothing, so double-check) - Run
poetry show --outdated --all
to check for outdated dependencies - Run
poetry add <package>@latest
to add a new dependency if needed
- Run
poetry run pre-commit autoupdate
Also, Dependabot will help you to keep your dependencies up-to-date, see dependabot.yml.