Project layout
app/
api/ HTTP routes (library, player, playlist, status)
core/config.py settings (core/editable_settings.py: the ones the app can change)
db/, models/ SQLAlchemy setup and tables
repositories/ database queries
schemas/ API request and response models
services/ scanner, tags, artwork, cover art lookup, scan jobs, mpv player, AirPlay,
playlist import (one module per file format in playlist_import/formats/),
smart playlists (one definition per kind in smart_playlists.py),
integrations/ (Lidarr), AI playlists (ai_playlists.py), the filters they and custom mixes share
(mix_rules.py)
cli.py command line
alembic/ database migrations
frontend/ the web app: index.html, js/ (components/, views/, player/), css/
v2/ the classic app, at /v2/ (its own index.html, js/, css/)
img/, sw.js, manifest.webmanifest shared by both: icons, the service worker, the Home Screen app
vendor/ Bootstrap, its JS and its icons, served by Nessie (see Bootstrap and icons)
scripts/ standalone tools (icon renderer, Spotify library export, shairport-sync metadata reader, older importer),
and Docker's: building a release, backing up, copying prod's database to dev
deploy/ the Docker stacks: example (for installing), prod (a released image, through Arcane), dev
(the working tree), and nsy.app's short links
docs/, mkdocs.yml the docs site, getnessie.app (Zensical)
mobile/ the Android and iOS apps (Capacitor): www/ their own pages, android/ and ios/ the projects
Dockerfile the image: the app, both web apps and mpv
tests/ pytest suite