Project Minder

A local-only dev dashboard that auto-scans your projects and surfaces the context you need — without leaving your browser.

Node ≥20.19 MIT Next.js 16 + TypeScript
Project Minder dashboard showing projects with git status, sessions, and todo counts

Dashboard & Scanning

Auto-scans one or more dev directories in parallel and renders every project as a card — git branch, dirty-file count, tech stack, and status at a glance. Background git checks populate amber +N indicators as results arrive. Search, filter by status, and sort across all projects in seconds. Hide noisy projects via the three-dot menu and restore them from the dashboard footer. Multiple scan roots let you monitor projects across different drives or locations from a single dashboard.

Project card detail showing git dirty indicator and badges Project detail overview with dev server control
Dashboard view

Claude Code Integration

Dashboard cards show a live green "coding" or amber "waiting on you" badge when a Claude session is active — inferred from the JSONL tail and refreshed automatically every 15 seconds. The Sessions browser supports full-text content search across message bodies (not just prompts), auto-refreshes without a manual reload, and highlights matched snippets inline. Session recaps — written by Claude Code's /recap command — surface as the primary session label with an amber badge, with full recap history on the detail page. Session timelines render fenced code blocks and inline code spans. Insights extraction scrapes ★ Insight blocks from conversation history into searchable per-project files. The Usage dashboard breaks down token spend by model, project, and 13 activity categories — worktree sessions are merged into their parent project — with CSV/JSON export.

Session detail with timeline and tool usage Cross-project insights browser Token usage analytics dashboard
Sessions browser

Live Session Monitoring & Memory

The System Status page gives you a real-time cross-project view of every active Claude Code session — bucketed into Needs Approval, Working, Waiting for You, and Other/Stale. Status is inferred from the JSONL tail every 3 seconds using a cross-poll mtime heuristic: stalled write-type tools signal a pending permission prompt; a clean end_turn means Claude is waiting for your reply. Worktree sessions appear labeled by branch. The nav badge counts how many sessions need your attention right now.

The Memory tab on each project detail page surfaces Claude Code's auto-memory files — MEMORY.md rendered as a structured overview, with individual memory files listed by type (user, feedback, project, reference) and full on-demand content rendering.

Memory tab showing MEMORY.md overview with project context and architecture decisions
System Status page showing live sessions bucketed by state

Project Management

TODO tracking reads each project's TODO.md — click any item to check it off directly in the UI, add new ones inline, or use the cross-project Quick Add modal (Shift+T) to append ideas to multiple projects at once. The Manual Steps tracker surfaces MANUAL_STEPS.md entries across all projects with interactive checkboxes that toggle on disk. A file watcher fires toast and OS notifications when Claude adds new steps mid-session. Worktree overlay surfaces TODOs, Manual Steps, and Insights from active Claude Code worktrees in collapsible sections on project detail pages.

Worktree overlay showing active branch items
Manual steps dashboard

Observability & Setup

The Stats dashboard gives a portfolio-wide overview: tech stack distribution, project health, and Claude Code usage across all sessions. Dev server control lets you start, stop, and restart managed servers from the UI with live stdout/stderr output. The Setup guide provides copy-paste CLAUDE.md instruction blocks and Claude Code hooks — apply them to any managed project with one click.

Setup guide page Config page with multiple scan roots
Stats dashboard

Quick Start

git clone https://github.com/joshuatownsend/project-minder.git
cd project-minder
npm install
# create .minder.json in the repo root:
# { "devRoots": ["~/dev"] }  (Windows: "C:\\dev")
npm run dev   # open http://localhost:4100

Prerequisites: Node.js ≥ 20.19  ·  macOS, Linux, or Windows

Inspired By