Did you know that GitHub supports table of contents by default 🤔
This is the API for music room service in InNoHassle ecosystem.
- 🎵 Booking Music room
- 📅 Schedule of Music room
- 🔒 Roles and permissions
- Python 3.12 & Poetry
- FastAPI & Pydantic
- Aiogram 3 & aiogram-dialog
- Database and ORM: PostgreSQL, SQLAlchemy, Alembic
- Formatting and linting: Ruff, pre-commit
- Deployment: Docker, Docker Compose, GitHub Actions
- Install Python 3.12+ & Poetry
- Install project dependencies with Poetry.
poetry install
- Start the API:
poetry run python -m src.api
Follow provided instructions if needed
- Start the Bot:
poetry run python -m src.bot
Follow provided instructions if needed
Important
For endpoints requiring authorization click "Authorize" button in Swagger UI
Tip
Edit settings.yaml
according to your needs, you can view schema in
config_schema.py and in settings.schema.yaml
Set up PyCharm integrations
- Run configurations (docs).
Right-click the
__main__.py
file in the project explorer, selectRun '__main__'
from the context menu. - 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.
Aiogram:
All localized bot messages should be wrapped: __("Hello world"")
- Extract messages:
poetry run pybabel extract -k __ --input-dirs=. -o locales/messages.pot
- Update translations:
poetry run pybabel update -i locales/messages.pot -d locales -D messages --ignore-pot-creation-date
- Translate messages in created
.po
files - Compile translations:
poetry run pybabel compile -d locales -D messages
Aiogram dialog:
Add translations identifiers (strings inside I18Format
) and their translations to .ftl
files
We use Docker with Docker Compose plugin to run the website on servers.
- Copy the file with environment variables:
cp .env.example .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.
We are open to contributions of any kind. You can help us with code, bugs, design, documentation, media, new ideas, etc. If you are interested in contributing, please read our contribution guide.