devdash

module
v0.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 1, 2026 License: MIT

README ยถ

Go Version License Stars Issues CI Coverage Lint

โŽˆ 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

Directories ยถ

Path Synopsis
cmd
dashboard command
Go Developer Dashboard - main entrypoint.
Go Developer Dashboard - main entrypoint.
internal
app
Package app implements the Bubble Tea application model.
Package app implements the Bubble Tea application model.
models
Package models provides project-level data structures.
Package models provides project-level data structures.
modules
Package modules โ€” git.go will run `git status --short`.
Package modules โ€” git.go will run `git status --short`.
services
Package services provides an abstraction over shell command execution.
Package services provides an abstraction over shell command execution.
state
Package state provides centralized state management for the dashboard.
Package state provides centralized state management for the dashboard.
ui
Package ui โ€” components.go provides reusable rendering helpers for panels.
Package ui โ€” components.go provides reusable rendering helpers for panels.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL