Skip to content

About

because I hate google sheet

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

backlog-generator

Next.js dashboard built on top of a GitHub Projects (v2) board — turns your issues and PRs into a Product Backlog, sprint views with real burndown charts, and a filterable Pull Requests list. Because I hate Google Sheets.

Everything lives at / as a tabbed single page (components/AppShell.jsx):

  • Product Backlog — every recognized user story grouped by EPIC (EPIC ID/Name, User Story ID, User Story, Acceptance Criteria, Estimate).
  • Sprint 1 / Sprint 2 / Sprint 3 — each sprint bundles three GitHub "Iteration" values (Sprint 1 = Iterations 1-3, Sprint 2 = 4-6, Sprint 3 = 7-9 — see SPRINT_GROUPS in lib/backlog.js). The backlog table here swaps Acceptance Criteria/Estimate for a per-task breakdown: Task, Status (Completed/Not completed), Assignee, Estimate — one row per GitHub sub-issue.
  • Each of the above also has a Burndown Chart tab — computed from every sub-issue's real createdAt/closedAt timestamps (no mock data). Click any day on the chart to see exactly which tasks were done/not done as of that date, with a "NEW" badge on tasks created that exact day.
  • Pull Requests — every PR (#60 and up) in the repo with clickable assignee/reviewer avatars, related issue links, and a status badge (Open/Merged/Closed, GitHub's actual merge purple). Filterable by assignee, reviewer, sprint, and status. PR sprint is derived from when it was opened (PR_SPRINT_DATE_RANGES in lib/backlog.js), since PRs rarely carry the project's Iteration field themselves.

Epic names aren't a GitHub concept, so each one is editable inline and saved to the browser's localStorage (defaults come from DEFAULT_EPIC_NAMES in lib/backlog.js).

Setup

npm install
cp .env.example .env

Edit .env:

  • GITHUB_TOKEN — a GitHub Personal Access Token. read:project scope covers the backlog views; the Pull Requests view also reads repo data, so a token/gh auth with repo (or fine-grained PR read) access works best.
  • GITHUB_LOGIN — the org or user that owns the project
  • GITHUB_LOGIN_TYPE — organization or user
  • GITHUB_PROJECT_NUMBER — the project's number (from its URL, e.g. .../projects/3 → 3)

Run

npm run dev   # development
npm run build && npm start   # production

Open http://localhost:4100.

Notes

  • A story is recognized from an issue title containing US<epic>-<n> (e.g. [US1-1]) — the number before the dash is the EPIC id. Issues without that pattern are skipped from the backlog views.
  • Each story's body is expected to use ## User Story (As a ... I want ... so that ...) and ## Acceptance Criteria (bullet list, one Given ... when ... then ... line per criterion) markdown headings. Parsing lives in lib/backlog.js.
  • Per-task Estimate is picked up automatically if the GitHub Project has a custom field named Estimate on the sub-issue itself; otherwise it shows —.
  • Export the current table as plain CSV, copy it to the clipboard, or export a styled .xlsx (merged cells, bold Given/When/Then, colored status) via lib/xlsx.js.

About

because I hate google sheet

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages