Cel is an all-in-one animation production hub for solo creators, fan-artists, and indie animators. Storyboards, animatics, scripts, palettes, audio, and commissions - in one quiet place.
Cel replaces the patchwork of Notion docs, Google Sheets, Trello boards, and Drive folders that indie animators normally juggle. One project. One workspace. Every stage from concept to delivery.
| Stage | What you get |
|---|---|
| Script | Live-preview Markdown editor for scenes, beats, and dialogue. Upload existing scripts as PDF, DOCX, or Markdown and view them inline - no retyping. |
| Storyboards | Per-shot boards with reference uploads, version snapshots, and review threads. |
| Animatic | Timeline-based shot sequencing with audio sync and rough timing. |
| Audio | Per-scene audio bins, waveform previews, and dialogue/music/sfx tracks. |
| Palette tools | Build, lock, and export palettes per character or scene. |
| Collaboration | Invite members, role-based access (owner / editor / reviewer), in-app review rooms with approval flows. |
| Commissions | A queue for paid work: client briefs, milestone tracking, deliverable approval, and revision history. |
| Pipeline | Bird's-eye dashboard of where every shot in every project actually is. |
| Discord integration | Push status updates and review-ready pings to your team's Discord. |
Open cel-source.onrender.com and click Start Creating - Free. (The free instance sleeps after 15 min of inactivity; first request may take ~50 seconds to wake.)
Prerequisites
- Node.js 20+
- pnpm 9+
- Bun (used for tests + some scripts)
- A Postgres database (local or Neon)
- (Optional) Cloudflare R2 bucket for asset storage
Setup
git clone https://github.com/matthewro7263-hub/cel-source.git
cd cel-source
pnpm install
cp .env.example .env.local
# fill in DATABASE_URL, R2 keys, ENCRYPTION_KEY, etc.
pnpm drizzle-kit push # apply schema
pnpm dev # starts client + server on :5173Then open http://localhost:5173.
Run the tests
bun test
pnpm check # typecheck- Frontend: React 18 + Vite + TypeScript, TanStack Query, wouter (routing), Radix UI + Tailwind, Lucide icons
- Backend: Node.js + Express, Drizzle ORM
- Database: PostgreSQL (Neon in production)
- Storage: Cloudflare R2 (S3-compatible) for uploads
- Auth: Cookie/JWT sessions
- Notifications: Discord webhooks
- Hosting: Render (web service) + Neon (Postgres) + R2 (assets)
- Tests: Bun's built-in test runner
cel-source/
client/ # React app
src/
pages/ # Route-level views (ProjectWorkspace, Dashboard, etc.)
components/ # UI components (Radix-based design system)
hooks/ # React hooks (useToast, useAuth)
lib/ # API client + utilities
server/ # Express API
routes.ts # All HTTP routes
storage.ts # DB access layer (Drizzle queries)
discord.ts # Discord webhook integration
shared/ # Code shared between client and server
schema.ts # Drizzle schema + Zod validators
docs/ # In-repo documentation
drizzle.config.ts # Migration config
See .env.example. The critical ones:
| Variable | What it does |
|---|---|
DATABASE_URL |
Postgres connection string |
ENCRYPTION_KEY |
64-char hex (32 bytes) for AES-256 at-rest encryption. Generate with openssl rand -hex 32 |
R2_ACCOUNT_ID, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_BUCKET |
Cloudflare R2 credentials |
DISCORD_WEBHOOK_URL |
(optional) default Discord channel for notifications |
SESSION_SECRET |
Cookie signing key |
Never commit .env.local. .env.example is the safe template.
Cel is built in public. PRs welcome.
- Fork, then create a feature branch (
feat/<thing>orfix/<thing>) pnpm install && pnpm check && bun testshould all pass- Open a PR against
main - Render will spin up a preview deploy for review
For larger features, open an issue first so we can align on scope.
- Script upload (PDF / DOCX / Markdown) with in-app viewer
- Discord notifications for review-ready shots
- Snapshot-based version history
- iPad-friendly storyboard view
- Real-time multi-cursor collaboration on scripts
- HDR-aware palette tools
- Public portfolio pages for finished work
MIT (c) matthewro7263-hub