Inspiration
Film pre-production is a mess of unversioned files: storyboard artists email PNGs, directors rename shot-list-FINAL2.pptx, and nobody knows which frames a producer actually approved. Version control never made it past engineering. Slate is the pre-production vault cinematic teams deserve. A workspace where a script scene becomes a versioned production pack, and every asset carries provenance like it's shipping to a client.
What it does
Slate turns a script scene into a versioned production pack in one place:
- Storyboard frames (6 by default, 1–24 configurable), rendered in Slate's own hand-drawn line-engraving language
- Mood board, visual style bible, and character reference sheet
- Shot list with captions, temp audio, and an animatic MP4 placeholder
- A production pack ZIP with a provenance manifest and SHA-256 hash verification on every generated file Each generation pass becomes a version. Generate Version 2, compare it side-by-side with Version 1, approve the final pack, and publish it to a public review page with token-gated review links for packs still in review.
How we built it
- Frontend: Next.js 16 with a strict design system - the UI is drawn as a witnessed utility-patent sheet: india ink on bond, hairline rules, 45° section hatch, and carmine annotation ink reserved for examination and failure.
- Backend: FastAPI + SQLAlchemy, owning project/version state, the pipeline runner, SSE live progress, storage, manifests, and hash verification.
- Pipeline: Mock-first. GENERATION_MODE=mock produces deterministic assets so the demo runs end-to-end with zero provider keys; real providers (GMI Cloud via the genblaze SDK) plug into the same event and manifest contract.
- Security: Cookie sessions, PBKDF2-SHA256 password hashes, CSRF tokens, rate limiting, and private-asset access rules.
- Deployment: Vercel frontend + Render (FastAPI + Postgres), same-origin rewrite proxy for the API.
Challenges we ran into
- Keeping mock generation deterministic while preserving the exact event and manifest shape of real generation.
- Drawing the patent-sheet illustration language in generated PNGs so mock assets stay on-world.
- Deploying a cookie-auth app behind a reverse proxy - same-origin rewrites, CORS, and CSRF cookie parity had to line up.
- A TypeScript 7 auto-install broke next build (Next.js 16 incompatibility). We pinned TypeScript 5.9.3 and set outputFileTracingRoot to make builds reproducible.
Accomplishments that we're proud of
- The full demo runs end-to-end with zero provider keys.
- Provenance is a product feature, not a footnote: every file is SHA-256 verified with a manifest.
- Version comparison is a first-class screen.
- The generated assets are drawn in the same patent language as the UI itself, on-world from frame one.
What we learned
- Mock-first pipelines are the right way to build products. The demo never depends on a live provider, and real providers slot in behind a stable contract instead of rewriting the app around them.
- Security defaults (sessions, CSRF, rate limits) are cheap to add early and painful to retrofit.
What's next for Slate
- Live providers behind the existing pipeline contract - image models, TTS, and real storyboard generation.
- Backblaze B2 as the durable archive layer with object-path transparency in the UI.
- Multi-user review workflows with comments and approval gates.
Built With
- backblaze
- docker
- fastapi
- ffmpeg
- flask
- nextjs
- node.js
- postgresql
- python
- react
- render
- sqlalchemy
- sse
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.