Minimal, delta-first dashboard for local Git repository state.
Git Delta Dashboard is a lightweight web app that visualizes meaningful repository deltas without exposing terminal output directly in the UI.
The interface is designed for quick scanning:
- Only non-zero change groups are shown (except staged/unstaged, which are always visible)
- A single group can be expanded at a time
- Expanded groups auto-collapse when their count resolves to zero
- Live Git state API (
/api/state) usingisomorphic-git - Vite + React + TypeScript frontend
- Delta counters for:
stagedunstageduntrackedahead/commitsbehind
- Expandable detail panes:
- file lists for staged/unstaged/untracked
- commit lists for ahead/behind with per-commit file mapping
- interactive commit tags for
push,uncommit, andunpush(latest-commit safeguards)
- Commits feed push-state indicators:
READY FOR PUSHfor local unpushed commitsPUSHEDfor commits already on remoteLAST PUSH ...relative-time status in sort row
- In-app branch controls:
- switch branch
- create and switch branch
- delete branch (with safeguards)
- pull latest from current branch
- Multi-repo controls:
- select local repo from custom dropdown
- clone repo from URL (
GIT CLONE) into local repo root
- In-app Git actions:
- stage all
- unstage all
- stage/unstage single file
- commit
- push
- Ignore-aware untracked counting (
git.isIgnored) - Dark mode toggle with persisted preference (
localStorage)
- Node.js
- Express (API backend)
- isomorphic-git
- React + TypeScript
- Vite
- Tailwind CSS (via Vite CSS import)
server.ts- Express API server and Git state servicesrc/App.tsx- Dashboard UIsrc/main.tsx- React entrypointsrc/styles.css- Tailwind import + dark variantsrc/types.ts- UI data typesvite.config.ts- Vite config + API proxytsconfig.json- TypeScript config
- Node.js 18+
- npm
npm installnpm run devThis runs:
- Express API on
http://localhost:4173 - Vite frontend on
http://localhost:5173(with/apiproxied to Express)
npm run build
npm run startnpm run buildoutputs frontend assets todist/npm run startserves API + built frontend via Express
npm run dev- run API + Vite in parallelnpm run dev:api- run Express API server onlynpm run dev:web- run Vite frontend onlynpm run build- Vite production buildnpm run preview- preview built Vite appnpm run start- run Express server (servesdistif present)
Returns repository state with counters and details.
Returns a frontend asset version token used for auto-reload checks.
Returns branch list and current branch for branch switching UI.
Deletes a branch by name.
Safeguards:
- cannot delete current branch
- cannot delete
main
Switches to an existing branch or creates + switches when requested.
Pulls latest changes for the current branch.
Undoes the latest local unpushed commit and restores its changes to staged state.
Rewrites latest pushed commit off remote using --force-with-lease and restores its changes to staged state.
Clones a repository from URL into the local repo discovery root and returns cloned path/repo list.
Stages all tracked/untracked changes (git add -A semantics).
Unstages tracked staged changes.
Stages or unstages an individual file.
Creates a commit from staged changes (message required).
Pushes local commits to remote.
If branch has no upstream, server retries with:
git push --set-upstream origin <current-branch>.
- If
dist/is missing and you runnpm run start, frontend routes return a build-not-found error. - In development, use
http://localhost:5173for the UI. - During branch switching, brief backend restarts can occur in watch mode; UI includes transient suppression and branch-switch loading feedback.