Thomas Cayne
Back to selected work

Founder · Product architecture and active implementation · Private product in development

Coverlay Studio

An actively developed browser-based editor for reversible timeline operations, media composition, overlays, and AI-assisted production workflows.

I am designing and implementing Coverlay Studio as a private product. Its current codebase contains a real non-linear editing foundation while public access remains intentionally unavailable during active development.

Coverlay Studio landing page presenting its AI-assisted video creation suite
Representative product artwork for the active Coverlay Studio codebase; the private product remains in development and has no public link.

Private product · Public-safe system view

Editor intent to reversible state and persistence

Editing intent enters one typed state boundary, participates in reversible history, projects consistently into every studio surface, and crosses an explicit API boundary for application-owned persistence.

  1. Editor intent

    Timeline and canvas operation

    Timeline and canvas tools express split, trim, ripple, roll, slip, slide, move, selection, and composition intent through typed actions.

  2. State boundary

    Typed editing model

    A centralized Zustand project store applies one behavioral contract to tracks, clips, assets, selection, and panel state.

  3. History boundary

    Reversible state transition

    Zundo wraps project mutations in shared undo and redo history so destructive-looking operations remain reversible.

  4. Interface projection

    Synchronized studio surfaces

    Timeline, canvas, properties, assets, and assembly surfaces read the same project state instead of maintaining competing copies.

  5. Persistence boundary

    Express and PostgreSQL

    Persistence commands cross the Express API to Clerk-mirrored identity and Drizzle-managed PostgreSQL records for projects, tracks, clips, assets, and jobs.

Constraint and context

A browser editor must keep tracks, linked clips, compound clips, selection, and panel state synchronized while making destructive-looking timeline operations reversible and predictable.

Implemented approach
  • I built a typed Zustand project store wrapped by Zundo so timeline changes participate in a shared undo and redo history
  • I implemented linked and compound clips plus split, trim, ripple, roll, slip, slide, move, duplicate, mute, lock, visibility, and targeting operations
  • I separated the Next.js studio from an Express API with Clerk identity synchronization and Drizzle schemas for users, projects, tracks, clips, assets, and generation jobs
Engineering decisions and tradeoffs
  • I centralized editing state in one typed model, accepting greater store complexity to keep timeline, canvas, properties, assets, and assembly behavior consistent
  • I modeled linked and compound clip relationships as explicit data so editing operations update related media deliberately instead of relying on visual conventions
  • I separated the browser studio from an Express persistence boundary so interface behavior and application-owned storage can evolve independently while Clerk identity is mirrored into local records
Resulting capability
  • I built a reversible multi-track editing foundation rather than a static timeline mockup
  • I established one shared action contract for editing tools consumed across multiple studio surfaces
  • I documented verified engineering depth publicly without exposing private source or implying that the product is ready for public use

Technology used

  • React
  • Next.js
  • TypeScript
  • Zustand
  • Zundo
  • Express
  • PostgreSQL
  • Drizzle ORM
  • Clerk