β οΈ Experimental Work - Not Recommended for UseThis library is experimental work and is not recommended for production use. It is not in active development and may contain bugs, incomplete features, or breaking changes. Use at your own risk.
A modern terminal user interface for Go development that provides an integrated development environment in your terminal. Run tests, benchmarks, formatting, linting, and building with live output and intuitive navigation.
- Real-time Testing: Live
go test -jsonoutput with hierarchical test tree view - Performance Analysis: Sortable benchmark results with performance comparisons
- Code Formatting: Interactive
gofmtdiff preview with selective application - Static Analysis:
go vetandstaticcheckintegration with file navigation - Build Monitoring: Live compilation output with error grouping
- Tabbed Interface: Clean tabbed navigation between different development tasks
- Keyboard-Driven: Full keyboard navigation with mnemonic shortcuts
- Editor Integration: Seamless integration with your preferred editor (
$EDITOR) - Live Updates: Real-time command output with ANSI color support
- Responsive Design: Adapts to terminal size changes
- Hot Reloading: Development mode with automatic rebuilds
- Comprehensive Testing: 90%+ test coverage with integration tests
- Structured Logging: Configurable logging with development/production modes
- Error Handling: Robust error handling with detailed context
- Clean Architecture: Modular design following Go best practices
# Clone the repository
git clone https://github.com/damirmukimov/gotui.git
cd gotui
# Build and install
make install# Prerequisites: Go 1.25+
go version
# Clone and build
git clone https://github.com/damirmukimov/gotui.git
cd gotui
go build -o goutui ./cmd/goutui
# Optional: Install globally
sudo mv goutui /usr/local/bin/# Install development dependencies
make setup-dev
# Run in development mode with hot reloading
make dev
# Or run tests continuously
make test# Run in current Go project directory
goutui
# Run with debug logging
GOTUI_DEBUG=1 goutui
# Run with custom editor
EDITOR=code goutuiTab/Shift+Tab- Switch between tabst/b/f/v/c- Jump to Tests/Benchmarks/Format/Vet/Build tabsq/Ctrl+C- Quit applicationr- Refresh current tabEsc- Return to tab bar from content
β/β/j/k- Navigate listsEnter- Open selected item in editorSpace- Expand/collapse tree itemsPgUp/PgDown- Page through content
- Command:
go test -json ./... - Features: Hierarchical test tree, pass/fail indicators, file navigation
- Navigation: Expand/collapse test suites, jump to failing tests
- Command:
go test -bench=. ./... - Features: Sortable performance table, historical comparisons
- Navigation: Sort by time, memory, or allocations
- Command:
gofmt -d . - Features: Diff preview, selective formatting, editor integration
- Actions: Apply formatting to individual files or all files
- Command:
go vet ./...+staticcheck - Features: Issue categorization, file and line navigation
- Integration: Direct jump to problematic code
- Command:
go build ./... - Features: Real-time compilation, error grouping
- Navigation: Jump to compilation errors
gotui/
βββ cmd/goutui/ # Application entry point
βββ internal/
β βββ editor/ # Editor integration utilities
β βββ errors/ # Error handling and types
β βββ logger/ # Structured logging system
β βββ runner/ # Command execution engine
β βββ style/ # UI theming and styling
β βββ tui/
β βββ components/ # Reusable UI components
β βββ tabs/ # Tab implementations
β βββ model.go # Main application model
βββ .air.toml # Hot reload configuration
βββ .golangci.yml # Linting configuration
βββ Makefile # Build and development tasks
- Bubble Tea Framework: Modern TUI framework with event-driven architecture
- Structured Logging: slog-based logging with configurable output formats
- Error Handling: Comprehensive error types with context preservation
- Command Runner: Async command execution with output streaming
- Component Architecture: Modular UI components with clean interfaces
# Enable debug logging and additional output
export GOTUI_DEBUG=1
# Set preferred editor (defaults to $EDITOR or $VISUAL)
export EDITOR=code
export VISUAL=nvim
# Enable development mode logging
export DEBUG=1The .air.toml file configures hot reloading for development:
[build]
cmd = "go build -o ./tmp/goutui ./cmd/goutui"
bin = "./tmp/goutui"
[screen]
clear_on_rebuild = true# Run all tests
make test
# Run tests with coverage
make test-cover
# Run tests in verbose mode
make test-verbose
# Run tests with race detection
make test-raceCurrent coverage by package:
internal/logger: 100%internal/errors: 86.4%internal/editor: 58.2%
We welcome contributions! Please see our Contributing Guide for details.
# Fork and clone
git clone https://github.com/your-username/gotui.git
cd gotui
# Set up development environment
make setup-dev
# Run tests and linting
make ci
# Start development with hot reload
make dev- Setup:
make setup-dev - Develop:
make dev(with hot reloading) - Test:
make test(continuous testing) - Lint:
make lint(code quality) - Build:
make build(production build)
- Contributing Guide
- Development Roadmap
- API Documentation (coming soon)
See ROADMAP.md for upcoming features and development priorities.
- Core TUI architecture with Bubble Tea
- All major tabs (Tests, Benchmarks, Format, Vet, Build)
- Editor integration and file navigation
- Comprehensive error handling and logging
- Development tooling and hot reloading
- Configuration file support
- Theme customization
- Coverage integration
- Git integration
- Plugin system
MIT License - see LICENSE for details.
Built with β€οΈ using:
- Bubble Tea - The elegant TUI framework
- Bubbles - UI components
- Lip Gloss - Style definitions
- Air - Hot reloading for development
Happy Go Development! π