Skip to content

Repository files navigation

Guitar0 backend

CI codecov Python Django License REUSE status

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.

Tech Stack

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

Prerequisites

  • Python 3.14+
  • PDM
  • PostgreSQL 16 — or Docker (see below)

Quick Start

Local:

cp .env.example .env.development   # fill in DB credentials
pdm install
make migrate
make run

Docker:

make docker-up

API is available at http://localhost:8000.

Development Commands

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

Project Structure

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

License

GNU Affero General Public License v3.0 or later. All source files carry SPDX headers and are REUSE compliant.

About

REST API for the guitar0.net learning platform powering the web and mobile applications.

Topics

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Used by

Contributors

Languages