Code shouldn't be your first draft.

Ramble your app idea. Your Claude Code session turns it into screens, flows and the questions you skipped — and Doan won't hand anything off until the ones that change the structure are decided.

Works with Claude Code. Runs on your machine, on your own subscription.

The questions you skipped.

In vibe coding, code becomes your first draft. You start from a big picture, Claude builds, and the holes — empty states, who can see what, what happens on failure — show up mid-build, where every change is a refactor. These seven came out of one ramble, before a single file was written.

  1. Structural
    Can your partner see analyses you upload once you're linked?
    PrivateShared when you tap ShareAlways shared
    Open — changes screens
  2. Structural
    Is the subscription per person or per couple?
    Open — changes data
  3. Structural
    Keep the analysis result, or delete it with the screenshot?
    Open — changes retention
  4. Structural
    How do people sign in — and get their subscription back on a new phone?
    Open — changes flows
  5. Normal
    Does an analysis flagged as risky still use a free try?
    Answered: it doesn't
  6. Normal
    If the risk check is wrong, can someone still see the advice?
    Answered: after a warning
  7. Later
    What does the subscription cost — monthly or yearly?
    Goes into the spec as open
4 structural questions left. Hand-off locked.Answer them, or defer them on purpose. Then the spec goes to your Claude Code session — never before.

Three moves, in this order.

  1. 1

    Ramble.

    Type half-formed thoughts in the browser canvas. Pause, and it's sent. No outline, no template.

  2. 2

    It draws and asks.

    Your Claude Code session draws screens, flows, branches, off-screen systems and data — then lists what you skipped, ranked by how much it changes the structure, with answer options.

  3. 3

    Decide, then hand off.

    Answer or deliberately defer the structural questions. The spec goes to the same session, which reads your codebase and proposes an implementation plan.

One ramble. 73 seconds.

“A couples' chat-counseling app: upload a chat screenshot, AI reads it and suggests what your partner means and what to reply. Three free tries, then a subscription. Couples can join together. Chats are sensitive — delete after analysis. If it shows violence, show help resources instead.”

The whole input. Nothing else was typed.
screens
7
systems: analysis AI, risk check, deletion job, payment
4
data entities
4
roles
2
conditional branches
4
critiques
3
open questions, 4 of them structural
7
“If a couple is linked, a help-resources result must never appear in the partner's history or notifications — the partner may be the abuser.”
“The screenshot contains the other person's messages going to an external AI — ask for consent and state it isn't used for training before upload.”
Two of the three critiques Claude left on the canvas, word for word.
Watch the run, uncut

What it can draw

Screens

22 element kinds, chat, map, picker and chart among them. Modals, sheets, toasts. Named states like “empty” or “awaiting approval”.

Off-screen systems

AI calls, background jobs, notifications, payments, external APIs.

Data

Entities with fields and relations, how long they're kept, and which ones are sensitive.

Who and when

Roles, conditional branches, and flows that group the screens.

Scope

What ships first and what waits. Later items stay out of the build.

Install

$ git clone https://github.com/Streamize-llc/doan ~/doan$ ln -s ~/doan/bin/doan ~/.local/bin/doan$ cd your-project && doan

The first run asks you to confirm a development channel. Say yes, and the canvas opens in your browser.

What you need

  • Claude Code with Channels (research preview). Doan starts it with a development-channel flag.
  • Bun.
  • Your own Claude Code subscription. No API keys, no account with us.
  • Everything runs locally. Plans stay in your repo, in .doan/.

Works with Claude Code. Doan is an independent open-source project.

Planning with a team?

Doan Team shares every linked project's plans with your team. Teammates view them in the browser and comment; the comments reach the planner's Claude on the next turn. Free for up to 3 members.

See Doan Team

The method behind the tool.

Plan-first vibe coding — a video course.

  • Which questions to answer first, and which to defer
  • Which critiques to take, and which to ignore
  • From the spec to a shipped app, one session per feature
[COURSE PRICE]Launches [LAUNCH DATE]
One email when it launches.

Questions

Is it free?

Yes. Doan is open source under the MIT license, and planning on your own stays free.

What about teams?

Doan Team is our hosted service for sharing plans: a web viewer, and comments that reach the planner's Claude. Free for up to 3 members; see Teams for the rest.

Does my code leave my machine?

Doan runs locally. Your Claude Code session talks to Anthropic the way it always does — nothing more.

Why the “dangerously” flag?

Custom channels aren't on the research-preview allowlist. The flag loads a local channel you run yourself.

Do I need an existing codebase?

No. Any folder works. With a codebase, Claude also points out what already exists.

What do I get at the end?

A markdown spec in .doan/specs, plus the plan file itself.