All posts
CollaborationWhiteboardClient collaborationClient portalDesign approval

A shared whiteboard your client can actually draw on

The mark-up loop — export, annotate, email, re-export — is where design feedback goes to die. Every TimerOS project now has a canvas the client draws on too.

TO
The TimerOS Team
Vezoft
7 min read

There is a loop that eats an hour of every design week and never appears on a timesheet. You export a screenshot. You draw a red circle on it. You email it, with a paragraph explaining which button you mean. They reply about a different button. You export again. Nobody in that exchange is confused about the work — they are confused about the picture, because the picture stopped being live the moment it left the tool.

Every TimerOS project now has a canvas instead. Your team and the client draw on the same one, at the same time, from the desktop app, the web app or the client’s own portal — and when a sketch is worth signing off, it is frozen into a revision the client approves or rejects on the spot.

Figure 1 · The Whiteboard tab, running
The Whiteboard tab, reconstructed and played on a loop: the team sketches, the client rings what worries her and leaves a note, the board is snapshotted for approval, then wiped so something else can be drawn. Both pointers carry a name, because on a live board you can always see whose hand a line is coming out of.

Why a shared canvas and not a comment thread

Written feedback on visual work is a translation exercise performed twice, badly. The client translates a picture into a sentence; you translate the sentence back into a picture, and the gap between the two is where a revision round comes from. “Make the header bigger” has at least four meanings and you will pick the wrong one roughly half the time.

Pointing is faster than describing, and it is the one thing a comment thread cannot do.
The whole reason this is a canvas and not another comment field.

The tools are deliberately the boring ones: freehand, rectangle, ellipse, line, arrow, text, sticky notes, an eraser. It is not a design tool and it is not trying to become one. It is the whiteboard that used to be on the wall of the room the client no longer visits.

Live, without pretending the network is reliable

Anything collaborative has to answer one awkward question: what happens when the connection drops mid-stroke? The usual answer — make everything reliable — is expensive enough that boards built that way feel laggy, because a moving cursor is being delivered with the same care as a saved document.

So the board splits by how much each thing is worth. Two lanes, different rules.

Figure 2 · Two lanes, split by what a loss costs
Lane A · relayed
Never written down
cursor positionstroke in progresswhat you have selected
Sent peer to peer through the room and dropped on the floor if the network hiccups. Losing one frame of a moving cursor costs nothing, and paying to guarantee it would cost the frame rate.
Lane B · written
Saved, then broadcast
finished elementedit or deletesaved revision
Written over plain HTTP first; the server broadcasts from the record it just stored. Nothing is real because a peer saw it — it is real because it is in the database.
The board is fully reconstructable from lane B alone. Lane A only ever makes it feel live — reload the page and nothing that mattered is missing.

That split is also what keeps a busy board from taking itself down. Freehand drawing emits about thirty times a second, and a finished stroke is a database write — so writes are buffered and sent in batches rather than one request per stroke, which at any real drawing speed would trip the API’s own rate limit. The cursor lane, by contrast, is capped and simply drops anything past its budget, silently, on purpose.

A revision is a promise about what was approved

A live board is a terrible thing to approve. If a client says “yes, that” on Tuesday and the board has moved on by Thursday, nobody can say afterwards what “that” was. Approval needs something that cannot move.

Saving a revision takes a frozen copy of every element on the board at that instant. It starts as your team’s private draft — the client cannot see it, its title, its internal note, or any of its contents. When you send it for approval, and only then, it appears in the client’s portal for a decision, with room for a note either way.

Figure 3 · The life of a revision
Board
Always live, always editable
Revision saved
Frozen copy · your team only
Sent for approval
Now visible in the portal
Approved or rejected
Client decides, with a note
↵ restore — any revision puts the live board back to that state, for everyone at once
Client visibility is an allow-list, not an exclusion: a status has to be explicitly added to what a portal user may see, so anything introduced later is hidden by default rather than leaking the day it ships.

Restore, and why it is loud

Any saved revision can be restored, which puts the live board back to that state — for everyone currently on it, immediately. That last part is not a detail. An early version restored the board for the person who clicked and left everyone else looking at a stale canvas they could keep drawing on, which is the worst possible outcome: two people confident they are on the same board and demonstrably not.

Who can see it, and who can draw

The board inherits the project’s own boundaries rather than inventing new ones.

Figure 4 · Access, in four rules
Your teamThe client, in their portal
Sees the boardOn any project they can already seeOn their own projects only
Draws on itWith the whiteboard permission on their roleWith edit rights on the project
Sees draftsYes — drafts are internalNever
Approves a revisionNo — the team asks, it does not decideWith approval rights, one click, with a note
Reads on a project outside your scope answer 'not found' rather than 'forbidden' — a refusal that names the thing it is refusing has already told you it exists.
One board, three apps
The drawing engine is the same code in the desktop app, the web app and the client portal — not three implementations that agree today and drift by December. It is written without a single UI dependency precisely so the portal, which shares none of the dashboard’s styling, can run the identical file.

The limits, plainly

  • No images yet. Shapes, text, sticky notes and freehand. Dropping a screenshot onto the board is the obvious next thing and it is not in this release.
  • It is a whiteboard, not a design surface. No layers, no components, no precise typography. If you need those, the board is where you point at what the design tool produced.
  • Boards are bounded. Five thousand elements per board, two hundred saved revisions, a thousand points in any one freehand stroke. These are generous for the job and they are hard limits, not soft ones.
  • Live drawing needs a live connection. The board loads and reads fine offline-ish, but collaboration is a socket — if it drops, you will see your own strokes and not your colleague’s until it comes back.
0
apps sharing one drawing engine
0
tools, images to follow
0
elements per board
0
saved revisions per board

Where it changes the week

The honest case for this is not that drawing together is delightful, though it is. It is that the mark-up loop was unbilled and invisible. Exporting, annotating and explaining is real work that no client has ever been invoiced for, and it does not show up as a problem anywhere — it shows up as projects that quietly run over, which is the same thing an effective hourly rate is measuring when it disappoints you.

It also removes one more reason a client has to email you asking what is going on. The board sits next to the same project the client already watches for status, files and approvals — so “here is where we got to” becomes somewhere they can look rather than something you have to write.

Where to find it
Open any project and pick the Whiteboard tab — desktop app v1.10.0 or later, the web app, and the client’s portal. Included on every plan, with no tier gate; drawing is governed by the whiteboard permission on a role, so an owner can hand it out or hold it back per role. Download TimerOS for Windows or start a trial.
What we would like to hear about
Two things specifically: whether a revision is the right unit for approval, or whether you want to approve a region of a live board instead — and what you tried to paste onto the canvas first. [email protected]

See it on your own machine.

Fourteen-day trial — add a card at signup, nothing is charged if you cancel before it ends. Install the desktop app and watch a day classify itself.