Skip to content

Dependency-aware task graph

A card can’t tell you what it’s waiting on.A node can.

NodeKanban trades Kanban columns for an infinite canvas. Tasks are nodes, edges carry the dependency logic, and blocked is worked out from the graph instead of typed into a field that goes stale by Thursday.

3 boards · 150 nodes per board · no card required

nodekanban / mvp — 7 nodes, 7 edges2 blocked
A NodeKanban board with seven tasks and seven dependenciesSeven task cards joined by dependency lines. 2 of them are waiting on unfinished work, and the board works that out on its own. Select a card and press Enter to move it to its next status, or use the arrow keys to reposition it. Cards can also be dragged.NB-04Postgres schema + RLSDONENB-07Auth + org bootstrapDONENB-12Board canvasIN PROGRESSNB-19Stripe checkoutTODONB-23Realtime presenceBACKLOGNB-26Seat billing webhookBLOCKEDWAITING ON: STRIPE CHECKOUTNB-31Public betaBLOCKEDWAITING ON 2: BOARD CANVAS +1BLOCKS — SATISFIEDBLOCKS — UNSATISFIEDRELATES
Try it: drag a card anywhere, or click one to move it to its next status. Nobody ever sets a card to “blocked” — the ember cards work that out from what they are still waiting on.

The rule

Nobody should have to remember what’s waiting on what.

Work gets stuck quietly. Someone notices on Thursday, says it in standup, and by then two people have been waiting since Monday. NodeKanban already knew — you drew the connection, so it watches it for you.

  • Nothing to mark. You never set a blocked flag, so you can never forget to clear one.

  • Nothing to chase. The board tells you the moment something frees up. You do not hear it in standup.

  • Nothing goes stale. One status change updates everything downstream of it, for everyone, at once.

Upstream unfinished

Nobody touched “Deploy staging”. Its incoming blocks edge is unsatisfied, so the board reports it as blocked.

Upstream marked done

One status change upstream. “Deploy staging” clears on its own — no second edit, no stale label.

What you get

Built for projects where the order of the work is the hard part.

Launches, migrations, builds, releases — anything where half the job is knowing what has to land before the next thing can start.

  • An infinite canvas, not five columns

    Lay the work out the way the project actually looks — by system, by milestone, by team. Nothing gets squeezed into a lane it does not belong in.

  • Draw the line, state the rule

    Blocks means this cannot start until that finishes. Relates means these two are worth reading together. Two kinds of connection, no house style to agree on first.

  • Blocked answers itself

    Mark one task done and everything it was holding up frees in the same moment. Nobody has to spot it, announce it, or go update a second board.

  • Open a node, find the work inside

    Nest up to three levels deep. Sub-tasks stay attached to the thing they belong to instead of vanishing into a checklist nobody reopens.

  • Everyone is on the same board

    Cursors, presence and changes land live for every person looking at it. You watch the plan move instead of reading about it the next morning.

  • Impossible plans get caught

    If two tasks end up waiting on each other, neither can ever start. NodeKanban refuses that connection as you draw it and shows you the loop you just closed.

Six states. Five priorities. Nothing to interpret.

Status is a colour and a word. Priority is a gauge, so it never gets confused with status at a glance. The same palette runs from the marketing page to the canvas.

  • BacklogCaptured, not committed to
  • To doReady to be picked up
  • In progressSomeone is on it right now
  • BlockedDerived — never stored
  • DoneClears everything downstream
  • ArchivedOff the board, still in history
  • None
  • Low
  • Medium
  • High
  • Urgent
  • Free foreverSatisfied
  • No credit cardSatisfied
  • Realtime includedSatisfied
NB-00 · Your first boardUnblocked

Map one real project.You’ll see the shape of it in ten minutes.

Nothing upstream of you is unfinished. The free plan is deliberately big enough to hold a genuine dependency graph — three boards, 150 nodes each.

The free plan is the trial. It does not expire.