All projects

Project case study

Glyft

A predictable canvas architecture for a lightweight, local-first graphics editor.

Role
Frontend Developer, Product Designer & Open-Source Maintainer
Status / year
Active · 2026
Glyft graphics editor landing page

Overview

Glyft is built for developers who need polished visual assets without moving between several design tools. It supports common outputs such as Open Graph images, social cards, web graphics, and reusable templates directly in the browser.

The product remains private and account-free by storing project data locally in IndexedDB. This makes the core workflow fast while keeping user files on their device.

01

The canvas problem

A browser editor must keep object positioning predictable while selection, snapping, zooming, panning, history, and exports all change around it. Mixing screen coordinates with document coordinates would make these systems increasingly difficult to reason about.

02

A stable coordinate model

Glyft keeps the artboard fixed at document coordinate (0,0) and stores every object in document coordinates. Pan and zoom are applied only through Fabric.js viewport transforms, so editor navigation never changes the underlying document.

Exports use an offscreen StaticCanvas. The generated file therefore depends on the document itself rather than the user's current zoom level or viewport position.

  • Document coordinates remain the source of truth.
  • Viewport transforms handle navigation without mutating content.
  • Offscreen rendering keeps exports deterministic.
03

Reducing controller complexity

As the editor grew, its original canvas controller accumulated too many responsibilities. I separated serialization, object creation, viewport management, image handling, selection, snapping, layers, and history into focused services.

That refactor reduced coupling and made it safer to add editor features without repeatedly changing the core canvas lifecycle.

04

What the project demonstrates

Glyft demonstrates product design and frontend engineering beyond conventional forms and dashboards: stateful canvas interaction, coordinate systems, local persistence, deterministic exports, and maintainable feature boundaries in an open-source product.

Technology

  • React
  • TypeScript
  • Vite
  • Fabric.js
  • Zustand
  • Dexie
  • Tailwind CSS

Have a project in mind?

Let's build something useful.

Get in touch