repoview
v0.6.0
Published
GitHub-like repo browsing for local Git repositories (Markdown, live reload, broken link scanner).
Maintainers
Readme
repoview
GitHub-like repo browsing — without GitHub.
When platforms change pricing/terms (even for “bring-your-own-runner” CI), it’s a reminder that Git hosting can turn into a dependency and a risk. repoview keeps the day-to-day “GitHub UI” experience local: browse, read docs, and share a repo without pushing it anywhere.
Not affiliated with GitHub.
Features
- GitHub-like browsing for local repos (tree / file / raw views)
- GitHub-style Markdown rendering (README-friendly; close-to-GitHub)
- Diff view — browse uncommitted changes against HEAD, branches, or tags (
/diff) - Live reload when files change (SSE with polling fallback)
- Broken internal link discovery for docs (
/broken-links) - Respects
.gitignoreby default (toggleable) - Shared sessions (like tmux): run
repoviewin several repos on the same port and browse them all from one server, switching between them in the UI
Quick start (from source)
npm install
npm start -- --repo /path/to/your/repo --port 7376Then open http://localhost:7376.
Quick start (npx)
From anywhere:
npx repoview --repo /path/to/your/repo --port 7376By default, repoview binds to 0.0.0.0 (LAN-accessible). For localhost-only:
npx repoview --repo /path/to/your/repo --host 127.0.0.1 --port 7376Shared sessions (multi-repo)
The first repoview on a port starts a server; later runs on the same port
join it instead of failing — they register their repo and exit immediately
(no need to remember a port per repo):
cd ~/work/api && repoview # starts the session on :7376
cd ~/work/web && repoview # joins :7376, registers, exits
cd ~/work/docs && repoview # joins :7376, registers, exitsEach repo is served at /r/<id>/…; switch between them from the dropdown in the
top bar, or open Manage repos… (the /session page) to add/remove repos
from the browser. Manage the session from the CLI too:
repoview ls # list repos in the session
repoview rm <id|path> # unregister a repo
repoview stop # shut the session downUse --port to run independent sessions side by side.
Note: by default the session binds
0.0.0.0, so every repo you add is browsable by anyone on the network (you'll see a warning at startup). Session control endpoints (register / remove / stop) are restricted to localhost, and the/sessionpage is read-only for remote viewers. Use--host 127.0.0.1to keep a session fully local.
Why
- Keep GitHub as a remote, not your developer portal.
- Share private repos/docs on a LAN without pushing or mirroring.
- Work offline / in restricted networks with the same browsing UX.
Usage
npm start -- [--repo /path/to/repo] [--host 0.0.0.0] [--port 7376] [--no-watch]Common flags:
--repo: repo root--host,--port: bind address/port--no-watch: disable live reload + auto re-scan
Share on LAN (optional)
Bind to all interfaces, then open the host URL from another device:
npm start -- --repo /path/to/repo --host 0.0.0.0 --port 8890Diff view
Navigate to /diff (or click the "Diff" link in the top bar) to see uncommitted changes. Use the dropdown to compare against HEAD, a branch, or a tag. File sections are collapsible — click a file header to collapse/expand.
UI toggles
?ignored=1shows files ignored by the repo's.gitignore(default: hidden)?watch=0disables browser auto-refresh for that tab?base=<ref>selects the diff comparison base (default:HEAD)
Development
- Implementation details:
DEVELOPMENT.md - CLI usage:
npm start -- --help
Troubleshooting
- Seeing
ENOENT .../node_modules/...in server logs: upgrade torepoview@>=0.1.2(older versions incorrectly looked for vendor assets inside the repo you’re serving).
Contributing
- Contributing guide:
CONTRIBUTING.md
License
MIT — see LICENSE.
