Did you know that GitHub supports table of contents by default ๐ค
This is the API for workshops service in InNoHassle ecosystem. It provides backend functionality for managing workshops, user check-ins, and capacity management.
- โ Check-in/check-out workshops for bootcamp participants
- ๐จโ๐ผ Manage workshops for admins
- ๐ Capacity management and tracking
- Python 3.13+ & uv
- FastAPI
- Database and ORM: PostgreSQL, SQLModel, SQLAlchemy, Alembic
- Install uv and Docker
- Install dependencies:
uv sync
- Start development server (read logs in the terminal):
uv run -m src.api --reload
- Open in the browser: http://localhost:8005
The api will be reloaded when you edit the code
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.
- Create
test-db
database in your local PostgreSQL:docker exec -it workshops-db-1 psql -U postgres -c 'CREATE DATABASE "test-db";'
- Run tests with
SETTINGS_PATH=settings.test.yaml uv run pytest
- Run
docker compose up -d db
to start the PostgreSQL container (create.env
file with options if needed) - Run
uv run alembic upgrade head
to apply all pending migrations - Run
uv run alembic revision --autogenerate -m "description"
to create new migration - Run
uv run alembic current
to check current migration status - Revert all migrations:
uv run alembic downgrade base
- Just set to
base
to revert to the initial state:uv run alembic stamp base
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.