tapflow
Self-hosted iOS & Android simulator streaming for the whole team
Write what you want next in plain words. Idea HQ plans it, an AI builds it in your own GitHub, and nothing changes until you approve it.
Developer toolsTypeScript · HTMLGitHub @vitoc82-seOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗One backlog for all your projects. Capture an idea, tag it to a project, and the AI estimates its effort/value and writes a ready-to-paste build prompt — grounded in that project's real architecture, not a generic guess.
Lifted from the Snapmeal ideas board and made multi-project: each Project carries
its own context (its ARCHITECTURE.md / stack / models / deploy flow), which is the
exact text handed to Claude when it estimates or plans an idea for that project.
Next.js 15 (App Router) · React 19 · Prisma 7 → Neon Postgres · NextAuth (credentials + optional Google) · Anthropic Claude · Tailwind · deployed on Vercel. AI changes run in the owner's own GitHub through a GitHub App and an Actions workflow.
Use Node 20 (.nvmrc; CI uses the same file, so nvm use matches it).
npm install.env.example to .env and fill in DATABASE_URL, NEXTAUTH_SECRET, ANTHROPIC_API_KEY, OWNER_EMAIL.npx prisma db push to create the schema in your Neon database.npm run dev, open http://localhost:3000, register (the first account becomes the owner).ARCHITECTURE.md).npm install
npm run dev:local
Open http://localhost:3100 and sign in as [email protected] with dev-password-local-only. This runs the whole app on an
in-memory Postgres (PGlite, src/lib/db-pglite.ts) filled with sample data (src/lib/dev-seed.ts): a project with an idea
in every stage of the journey (needs a plan, ready to build, the AI working, failed checks, ready to merge, shipped, a revert
waiting), an Epic, and another person's idea that must never show. No Neon, no GitHub, no AI key: the AI key is blanked, so
nothing can spend money (set IDEAHQ_ALLOW_AI=1 to allow it), and GitHub calls simply find nothing. Everything resets when
the server stops. It only exists when IDEAHQ_DB=pglite is set (scripts/local.mjs does that); a normal build never
contains it, and it refuses to start on Vercel.
npm test runs the unit and database tests (Vitest, with the real SQL on PGlite).npm run test:e2e builds the local version above and runs the smoke tests in a real browser (Playwright, e2e/): sign-in,
the Ideas list with each idea's stage and next step, the Needs you filter, every stage of the idea card, light and dark,
and a phone width. The first time, run npx playwright install chromium. npm run test:e2e:fast reuses the last build.
The same tests run in CI as the smoke job. When the sample data changes, change the expectations in e2e/ with it.Set the same env vars in Vercel, then git push origin main. The build runs
prisma db push (additive schema changes only). The build (scripts/build.mjs) runs it only on a production deploy, without --accept-data-loss: a change that would drop data fails the build and the live site stays as it was. To drop something on purpose, set ALLOW_DATA_LOSS=1 for that one deploy and remove it afterwards. Preview and local builds never change the schema.
src/app/(app)/ideas — the board (list + kanban), detail page, shared helperssrc/app/(app)/projects — project admin (the per-project context lives here)src/app/api/ideas/[id]/estimate — AI effort/value/tags/scopesrc/app/api/ideas/[id]/plan — AI build prompt for a coding agentsrc/lib/project-context.ts — turns a project's context into the AI grounding blockThe Implement button on an idea runs Claude Code in the project's own GitHub repo (in that repo's GitHub Actions, with that repo's ANTHROPIC_API_KEY secret), then opens a pull request. Idea HQ only dispatches the run and listens to GitHub webhooks. See the eng review in ~/.gstack/projects/vitoc82-se-Idea-hq/ for the design.
GitHub, Settings, Developer settings, GitHub Apps, New GitHub App:
https://ideahq.cloud/api/github/webhookGITHUB_WEBHOOK_SECRET)https://ideahq.cloud/api/github/callback, and tick Request user authorization (OAuth) during installationsrc/lib/github/client.ts, 2026-10-21); do not add Administration, Issues or Members.Then generate a private key and a client secret, and set these in Vercel:
| Variable | Value |
|---|---|
GITHUB_APP_ID | numeric App ID |
GITHUB_APP_SLUG | the app's URL slug (also used as allowed_bots in the workflow) |
GITHUB_APP_PRIVATE_KEY | the PEM, with newlines as \n |
GITHUB_APP_CLIENT_ID / GITHUB_APP_CLIENT_SECRET | from the app page (install-ownership check) |
GITHUB_WEBHOOK_SECRET | same string as in the app |
AI_DAILY_LIMIT | optional, per-user daily estimate/plan/breakdown calls (default 20) |
This is the beginning of the README. Read the rest at the original. Read the full README ↗