{"id":49076432,"url":"https://github.com/joshuatownsend/project-minder","last_synced_at":"2026-04-20T10:05:59.176Z","repository":{"id":351827119,"uuid":"1175661170","full_name":"joshuatownsend/project-minder","owner":"joshuatownsend","description":"A local-only dev dashboard that auto-scans your projects and surfaces the context you need — git status, Claude Code sessions, TODOs, costs, and more — without leaving your browser.","archived":false,"fork":false,"pushed_at":"2026-04-16T16:55:33.000Z","size":2072,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-16T18:08:28.480Z","etag":null,"topics":["claude-code","todo","token-usage","vibe-coding"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joshuatownsend.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"joshuatownsend","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"joshuatownsend","thanks_dev":null,"custom":null}},"created_at":"2026-03-08T02:01:05.000Z","updated_at":"2026-04-16T16:53:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/joshuatownsend/project-minder","commit_stats":null,"previous_names":["joshuatownsend/project-minder"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/joshuatownsend/project-minder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuatownsend%2Fproject-minder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuatownsend%2Fproject-minder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuatownsend%2Fproject-minder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuatownsend%2Fproject-minder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joshuatownsend","download_url":"https://codeload.github.com/joshuatownsend/project-minder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuatownsend%2Fproject-minder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32042319,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","todo","token-usage","vibe-coding"],"created_at":"2026-04-20T10:05:54.924Z","updated_at":"2026-04-20T10:05:59.168Z","avatar_url":"https://github.com/joshuatownsend.png","language":"TypeScript","funding_links":["https://github.com/sponsors/joshuatownsend","https://buymeacoffee.com/joshuatownsend"],"categories":[],"sub_categories":[],"readme":"# Project Minder\n\n\u003e A local-only dev dashboard that auto-scans your projects and surfaces the context you need — git status, Claude Code sessions, TODOs, costs, and more — without leaving your browser.\n\n![Node](https://img.shields.io/badge/node-%3E%3D20.19-brightgreen)\n![License](https://img.shields.io/badge/license-MIT-blue)\n![Stack](https://img.shields.io/badge/stack-Next.js%2016%20%2B%20TypeScript-black)\n\n---\n\n![Dashboard](docs/images/dashboard.png)\n\n---\nCheck out [https://joshuatownsend.github.io/project-minder/](https://joshuatownsend.github.io/project-minder/) for more info and interface screenshots!\n---\n## Features\n\n### Dashboard \u0026 Scanning\n- Auto-scans one or more directories (e.g. `~/dev/*`) and renders every project as a card\n- Background git dirty-status checks — amber `+N` indicators appear as results arrive\n- Search, filter by status, and sort across all projects\n- Per-project status labels (active, paused, archived), hide/unhide, and port overrides\n- 5-minute in-memory scan cache; force-rescan anytime from the UI\n\n### Claude Code Integration\n- **Sessions browser** — browse every Claude Code session with search, duration, token counts, and active-session indicators\n- **Session detail** — full timeline, tool usage, file operations, and subagent tracking per session\n- **Session recaps** — surfaces `/recap` summaries as the primary session label with an amber badge\n- **Insights extraction** — scrapes `★ Insight` blocks from conversation history into per-project `INSIGHTS.md` files; cross-project browser with full-text search\n- **Token cost analytics** — `/usage` page with time-period filters, per-model/project/category breakdowns, daily cost trend chart, and CSV/JSON export\n\n### Project Management\n- **TODO tracking** — reads each project's `TODO.md`; add items inline or via a cross-project Quick Add modal (Shift+T)\n- **Manual Steps tracker** — surfaces `MANUAL_STEPS.md` entries across all projects; interactive checkboxes toggle steps on disk; file watcher fires toast + OS notifications when Claude adds new steps mid-session\n- **Worktree overlay** — TODOs, Manual Steps, and Insights from active Claude Code worktrees appear in collapsible sections on detail pages; card badges aggregate main + worktree counts\n\n### Observability \u0026 Stats\n- **Stats dashboard** — portfolio-wide overview: tech stack distribution, project health, Claude Code usage (tokens, tools, models)\n- **Usage dashboard** — 13-category activity classification, one-shot success rate detection, shell command and MCP server frequency breakdowns\n- **Dev server control** — start, stop, and restart managed dev servers from the UI; view live stdout/stderr output\n\n### Setup Tools\n- **Setup guide** — `/setup` page with copy-paste CLAUDE.md instruction blocks and optional Claude Code `PreToolUse` hooks\n- **Auto-apply** — apply setup steps directly to any managed project from the UI; idempotent (existing blocks are skipped, files backed up to `.minder-bak`)\n\n---\n\n## Quick Start\n\n**Prerequisites:** Node.js ≥ 20.19 — runs on macOS, Linux, and Windows\n\n```bash\ngit clone https://github.com/joshuatownsend/project-minder.git\ncd project-minder\nnpm install\n```\n\nConfigure your scan root(s) in `.minder.json` in the Project Minder repo root — the same directory where you run `npm run dev` (create it if it doesn't exist):\n\n```json\n{\n  \"devRoots\": [\"/home/you/dev\"]\n}\n```\n\nOn Windows use `C:\\\\dev` (or whatever your dev root is).\n\nThen start the dev server:\n\n```bash\nnpm run dev\n# Open http://localhost:4100\n```\n\n---\n\n## Configuration\n\nAll settings live in `.minder.json` at the repo root. The in-app **Config page** (`/config`) provides a full UI for most of these.\n\n| Key | Type | Description |\n|-----|------|-------------|\n| `devRoots` | `string[]` | Directories to scan. First entry is the primary root. |\n| `devRoot` | `string` | Legacy single-root fallback. Kept in sync automatically. |\n| `statuses` | `Record\u003cstring, \"active\" \\| \"paused\" \\| \"archived\"\u003e` | Per-project status labels. |\n| `hidden` | `string[]` | Project slugs hidden from the dashboard. |\n| `portOverrides` | `Record\u003cstring, number\u003e` | Override the detected dev port for a project. |\n\n---\n\n## How It Works\n\nProject Minder is a Next.js app that runs entirely on your local machine — no database, no cloud sync. On each dashboard load it scans your configured directories in parallel batches, running 9 scanner modules per project (package.json, git, Claude sessions, TODOs, manual steps, insights, and more). Results are cached in memory for 5 minutes. A background worker checks git dirty status in rolling batches of 3 repos, and the dashboard polls for results as they arrive.\n\nThe process manager spawns dev servers as child processes using project-local binaries and stores the last 200 lines of output per process. On Windows it uses `taskkill /F /T` for clean process-tree teardown; on macOS/Linux it sends `SIGTERM` to the process group.\n\n---\n\n## Inspired By\n\n- [CodeBurn](https://github.com/AgentSeal/codeburn) — token cost analytics design\n- [Sniffly](https://github.com/chiphuyen/sniffly) — stats dashboard concept\n- [claude-code-karma](https://github.com/JayantDevkar/claude-code-karma) — sessions browser concept\n- [raphi011's insights gist](https://gist.github.com/raphi011/dc96edf80b0db8584527fefc6a3b4bd0) — insights extraction concept\n\n---\n\n## License\n\nMIT © Josh Townsend\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshuatownsend%2Fproject-minder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoshuatownsend%2Fproject-minder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshuatownsend%2Fproject-minder/lists"}