All projects
2023.04Software & InfrastructureNew Build

Video Editing Tool MVP

Built an early browser-based editor with layers, canvas, and timeline as its first version.

WebServer & Infra
Video Editing Tool MVP
Screen reconstructed from delivered work. Contains no client data.
Timeline
About 5 months
Team size
4 people
Platforms
Web · Server
Version scope
Initial MVP

Background

The client wanted video editing to happen entirely inside the browser. They needed an initial version that handled layers and a timeline without installing any desktop editing software.

Scope

  • Canvas-based layer editing
  • Timeline construction
  • In-browser render preview
  • Project save and load
  • Basic editing tool set

Technical decisions

What we chose, and why it fit

Implemented canvas rendering with WebGL

With multiple layers stacked and everything needing to redraw on every timeline scrub, plain Canvas 2D got sluggish as layers increased. Moving to GPU-backed WebGL kept the editor responsive even as layer count grew.

Built a separate Node.js rendering server, decoupled from the browser

Producing the final output file was too heavy to handle in the browser, and it couldn't be allowed to affect the browser's performance while a user was editing. We moved rendering to a separate server-side job, keeping the editing screen light.

Engineering challenges

Problem

Previewing multiple layers playing back together on the timeline caused frames to lag.

Approach

We switched to pre-rendering only the layers within the currently visible range, and during playback, simply outputting the already-rendered frames in order.

Result

Timeline playback stayed smooth even with a higher layer count.

Problem

This being an MVP stage, feature priorities changed often, and adding each new editing tool required touching the existing canvas logic.

Approach

We structured editing tools as plugins separate from the canvas core, so adding a new tool no longer required modifying existing code.

Result

When priorities shifted and tools needed to be added or removed, we could respond without touching the canvas core.

Handover and operations

We handed over the source code and rendering server deployment configuration together, and documented the canvas and timeline architecture. We wrote up the code structure so the client's own development team could take over further feature expansion.

Stack

ReactWebGLNode.jsAWS