https://github.com/one-zero-eight/music-room
Book the music room at Sports Center and view the schedule: https://t.me/InnoMusicRoomBot
https://github.com/one-zero-eight/music-room
fastapi innohassle python
Last synced: about 2 months ago
JSON representation
Book the music room at Sports Center and view the schedule: https://t.me/InnoMusicRoomBot
- Host: GitHub
- URL: https://github.com/one-zero-eight/music-room
- Owner: one-zero-eight
- License: mit
- Created: 2023-09-11T10:46:45.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-11-24T21:24:42.000Z (7 months ago)
- Last Synced: 2025-11-28T08:47:15.803Z (7 months ago)
- Topics: fastapi, innohassle, python
- Language: Python
- Homepage:
- Size: 1.2 MB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# InNoHassle Music room
[](https://github.com/one-zero-eight/InNoHassle-MusicRoom/actions)
[](https://sonarcloud.io/summary/new_code?id=one-zero-eight_InNoHassle-MusicRoom)
[](https://sonarcloud.io/summary/new_code?id=one-zero-eight_InNoHassle-MusicRoom)
[](https://sonarcloud.io/summary/new_code?id=one-zero-eight_InNoHassle-MusicRoom)
## Table of contents
Did you know that GitHub supports table of
contents [by default](https://github.blog/changelog/2021-04-13-table-of-contents-support-in-markdown-files/) 🤔
## About
This is the API for music room service in InNoHassle ecosystem.
### Features
- 🎵 Booking Music room
- 📅 Schedule of Music room
- 🔒 Roles and permissions
### Technologies
- [Python 3.12](https://www.python.org/downloads/) & [Poetry](https://python-poetry.org/docs/)
- [FastAPI](https://fastapi.tiangolo.com/) & [Pydantic](https://docs.pydantic.dev/latest/)
- [Aiogram 3](https://docs.aiogram.dev/en/latest/) & [aiogram-dialog](https://aiogram-dialog.readthedocs.io/)
- Database and ORM: [PostgreSQL](https://www.postgresql.org/), [SQLAlchemy](https://www.sqlalchemy.org/),
[Alembic](https://alembic.sqlalchemy.org/en/latest/)
- Formatting and linting: [Ruff](https://docs.astral.sh/ruff/), [prek](https://prek.j178.dev/)
- Deployment: [Docker](https://www.docker.com/), [Docker Compose](https://docs.docker.com/compose/),
[GitHub Actions](https://github.com/features/actions)
## Development
### Set up for development
1. Install [Python 3.12+](https://www.python.org/downloads/) & [Poetry](https://python-poetry.org/docs/)
2. Install project dependencies with [Poetry](https://python-poetry.org/docs/cli/#options-2).
```bash
poetry install
```
3. Start the API:
```bash
poetry run python -m src.api
```
> Follow provided instructions if needed
4. Start the Bot:
```bash
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](src/config_schema.py) and in [settings.schema.yaml](settings.schema.yaml)
**Set up PyCharm integrations**
1. Run configurations ([docs](https://www.jetbrains.com/help/pycharm/run-debug-configuration.html#createExplicitly)).
Right-click the `__main__.py` file in the project explorer, select `Run '__main__'` from the context menu.
2. Ruff ([plugin](https://plugins.jetbrains.com/plugin/20574-ruff)).
It will lint and format your code. Make sure to enable `Use ruff format` option in plugin settings.
3. Pydantic ([plugin](https://plugins.jetbrains.com/plugin/12861-pydantic)). It will fix PyCharm issues with
type-hinting.
4. Conventional commits ([plugin](https://plugins.jetbrains.com/plugin/13389-conventional-commit)). It will help you
to write [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/).
### Localization
**Aiogram:**
All localized bot messages should be wrapped: `__("Hello world"")`
1. Extract messages:
```bash
poetry run pybabel extract -k __ --input-dirs=. -o locales/messages.pot
```
2. Update translations:
```bash
poetry run pybabel update -i locales/messages.pot -d locales -D messages --ignore-pot-creation-date
```
3. Translate messages in created `.po` files
4. Compile translations:
```bash
poetry run pybabel compile -d locales -D messages
```
**Aiogram dialog:**
Add translations identifiers (strings inside `I18Format`) and their translations to `.ftl` files
### Deployment
We use Docker with Docker Compose plugin to run the website on servers.
1. Copy the file with environment variables: `cp .example.env .env`
2. Change environment variables in the `.env` file
3. Copy the file with settings: `cp settings.example.yaml settings.yaml`
4. Change settings in the `settings.yaml` file according to your needs
(check [settings.schema.yaml](settings.schema.yaml) for more info)
5. Install Docker with Docker Compose
6. Build a Docker image: `docker compose build --pull`
7. Run the container: `docker compose up --detach`
8. Check the logs: `docker compose logs -f`
# How to update dependencies
## Project dependencies
1. Run `poetry update` to update all dependencies (it may update nothing, so double-check)
2. Run `poetry show --outdated --all` to check for outdated dependencies
3. Run `poetry add @latest` to add a new dependency if needed
## Pre-commit hooks
1. Run `uv run prek auto-update`
Also, Dependabot will help you to keep your dependencies up-to-date, see [dependabot.yml](.github/dependabot.yml).
## Contributing
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](https://github.com/one-zero-eight/.github/blob/main/CONTRIBUTING.md).