All posts
CollaborationWhiteboardClient collaborationClient portalDesign approval

A shared whiteboard your client can actually draw on

Design feedback gets lost in the export, annotate, email, re-export routine. Every TimerOS project now has a canvas the client can draw on too.

TO
The TimerOS Team
Vezoft
7 min read

There is a routine that can eat an hour of a design week and never appears on a timesheet. You export a screenshot, draw a red circle on it and email it with a paragraph explaining which button you mean. The client replies about a different button, and you export again. Nobody is confused about the work. What confuses everyone is the picture, which went out of date 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. When a sketch is ready for sign-off, you save it as a fixed revision and send it to the client to approve or reject.

Figure 1 · The Whiteboard tab, running
A recreation of the Whiteboard tab, playing on a loop. The team sketches, the client circles what worries her and leaves a note, the board is saved for approval, then cleared for the next drawing. Each pointer carries a name, so on a live board you always know who is drawing what.

Why a shared canvas and not a comment thread

Written feedback on visual work means translating twice, and badly. The client turns a picture into a sentence, you turn the sentence back into a picture, and every mismatch costs another round of changes. “Make the header bigger” has at least four meanings, and you will often pick the wrong one.

Pointing is faster than describing, and a comment thread cannot point.
— The idea the board is built on.

The tools are deliberately simple: freehand, rectangle, ellipse, line, arrow, text, sticky notes and an eraser. The board stands in for the whiteboard on the meeting-room wall, in the office the client no longer visits.

Live, without assuming the network is reliable

Every shared tool has to decide what happens when the connection drops in the middle of a stroke. The usual choice is to deliver everything reliably. That gives a moving cursor the same care as a saved document, and boards built that way feel sluggish.

So the board sorts its traffic into two lanes by what losing it would cost, and each lane has its own rules.

Figure 2 · Two lanes, split by what a loss costs
Lane A · passed along
Never saved
cursor positionstroke in progresswhat you have selected
Passed straight to everyone on the board and simply dropped if the network stutters. Losing one frame of a moving cursor costs nothing, and guaranteeing delivery would make everything slower.
Lane B · saved
Saved, then broadcast
finished elementedit or deletesaved revision
Saved over plain HTTP first; the server then sends everyone the copy it just stored. A change counts only once it is in the database, not when someone else has seen it.
The board can be rebuilt entirely from lane B. Lane A only makes it feel live: reload the page and nothing important is missing.

Both lanes are also throttled, so a busy board cannot overload itself. While you draw freehand, the stroke in progress goes out about thirty times a second. Every finished stroke is saved to the database, but in batches, because one request per stroke would hit the API’s own rate limit at normal drawing speed. Lane A has a fixed ceiling and deliberately drops anything above it.

A revision is a promise about what was approved

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

Saving a revision makes a fixed copy of everything on the board at that moment. It starts as a private draft for your team. The client sees none of it, not even its title or internal note. Only when you send it for approval does it appear in the client’s portal, where they approve or reject it and can add 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
Clients see a revision only when its status is explicitly marked as visible to them. A status we add later stays hidden from them by default.

Restore, and why everyone sees it

Restoring a saved revision returns the live board to that revision at once, for everyone currently on it. An early build did not: it restored the board only for the person who clicked, and everyone else kept drawing on the old canvas. That is the worst failure a shared board can have, because two people believe they are looking at the same thing when they are not.

Who can see it, and who can draw

The board follows the project’s own boundaries and adds none of its own.

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, the client decidesWith approval rights: one click, plus a note
Opening a board on a project you cannot access returns “not found” rather than “forbidden”, because “forbidden” would confirm that the project 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 versions that match today and differ by December. It has no dependency on any UI library, so the portal, which shares none of the dashboard’s styling, can run exactly the same file.

The limits

  • Clients see your pictures but cannot add their own. Since v1.18.3 you can paste, drag or choose a picture for the board: PNG, JPEG, GIF or WebP, up to ten megabytes each and a hundred per board. SVG is excluded because it can contain scripts. Before you put a screenshot on a board a client can open, remember that they will see everything on it.
  • It is not a design tool. There are no layers, components or precise typography. For those, stay in your design tool and use the board to point at the result.
  • Boards are bounded. Five thousand elements per board, two hundred saved revisions, and a thousand points in any one freehand stroke. These are hard limits, and more than enough for the job.
  • Drawing together needs a live connection. The board still loads and can be viewed on a poor connection, but if the live link drops, you see your own strokes and not your colleague’s until it comes back.
0
apps sharing one drawing engine
0
drawing tools, plus pictures
0
elements per board
0
saved revisions per board

Where it changes the week

Drawing together is pleasant, but the bigger gain is the routine it replaces, which was unbilled and invisible. Exporting, annotating and explaining is real work that clients are rarely invoiced for, and at the time it never looks like a problem. It shows up later, as projects that quietly ran over and an effective hourly rate lower than you expected.

The board also removes one more reason for a client to email you asking what is going on. It sits in the same project where the client already follows status, files and approvals, so they can check for themselves where you got to, without waiting for an email from you.

Where to find it
Open any project and choose the Whiteboard tab in the desktop app (v1.10.0 or later), the web app or the client’s portal. Included on every plan. Who can draw is set by the Whiteboard permission on each role. Download TimerOS for Windows or start a trial.
What we would like to hear about
Two things in particular: whether a whole revision is the right thing to approve, or whether you would rather approve one area of a live board; and what you first tried to paste onto the canvas. [email protected]

See it on your own machine

Try it free for 14 days: add a card at signup, and nothing is charged if you cancel before the trial ends. Install the desktop app and watch it classify your day.