Development
Development
Tooling
- Package manager: Bun (preferred) or PNPM
- Formatting & linting: Biome (
bunx biome format --write .
,bun run lint
) - Type checking:
bun run typecheck
- Testing:
bun run test
Recommended workflow
Start services if needed:
docker-compose up -d bun run db:migrate bun run dev
Work inside feature branches (
git checkout -b feature/your-feature
).Keep pull requests focused and reference GitHub issues when possible.
Run linting/formatting before opening a PR.
Preview refactor status
The preview panel currently renders DOM elements for real-time feedback. A binary renderer is in development to align preview and export output. Avoid heavy work on:
- Preview rendering and effects
- Export pipeline internals
Good contribution areas include timeline UX, project management, performance improvements, accessibility, and documentation.
Architecture highlights
- Editor state: Zustand stores in
apps/web/src/stores/*
. - Media pipeline: FFmpeg.js for in-browser processing, background removal via Python (
apps/bg-remover
), transcription via Modal (apps/transcription
). - Storage: IndexedDB + Origin Private File System for local media, with optional Cloudflare R2 integration.
- Desktop: Tauri wrapper shares React components from
apps/web
.
State management stores
editor-store.ts
— canvas presets, guides, bootstrap routines.timeline-store.ts
— tracks, timeline elements, playback state.media-store.ts
— imported media catalogue and metadata.playback-store.ts
— transport controls and timing.project-store.ts
— project persistence, autosave.panel-store.ts
— UI layout and panel visibility.keybindings-store.ts
— keyboard shortcut registry.sounds-store.ts
/stickers-store.ts
— audio cues and overlay assets.
Support packages
packages/ui
— headless UI primitives used across apps.packages/config
— shared ESLint, TypeScript, and Next.js configuration.packages/types
— TypeScript definitions shared across services.
Media tooling
- FFmpeg — client-side processing via
@ffmpeg/ffmpeg
. - Background removal — Python services (U2Net, SAM, Gemini) in
apps/bg-remover
. - Transcription — Modal-based Whisper pipeline documented in Transcription service.
Release cadence
- Changes merge to
main
behind feature flags where necessary. - Desktop builds are produced manually while the Tauri pipeline is under construction.
- Public web deploys use Vercel previews before promotion.
Don’t hesitate to open a draft pull request early — reviewers can help with architecture decisions and API design.
Last updated on