Alternative structures
Filesystem alternatives
| Structure | Strength | Cost | Decision |
|---|---|---|---|
videos/ at repository root | Clear first-class convention; works with or without Next.js | Adds another root source folder | Default |
src/videos/ | Familiar to libraries using src/ | Weakens the visible convention | Configurable |
app/videos/ | Colocates with Next.js routes | Confuses URLs with compositions | Not recommended |
packages/videos/ | Strong monorepo isolation | Heavy for small projects | Supported as a configured root |
| One package per video | Independent deployments and ownership | Excessive setup and poor sharing | Large-studio option |
Authoring alternatives
video.tsx exports static metadata and a React timeline. This is Odori's default because components compose naturally and React remains visible.
Registration alternatives
Runtime filesystem globbing is concise but bundler-specific. Manual registration is portable but repetitive and easy to drift. Odori generates a static import manifest, retaining portability and code splitting while keeping registration out of user source.
Rendering alternatives
- Local Chromium and FFmpeg are ideal for development and CI.
- Dedicated workers provide predictable hosted rendering and isolation.
- Serverless rendering scales well for bursty workloads but needs chunking, artifact assembly, and provider-specific operations.
- Client-side encoding can help with lightweight cuts but is not the default for consistent production codecs, fonts, and large assets.
The authoring contract remains deployment-independent. Preview and export share the same frozen manifest regardless of renderer.