YES

Replaceable in one session with an AI coding agent.

Project management layered on GitHub issues: boards, epics, estimates and reports that read the repository rather than duplicating it.

Promptfree, for everyone, and the only version there is
Build me the planning layer over GitHub that replaces ZenHub.

The idea is exactly right and worth copying precisely: **the issues stay in GitHub and nothing is duplicated.** A tool that copies issues into its own database creates two truths, and developers update neither.

STACK
- Node 20+ with Fastify, server-rendered HTML with a little vanilla JS
- SQLite through better-sqlite3, WAL mode — for the layer's own data and a read cache only
- GitHub API with webhooks
- Caddy in front

WHAT LIVES WHERE
- **GitHub owns**: the issue, its title, body, comments, labels, assignees and state. Never write a copy you treat as authoritative
- **Your layer owns**: sprint membership, estimate, epic relationships, board column when it is not a label, and the history of all of those
- A local cache of issues for fast rendering, refreshed by webhook and reconciled by a periodic full sync

THE DATA MODEL
- issues_cache: repo, number, title, state, labels_json, assignees_json, updated_at, etag
- estimates: repo, number, points, set_by, at — append-only, so changing an estimate mid-sprint is visible
- sprints: id, name, starts_on, ends_on, goal
- sprint_items: sprint_id, repo, number, added_at, removed_at — **append-only, and this is what makes scope change measurable**
- epics: id, title, description; epic_items linking issues
- column_state: repo, number, column, at

SYNCING WITHOUT LOSING THINGS
- Webhooks for issues, comments, labels and pull requests
- **A reconciliation job that lists everything changed since the last cursor**, because webhooks are lost and delivery is not guaranteed. Without it your board is quietly wrong
- Respect rate limits: conditional requests with ETags, and back off on the secondary limit rather than retrying into it

THE BOARD
- Columns from labels or from your own column state — pick one and be consistent. **Two sources for a card's position is the bug that makes a board untrustworthy**
- Drag moves the card and writes the change to GitHub where GitHub owns it
- Pull request links shown on the card, because 'is it in review' is the question the board is asked most

REPORTS THAT ARE ACTUALLY TRUE
- Burn-up with scope on it, from the sprint_items history. **Scope added mid-sprint is the single most useful fact a sprint report contains and burn-down hides it**
- Velocity over the last several sprints as a range, never a single number
- Cycle time from first commit to merge, which is measurable from the repository and means more than any estimate
- Issues open with no activity for a fortnight

WHAT MATTERS MOST
GitHub stays authoritative, and sprint membership is append-only. The first is why developers use it; the second is why the reports are honest.

What you lose

  • Boards that stay in step with issues automatically
  • Sprint reports built from real repository activity
  • Epics and dependencies across repositories
  • No second system for developers to update

If you would rather not build

  • GitHub Projects, which is free and does most of this now
  • Labels and a saved search, which is the zero-build version

The escape hatch

open source · no votes, no paid placement

Plane

$0

Open-source project tracking with cycles and modules.

makeplane/planefree · open source

Vikunja

$0

Self-hosted task management with boards and Gantt.

go-vikunja/vikunjafree · open source

Why this verdict

our own opinion · changed only by a person

82/100

Verdict yes at 82: the architectural idea is the value and it is simple to copy. The reconciliation job matters — webhooks alone silently drift.

History

tracked since 14 Aug 2026 · nothing is ever overwritten

Interest · last 30 days

Nothing recorded yet. This chart fills in once the page has visitors, votes or prompt copies — it will not draw a flat line to look busy.

Questions about ZenHub

answered from the record above

Is ZenHub free?

No — the plan we track is $8.33 a month. Growth at $8.33 per user per month billed annually.

Can you replace ZenHub by building your own?

YES. Replaceable in one session with an AI coding agent. Replacement score 82 out of 100, build time one session. Read what you lose before you decide.

How much does ZenHub cost?

$8.33 a month on Growth — $99.96 a year. Recorded 14 Aug 2026.

What do you lose by replacing ZenHub?

Boards that stay in step with issues automatically; Sprint reports built from real repository activity; Epics and dependencies across repositories; No second system for developers to update. If any of those carry weight for you, keep paying.

Is there an open-source alternative to ZenHub?

Yes: Plane, Vikunja. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 31 in Tasks & project management

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc