Skip to content

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