Problem. Blocking a film scene shot by shot needs a set, characters and cameras in one place, and a fast way to move between shots. The two earlier attempts each held half: a good shot editor with five primitive shapes and no tests, and a tested stage layer with no live page.
Idea. Shot first. A scene page and a shot page share one live 3D canvas that never remounts, a shot strip moves between shots in one click, and the set is editable from both pages through a "writes to: Set / This shot" switch.
Built. A browser-only React app (Vite, react-three-fiber, TypeScript) that creates a project, dresses a set with primitives and dolls, frames shots with a lens, and has autosave, undo and redo, and JSON export. Props, camera motion, outputs and VR are specified in a roadmap but not built. 121 commits on 10 days, Sep 18 to Oct 30, 2026.
Decision. A browser-only app with a static deploy, instead of Next.js with PGlite. PGlite has the strongest durability, but a deployed preview would have no data because it cannot run on serverless.
Status: exploration · Stage: S1 walking skeleton done and merged (PR #3) · Preview: Vercel preview (requires Vercel team access, not a public link) Everything published from this repo starts unlisted and is labeled
exploration.
A shot-first 3D previs tool for the browser. Build a set from props, place characters, frame each shot with a camera, and watch the scene play back before anything is filmed or generated. Reference product: Previs Pro.
Captured from a local build of main (npm run dev). The set was dressed through the toolbar and the position fields.
The shot page frames one camera per shot. The strip at the bottom moves between the set and each shot.
Two earlier codebases feed this one. Neither is the home for this work.
| Repo | Role | What gets ported |
|---|---|---|
| weeeha/Scene-Builder-v2 | Prototype, idle since 2026-07-27 | Editor ideas: 2D plan mode, camera move presets, framing overlays, coverage view, auto-key, timeline, pose spans, animatic |
| weeeha/Film-Planner- | Film and world tool, stays separate | The tested stage domain layer in film-planner/src/stage: types, resolve order, state hash, poses, lens math, deterministic clip render |
- Film, set and shot are all covered. The shot comes first.
- This repo is the home. Film Planner stays the film and world tool. Scene Builder v2 stays the archived prototype.
- Two pages, a scene page and a shot page, with a shot strip on both for one-click moves between shots.
- The set is editable on both pages. The shot page has a "writes to: Set / This shot" switch.
- First build: a walking skeleton (scene page, shot page, stage, shot strip), then props.
Sketches, sitemap and concept map: FigJam board.
S0 (scaffold) and S1 (walking skeleton) are done: create a project, dress a
set with primitives and dolls, add and frame shots, move between them in one
click on a canvas that never remounts, autosave, undo and redo, JSON export
and import. See docs/superpowers/specs/2026-09-18-scene-builder-3d-design.md
for what S2 (props) adds next.
Known limitations in S1:
- A doll's per-shot pose override is not reflected in the thumbnail of a shot other than the one on screen.
- A deleted shot's thumbnail stays in browser storage until S2 adds a sweep; deleting it with the shot would break undo.
- Memory-only mode when IndexedDB is unavailable and rotation snap arrive in S2.
| Piece | State | Where |
|---|---|---|
| Design spec | Merged (PR #1) | docs/superpowers/specs/2026-09-18-scene-builder-3d-design.md |
| S0 and S1 plan, 22 tasks | Merged (PR #1) | docs/superpowers/plans/2026-09-18-s0-s1-walking-skeleton.md |
| S0 scaffold; S1 domain, storage, state, 3D canvas | Tasks 1 to 22 done | Merged to main (PR #3) |
| S1 selection, framing, pages, shot strip, thumbnails, shortcuts | Tasks 1 to 22 done | Merged to main (PR #3) |
| VR operator mode | Spec and throwaway camera feel spike merged (PR #2) | docs/superpowers/specs/2026-09-18-vr-operator-design.md, spikes/vr-camera-feel/ |
| VR headset run | Waiting on a Quest session | checklist in spikes/vr-camera-feel/README.md |
| Roadmap and M3 to M10 specs | Merged (PR #5) | docs/roadmap.md, docs/superpowers/specs/2026-09-25-*-design.md |
- M1: check the S1 done-when items on the preview in Chrome and Safari. PR #3 is merged.
- M2: props, per the design spec, then the milestones in
docs/roadmap.md. - Run the Quest spike in parallel and record the results in section 4.10 of the VR spec, before M5.
Node 22 or newer. No environment variables are needed.
npm install
npm run dev # Vite dev server
npm run build # production build to dist/
npm run preview # serve the build
npm run typecheck
npm run lint
npm test # Vitest
npm run e2e # Playwright, Chromium and WebKit; serves the build on port 4173
Routes: / lists projects, /p/:projectId is the shot board, /p/:projectId/props
is a placeholder until S2, and /p/:projectId/scene/:sceneId and
/p/:projectId/shot/:shotId are the scene and shot pages. Source is under src/
(app routes and components, domain, state, storage, viewport); the shared
UI kit is the vendored workspace package in packages/ui.
- Branch per task, PR per change. The seed commit is the only direct commit to
main. - Specs before builds.
These seventeen repos make Nick's films together, from story to sound. Each handles one stage, and the same table sits in every one of them.
| Stage | Repo | What it does |
|---|---|---|
| Story and worlds | My Films (private) | The film worlds: bibles, scenes, production plans and generated-image archives |
| Story and worlds | Storytelling Kit (private) | Storytelling cards with artwork editions |
| Story and worlds | Film Writer (private) | World-first film development with the screenplay grown from it |
| Craft and reference | film-craft (private) | Craft rules, measured film norms and dated tool tests |
| Craft and reference | Film Analyzer (private) | Frame-by-frame close reading of films |
| Craft and reference | Look Tokens | A film's look as one token table that composes shot prompts |
| Images | Film Design System | Keeps characters, props and settings consistent across image generations |
| Images | Idea to Prop | Keeps one prop design connected from concept image to fabrication |
| 3D, previs and props | 3D Models (private) | Generates 3D models from text, with a viewer and gallery |
| 3D, previs and props | Scene Builder 3D | Blocks out shots in 3D before anything is generated |
| 3D, previs and props | film-previz | Walk a generated set and save camera shots (spec stage) |
| 3D, previs and props | Location Lab | Scout a real place and hand it to Seedance (design stage) |
| 3D, previs and props | film-props (private) | 3D-printed props and pre-vis sets |
| Video | Video Generation Pipeline | Seedance and Runway video generation with reusable reference packs |
| Video | Local Video Pipeline (private) | Wan 2.2 and MiniMax H3 video drafts on a local GPU |
| Video | Continuity Lab (private, in progress) | Finds and repairs inconsistencies between generated video shots |
| Sound | Audio Generation Pipeline | Local speech, voice cloning and sound effects |

