REST API backend for the Guitar0 guitar education platform, serving mobile and web clients.
The service provides user accounts, song and chord libraries, structured guitar courses, and other learning content for mobile and web clients.
| Layer | Technology |
|---|---|
| Language | Python 3.14 |
| Framework | Django 6 · Django REST Framework |
| Database | PostgreSQL 16 |
| Server | Gunicorn |
| Packaging | PDM |
| Linting | Ruff · Mypy (strict) |
| Testing | pytest · coverage (≥ 90%) |
| Security | Bandit · pip-audit |
- Python 3.14+
- PDM
- PostgreSQL 16 — or Docker (see below)
Local:
cp .env.example .env.development # fill in DB credentials
pdm install
make migrate
make runDocker:
make docker-upAPI is available at http://localhost:8000.
make help list all available commands
make lint ruff + mypy
make test pytest with coverage report
make ci lint + test (mirrors CI pipeline)
make migrate apply migrations
make shell Django shell
make docker-up start app + DB via Docker Compose
make docker-down stop containers
make docker-logs tail logs
apps/
accounts/ user accounts
announcements/ news and announcements
chords/ chord library
courses/ courses
lessons/ lessons
songs/ song library
schemes/ fretboard schemes
metrics/ Prometheus metrics endpoint
config/ Django settings and URL routing
infrastructure/ Docker, Ansible, observability
GNU Affero General Public License v3.0 or later. All source files carry SPDX headers and are REUSE compliant.