Web App

Atlas Notes

A collaborative markdown knowledge base with real-time editing and a graph view of linked notes.

Placeholder preview of the Atlas Notes interface

Project data

Role
Frontend lead
Type
Web App
Stack
  • React
  • TypeScript
  • CRDT
  • Vite
Duration
6 months
Year
2024
Status
Live
Links
Demo

The challenge

Many editors, one document

Teams edited the same notes at the same time and lost changes with every conflict dialog.

The editor also had to stay fully usable with a keyboard and a screen reader.

How it was built

Development process

Six phases from the first conversation to the release. The bar shows how the time was split.

7 weeks in total

  1. Research

    Editors described the moments their changes collided; each one became a sync test case.

    3 days · Conflict cases

  2. Architecture

    Data model, rendering strategy and API contracts were agreed before the first screen was drawn.

    1 week · ADR, data model

  3. Interface

    A component inventory and responsive layouts, built entirely from design tokens.

    4 days · Token set, component inventory

  4. Build

    Features went live in small slices behind flags, with typed boundaries between client and server.

    16 days · Feature slices

  5. Testing

    Unit, end-to-end and accessibility checks ran on every pull request.

    1 week · Test suite in CI

  6. Deployment

    Every branch got a preview environment; the production rollout was a single click.

    2 days · Preview and release pipeline

  7. Result

    Conflict dialogs disappeared, and weekly active editors per workspace doubled.

Screens

Outcome

The results

Placeholder preview of the Atlas Notes interface

What changed after launch

Conflict dialogs disappeared, and weekly active editors per workspace doubled.

  • React
  • TypeScript
  • CRDT
  • Vite

Key figures

Sync latency
45ms
Notes / workspace
10k
WCAG level
AA

Under the hood

Conflict-free by construction

Each note is a CRDT document synchronised over WebSockets with presence data on a separate channel.

The graph view is rendered on a canvas but mirrored as an accessible list, so every link is reachable by keyboard.

  • React
  • TypeScript
  • CRDT
  • Vite

Next project

Want something similar? Let’s talk.

Let’s talk

Tell me about your project. I usually reply within two working days.