Code shouldn't be your first draft.
Ramble your app idea. Your Claude Code or Codex 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.
MIT licensedRuns on your machineUses your own Claude Code or Codex
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.
- S4StructuralCan your partner see analyses you upload once you're linked?
- X4StructuralIs the subscription per person or per couple?
- S2StructuralKeep the analysis result, or delete it with the screenshot?
- S1StructuralHow do people sign in — and get their subscription back on a new phone?
4 structural questions open. Hand-off locked.
Interactive. The screens and questions come from a real 73-second run — answer the four structural ones to unlock the hand-off.
The questions you skipped.
In vibe coding, code becomes your first draft. 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.
The hand-off stays locked while a structural question is open. Answer it, or defer it on purpose — then the spec goes to your Claude Code session.
- structuralOpen — changes screensCan your partner see analyses you upload once you're linked?PrivateShared when you tap ShareAlways shared
- structuralOpen — changes dataIs the subscription per person or per couple?
- structuralOpen — changes retentionKeep the analysis result, or delete it with the screenshot?
- structuralOpen — changes flowsHow do people sign in — and get their subscription back on a new phone?
- normalAnswered: it doesn'tDoes an analysis flagged as risky still use a free try?
- normalAnswered: after a warningIf the risk check is wrong, can someone still see the advice?
- laterGoes into the spec as openWhat does the subscription cost — monthly or yearly?
Three moves, in this order.
- 01
Ramble.
Type half-formed thoughts in the browser canvas. Pause, and it's sent. No outline, no template.
- 02
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.
- 03
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.
- 7
- screens
- 4
- systems: analysis AI, risk check, deletion job, payment
- 4
- data entities
- 2
- roles
- 4
- conditional branches
- 3
- critiques
- 7
- open questions, 4 of them structural
What Claude flagged
“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.”

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.
One line, then pick your agent.
$ curl -fsSL https://getdoan.com/install.sh | bash$ cd your-project && doanSay yes to the development-channel prompt on the first run.
$ cd your-project && doan codexCodex waits on the canvas and goes back to waiting after each change.
The canvas opens in your browser at localhost. Nothing is added to your Claude Code or Codex settings; run the installer again to update.
What you need
- Claude Code 2.1.80+ signed in with claude.ai (Channels, research preview), or the Codex CLI.
- Bun and git. The installer checks both.
- Your own Claude Code or Codex subscription. No API keys, no account with us.
- Everything runs locally. Plans stay in your repo, in .doan/.
Works with Claude Code and Codex. 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.
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 or Codex session talks to its provider 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.
Does it work with Codex?
Yes: run doan codex instead of doan. Doan can't push into a Codex session, so Codex waits on the canvas with a tool and goes back to waiting after each change. The canvas, the questions and the handoff are the same.
Do I need an existing codebase?
No. Any folder works. With a codebase, the agent also points out what already exists.
What do I get at the end?
A markdown spec in .doan/specs, plus the plan file itself.