Skip to content

Working on Nessie

Nessie is a FastAPI server (app/) and a web app with no build step (frontend/), with Android and iOS apps around it (mobile/). The Field Guide explains how it's put together; start there.

A development server

The dev stack serves the working tree and reloads on every change, with its own database:

docker compose -f deploy/dev/compose.yaml up -d --build    # start; --build again when requirements.txt changes
docker compose -f deploy/dev/compose.yaml exec nessie pytest   # the tests (the browser ones run on the host)
docker compose -f deploy/dev/compose.yaml logs -f nessie

Or run it straight from a virtualenv, as in Installation → Without Docker. deploy/README.md describes how the dev and release stacks are run side by side, and how releases are made.

Changes

Work on a branch and open a pull request. A change to the UI comes with end-to-end tests in tests/e2e (see Tests), and a change to how things work comes with the docs here updated, the Field Guide included.

These docs

The site is built with Zensical from docs/ and mkdocs.yml (the successor to Material for MkDocs, which reads the same config):

python -m venv .venv-docs && .venv-docs/bin/pip install -r requirements-docs.txt
.venv-docs/bin/zensical serve      # http://localhost:8000, reloading as you edit
.venv-docs/bin/zensical build      # into site/

Pushes to main publish it to getnessie.app through Cloudflare Pages.

More