learn

Introduction

A collaborative drawing workspace, documented folder by folder.

This project is a TypeScript drawing application with guest storage on the device, authenticated scenes, real-time rooms, a hand-drawn renderer, and Redis write-behind persistence.

These notes describe what each folder owns and how the folders talk to each other. They never explain code — for behaviour, read the linked sources in the repo itself. Where the repo was unclear, the page says so.

Start with Installation, then the Monorepo layout, then the High-level architecture.

Tech stack at a glance

The codebase is TypeScript throughout, running on Node 24 or newer with pnpm workspaces. The drawing engine is custom code on the canvas API — no drawing library appears in any workspace manifest.

Language and tooling

Frontend

Realtime and backend

Data

Quality

Common

Platform-neutral element models, collaboration protocols, validation, and reconciliation.

TypeScript · Node >=24

Engine

Browser-independent drawing geometry, tools, renderer, scene capture, and history.

TypeScript · Node >=24

Backend common

Server-only collaboration and access operations shared by HTTP, WebSocket, and worker apps.

TypeScript · Node >=24

Validations

Reusable request validation schemas.

TypeScript · Node >=24

The full list lives on the Tech stack page.

Sources: README.md (documented at commit b0026d9)

On this page