Interfaces is where movement becomes material for digital creation.
It brings choreographers, dancers, visual artists, and developers into one local-first workspace where a recording can move from rehearsal reference to generative artwork in minutes.
- capture motion as structured data,
- organize and remix scans in a relational database,
- transform movement into visuals in a live coding playground.
This README is your launchpad: get running fast, see what Interfaces can do, then dive into the docs track that matches your role.
If you want the fastest possible route from clone to first 3D skeleton playback:
git clone https://github.com/gandie/Interfaces-2026.git
cd Interfaces-2026
cp .env.example .env
docker compose up --buildThen open:
- App: http://localhost:8000
- API docs (Swagger): http://localhost:8000/docs
- API docs (ReDoc): http://localhost:8000/redoc
- Capture motion from webcam, local video, or WebSocket streams.
- Store scans as
RawData, then wrap them asChoreorecords with metadata. - Create visuals in the Playground (p5.js and Three.js output engines).
- Export/Relay motion through data sinks (DB, WebSocket, BVH, post-process chain).
- Learn in-app through the new Docs tab (renders markdown from
docs/and supports date-based chronological browsing). - Report precisely with visible header diagnostics (app version + commit copy helper).
Interfaces is built for sharing and remixing: treat scans as collaborative source material, credit creators, and build work that travels across dance and code communities.
Native p5js GIF eports via ffmpeg WASM:
threejs 3d skeleton output:
Local-first frontend, where all the heavy lifting is done:
- Onboarding: First Scan to Three.js Skeleton in 15 minutes
- Three.js output guide: Three.js 3D Skeleton User Guide
- Curve analysis guide: Curve View User Guide
- Popout guide: Popout User Guide
See the docs/changelog-*.md files for feature-level history.
All API routes are under /api/v1.
/api/v1/choreotypes– CRUD for choreotype categories/api/v1/rawdata– CRUD for raw motion payloads + legacy import/api/v1/choreos– CRUD for publishable choreography records + package import/export/api/v1/database– full database import/export backup endpoints/api/v1/jsscripts– CRUD for saved Playground scripts/api/v1/docs– docs index and markdown rendering for the in-app docs viewer
.
├── app/ # FastAPI backend
├── frontend/ # Static frontend assets (HTML/CSS/JS)
├── docs/ # User guides, changelogs, research
├── tests/ # Backend + frontend test suites
├── alembic/ # Migrations
├── scripts/ # Legacy utility scripts
└── tools/ # Maintainer tooling (version bump, docker build metadata)
# bump app version in app/main.py
tools/bump-version.sh 0.2.0
# build docker image with app version + current git commit metadata baked in
tools/docker-build-with-meta.sh interfaces-2026:0.2.0docker compose also forwards these metadata values through build args:
INTERFACES_APP_VERSION and INTERFACES_COMMIT.
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
alembic upgrade head
uvicorn app.main:app --reload# Backend
pytest tests/backend/ -v
# Frontend (Playwright)
playwright install chromium
pytest tests/frontend/ -vThis project actively supports human + AI collaboration, but every AI-generated contribution must still meet the same bar as human contributions:
- factually correct, test-verified, and reviewable,
- aligned with the project spirit (clarity, openness, modularity),
- designed to help artists and developers collaborate without unnecessary complexity.
AI assists implementation; humans remain responsible for final judgment, context, and creative direction.


