โ devdash
A K9s-inspired terminal dashboard for Go developers
Run tests, check coverage, lint, benchmark, inspect dependencies, and monitor git status โ all from one beautiful TUI.
Features โข
Quick Start โข
Shortcuts โข
Architecture โข
Contributing โข
License
โจ Features
| Feature |
Key |
Description |
| ๐งช Test Runner |
t |
Run go test ./... with pass/fail, package count & duration |
| ๐ Coverage |
c |
Run go test -cover with color-coded percentage (๐ข โฅ80% ๐ก โฅ60% ๐ด <60%) |
| ๐ Linter |
l |
Run golangci-lint and display issue count with inline preview |
| โก Benchmarks |
b |
Run go test -bench with table of iterations & ns/op |
| ๐ฆ Binary Size |
s |
Build and measure compiled binary size |
| ๐ฟ Git Status |
g |
Show modified/added/deleted/untracked files with colored indicators |
| ๐ Dependencies |
d |
List all module dependencies via go list -m all |
| ๐ฅ CPU Profile Flamegraph |
p |
Run go test -cpuprofile and render an inline Unicode flamegraph |
| ๐ Markdown Report |
m |
Generate a complete dashboard report in elegant Markdown with emojis |
| ๐ Detail Views |
Shift+Key |
Full-screen output for tests, lint, benchmarks, git, deps & flamegraph |
๐จ Design Philosophy
Inspired by K9s โ the legendary Kubernetes TUI โ devdash brings the same sleek, dark-themed, keyboard-driven experience to your Go development workflow:
- ๐ค Dark theme with cyan/teal accents
- ๐ Breadcrumb navigation between views
- ๐ Stat tiles with colored status dots (โ/โ/โ)
- ๐ Table layouts with alternating row highlights
- โจ๏ธ Command bar with discoverable key hints
- โก Async execution โ UI never blocks while commands run
๐ Quick Start
Prerequisites
- Go 1.21 or later
- golangci-lint (optional, for lint panel) โ install guide
- Git (for git status panel)
Install from source
go install github.com/chmenegatti/devdash/cmd/dashboard@latest
Post-install (PATH setup)
If dashboard is not found after installation, add your Go bin directory to PATH.
# Quick check
command -v dashboard
# Show install dirs
go env GOBIN GOPATH
Option A โ asdf Go (recommended when using asdf):
echo 'export PATH="$(go env GOBIN):$PATH"' >> ~/.zshrc
source ~/.zshrc
asdf reshim golang
Option B โ custom GOBIN:
echo 'export PATH="$(go env GOBIN):$PATH"' >> ~/.zshrc
source ~/.zshrc
Option C โ default Go ($GOPATH/bin):
echo 'export PATH="$(go env GOPATH)/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
Temporary (current shell only):
export PATH="$(go env GOBIN):$PATH"
Or clone and build
git clone https://github.com/chmenegatti/devdash.git
cd devdash
go build -o devdash ./cmd/dashboard
./devdash
Run directly
# Navigate to any Go project, then:
devdash
๐ก Tip: devdash auto-detects the project from your current working directory.
โจ๏ธ Keyboard Shortcuts
Dashboard View
| Key |
Action |
t |
Run tests |
c |
Run coverage |
l |
Run linter |
b |
Run benchmarks |
s |
Measure binary size |
g |
Check git status |
d |
List dependencies |
p |
Run CPU profiling + inline flamegraph |
m |
Generate Markdown report |
r |
Reset all panels |
q |
Quit |
Detail Views
| Key |
Action |
T |
Full test output |
L |
Full lint output |
B |
Full benchmark table |
G |
Full git status |
D |
Full dependency list |
P |
Full CPU flamegraph |
Backspace |
Back to dashboard |
๐ Architecture
devdash/
โโโ .github/
โ โโโ workflows/
โ โโโ ci.yml # โ
Build/test/lint checks
โ โโโ release.yml # ๐ Tagged release artifacts
โโโ cmd/
โ โโโ dashboard/ # ๐ Application entrypoint
โ โโโ main.go
โโโ internal/
โ โโโ app/ # ๐ฎ Bubble Tea model (Update/View/Cmd)
โ โ โโโ app.go # Central model, key dispatch, async wiring
โ โ โโโ layout.go # Layout helpers
โ โโโ models/ # ๐ Project detection
โ โ โโโ project.go
โ โโโ modules/ # โ๏ธ Feature modules (one per panel)
โ โ โโโ tests.go # go test runner & parser
โ โ โโโ coverage.go # go test -cover parser
โ โ โโโ lint.go # golangci-lint runner & parser
โ โ โโโ benchmarks.go # go test -bench parser
โ โ โโโ binary.go # Binary size measurement
โ โ โโโ deps.go # go list -m all parser
โ โ โโโ profile.go # CPU profiling + inline flamegraph builder
โ โ โโโ report.go # Markdown report generation
โ โ โโโ gitstatus.go # git status --short parser
โ โโโ services/ # ๐ง Shell command abstraction
โ โ โโโ exec.go # RunCommand wrapper
โ โ โโโ parser.go # Line parsing utilities
โ โโโ logs/ # ๐ชต Structured file logging
โ โ โโโ logs.go # Logger and file configuration
โ โโโ state/ # ๐พ Centralized state management
โ โ โโโ state.go # Dashboard struct + result types
โ โโโ ui/ # ๐จ K9s-inspired rendering
โ โโโ styles.go # Color palette & Lipgloss styles
โ โโโ components.go # Logo, crumbs, tables, command bar
โ โโโ dashboard.go # Main dashboard composition
โ โโโ detail_views.go # Full-screen detail renderers (+ scrollable output)
โโโ go.mod
โโโ go.sum
โโโ LICENSE
โโโ README.md
โโโ CONTRIBUTING.md
โโโ CHANGELOG.md
โโโ CODE_OF_CONDUCT.md
Design Patterns
- Bubble Tea (Elm Architecture) โ Model โ Update โ View with pure rendering
- Async Commands โ All shell operations run via
tea.Cmd goroutines, never blocking the UI
- Layered Design โ
app โ ui โ modules โ services โ state
- Pure Parsers โ Each module's parser takes a
CommandResult and returns typed state โ easy to unit test
Tech Stack
| Library |
Purpose |
| Bubble Tea |
Terminal UI framework (Elm-style) |
| Lip Gloss |
Styling, layout & colors |
| Bubbles |
Viewport for scrollable detail outputs |
| Google pprof |
CPU profile parsing for inline flamegraph rendering |
๐งช Testing
# Run all tests
go test ./... -v
# Run with coverage
go test ./... -cover
# Run specific module tests
go test ./internal/modules/ -v -run TestParse
# Short mode (skip integration tests)
go test ./... -short
Currently 23 unit tests covering all module parsers plus integration tests for binary size measurement.
๐ชต Logs & Troubleshooting
When command/module errors happen, devdash writes diagnostic entries to a local file named .devdash.log in the analyzed project directory.
# Follow logs in real time
tail -f .devdash.log
# View latest entries
tail -n 100 .devdash.log
Log entries include timestamp, level, failed command, execution duration, and truncated stdout/stderr snippets to speed up debugging.
๐บ๏ธ Roadmap
We welcome contributions for any of these planned features! See CONTRIBUTING.md.
- ๐ Auto-refresh โ Periodic re-run with configurable interval
- ๐ Markdown report export โ Generate a complete dashboard report via keyboard shortcut
- ๐ Scrollable panels โ Scroll through long outputs in detail views
- ๐๏ธ Config file โ
.devdash.yaml for custom panel layout, colors, and shortcuts
- ๐ Flame graphs โ pprof integration with inline Unicode visualization
- ๐ณ Docker support โ Build & run inside containers
- ๐ Plugin system โ Custom panels via Go plugins or external scripts
- ๐ Remote mode โ Monitor CI/CD pipelines via SSH or API
- ๐ Clipboard โ Copy panel output to clipboard
- ๐ฏ Focused test run โ Run a single test function by name
- ๐ History โ Track test/coverage trends over time
- ๐ Notifications โ Desktop alerts on test failure
- ๐ฅ๏ธ Resizable panes โ Drag-to-resize panel layout
๐ค Contributing
We love contributions! Whether it's a bug fix, new feature, documentation improvement, or just a typo โ every PR matters.
Please read our Contributing Guide and Code of Conduct before getting started.
# Fork & clone
git clone https://github.com/<your-user>/devdash.git
cd devdash
# Create a branch
git checkout -b feature/amazing-feature
# Make changes, then test
go test ./... -v
go vet ./...
# Commit & push
git add -A
git commit -m "feat: add amazing feature"
git push origin feature/amazing-feature
Then open a Pull Request ๐
๐ License
This project is licensed under the MIT License โ see the LICENSE file for details.
๐ Acknowledgments
- Charm โ For the incredible Bubble Tea & Lip Gloss libraries
- K9s โ For the design inspiration
- golangci-lint โ For the Go linting ecosystem
- All our contributors โค๏ธ
โญ If you find devdash useful, give it a star!
Made with โค๏ธ and Go