A fun, functional, and stateful Go framework for building terminal user interfaces (TUIs) based on The Elm Architecture.
Bubble Tea is a Go framework for building terminal user interfaces (TUIs) using The Elm Architecture. It provides a declarative, stateful way to create interactive command-line applications, from simple tools to full-window interfaces. The framework handles rendering, input events, and component lifecycle, allowing developers to focus on application logic.
Go developers building interactive command-line tools, system administrators creating custom terminal dashboards, and anyone needing to build rich text-based interfaces beyond basic CLI output.
Developers choose Bubble Tea for its elegant functional design, production-ready performance optimizations, and comprehensive feature set including mouse support, clipboard integration, and a vibrant ecosystem of companion libraries like Bubbles for UI components.
A powerful little TUI framework 🏗
Adopts The Elm Architecture with Init, Update, and View methods, ensuring predictable and testable UI behavior, as demonstrated in the tutorial's shopping list example.
Includes a cell-based renderer with built-in color downsampling, optimized for efficient terminal output and used in production apps like Glow and Chezmoi.
Supports keyboard, mouse, and native clipboard events, enabling complex interactivity without external dependencies, as highlighted in the features list.
Allows UI description without manual redrawing logic, simplifying updates and reducing bugs, evident in the View method that builds content based on model state.
Requires running delve in headless mode due to stdin/stdout control, making iterative debugging more cumbersome than standard Go programs, as admitted in the debugging section.
Confined to text-based interfaces, so it cannot handle graphical elements or web apps, limiting use cases for projects needing visual richness.
While Bubbles provides common components, the ecosystem is still maturing, and advanced features like charts require additional libraries like ntcharts, increasing setup complexity.
Terminal JSON viewer & processor
Golang terminal dashboard
Style definitions for nice terminal layouts 👄
Minimalist Go package aimed at creating Console User Interfaces.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.