arthur/requirements.txt
Olive Vaughn 6a53adb5e0 Projects live at URLs, have owners, and are edited together live
A project is only ever at /p/<id>/<slug>; / is the index of the projects
you own or edit. Every project has an owner, who can name editors;
anyone with the link can view. Every edit saves itself, one request in
flight at a time, as a patch of the leaves that changed, and a websocket
(channels + daphne) carries presence and each committed write to
everyone else in the project. The first write to a leaf wins, and the
loser is told.

Undo is per person: a step undoes only if the leaves it touched still
hold what it left, so it never takes a collaborator's work with it.
Named snapshots replace saving, and restore as an ordinary write.

An empty symbol now survives the leaf round trip with `:nodes {}`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 22:04:03 -04:00

14 lines
692 B
Text

# The backend's whole dependency list, and it is meant to stay this short.
#
# No DRF: the API is nine endpoints over JSON, and a document whose values are
# transit is one Django ORM JSONField and a `json.loads` — a serializer layer
# would be a second description of a shape that already has one in
# arthur.domain.leaf. No Pillow either; the one thing the backend needs from a PNG
# is its dimensions, which is a 24-byte header read in clips/blobs.py.
#
# Channels for the one websocket — presence and broadcast deltas — and daphne to
# serve it; `daphne` in INSTALLED_APPS makes `runserver` the same server.
Django>=5.0,<6.0
channels>=4.2,<5.0
daphne>=4.1,<5.0
whitenoise>=6.9,<7.0