Rukundo RonaldoRR · 2026
Back · All work
N° 05 · Case study
En cours
2023

Quill.

Un outil d’écriture assisté par IA qui se fait discret. Les suggestions apparaissent en marge, jamais au milieu de votre phrase.

— Role
Fullstack
— Year
2023
— Client
Personnel
— Stack
Next.js · OpenAI · Postgres
Cover · 01 Quill · 2023 · 16:9
— 01 · The brief

A self-hosted project management tool for distributed teams who don’t live in their inbox.

Most of the team had tried Asana, Notion, Linear — and all of them felt either too heavy or too prescribed. We wanted something that respected the way our studio already worked: in shared rituals, in scattered async messages, in occasional bursts of intense collaboration.

Mosaic started as a weekend experiment with HTMX on top of Django. The idea was simple: render full pages on the server, swap fragments in place, and never write a line of JavaScript framework code. Three months later it was running in our studio and four others. Nine months in, fourteen design studios are using it daily.

The hardest constraint wasn’t technical — it was philosophical. Most PM tools try to be everything to everyone. Mosaic chose, deliberately, to be small. Three views, two object types, one strong opinion about how projects should breathe.

01 Chapter · Discovery

Three weeks of watching how teams actually work.

Before writing a line of code, I shadowed five distributed studios for three weeks each. I watched stand-ups, retros, async hand-offs. I read their Notion docs and their Slack channels.

The pattern was always the same: people bypassed the formal PM tool the moment things got real. Decisions happened in DMs. Status updates lived in private docs. The PM tool was a graveyard of stale tickets.

Fig. 01 · Research
Field notes · 3 weeks 05 studios
02 Chapter · Design

One board. Three views. Two object types.

The design constraints I settled on were almost embarrassingly small. A project has a board. A board has cards. Cards have a status. That's it.

The interesting design work was in what to leave out: no nested subtasks, no custom fields, no automation rules. Everything else lives in the card body — written in Markdown, edited inline, history kept in plain Git-style diffs.

Fig. 02 · Board view
Todo · 4 Doing · 3 Review · 2 Done · 8
Board · live data Project / Spring '26
03 Chapter · Build

Django on the server, HTMX on the wire, joy in the seams.

The architecture is unfashionably boring on purpose. Django renders full HTML. HTMX swaps fragments. Postgres does the heavy lifting. Redis caches the hot paths. There's no API. There's no client state.

The wire is so quiet that the whole app feels offline. Cards drag-reorder in 30ms. Filter changes feel instant. The longest interaction in the app — opening a card — takes 64ms over 4G.

Fig. 03 · Architecture
BrowserHTMX · Alpine
NginxEdge cache
DjangoTemplates · Forms
PostgresSource of truth
RedisSessions · Cache
S3Files · Avatars
Architecture diagram v 1.4.2
— Kind words
Mosaic is the first PM tool I've used that doesn't try to manage me. The team uses it daily — that's the highest compliment I can give a piece of software.
M
Maya Okafor CTO · Cobalt Studio · early adopter
— Next project 02 / 06
N° 06 2022 Django · PostGIS

Atlas.

Visualisation de données géographiques pour une ONG environnementale. Livré en sept semaines, toujours en service quatre ans plus tard.

Read case study
© 2026 Rukundo Ronaldo · Case study · N° 01 Mosaic · v 1.4.2 · live ← Back to All work