Skip to content

Web interface (M5) #238

Description

@txoof-bot

The web interface for PaperPi v2 (milestone M5). Design: docs/decisions/web-interface.md, config-format.md, live-config-reload.md.

Decided with txoof (2026-10-07)

  • The web server runs inside paperpi run in its own thread. Preview drawings run in a separate process with a time limit, like normal screen updates.
  • The password is stored as a scrypt hash (built into Python) in the config file.
  • New packages: fastapi, uvicorn (plain), jinja2, python-multipart.
  • Log-in can be switched off with a setting in the config file. Then anyone on the home network can use the web interface without a password.
  • Forgotten password: clear steps in the docs and on the log-in page, and a command:
    1. Run paperpi reset-password on the Pi (or in the Docker container). It removes the saved password (deleting the line by hand does the same).
    2. Restart or reload PaperPi.
    3. Open the web interface; the first visitor sets a new password.

Parts (one PR each, about 300–600 lines)

Area

web (src/paperpi/web/), core (cli.py, config.py, scheduler.py hooks), ci (pyproject.toml, uv.lock), docs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:webArea: see area map in CLAUDE.mdin-progressClaimed: an agent or person is working on this

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions