Day 24 / Daily GitHub Discovery / Developer Tools

Bubble Tea

Build interactive terminal applications using a model, update, and view loop.

~32,000 stars · checked Sep 28, 2026
GoANSITerminal UIElm Architecture
Visit GitHub (opens in a new tab)

What it does

Bubble Tea is a Go framework for terminal user interfaces. Programs update application state from messages and render the current view as text.

Why it’s interesting

The Elm architecture gives terminal apps predictable state transitions and a clean place to handle asynchronous commands.

Real-world use case

Create an interactive deployment selector with keyboard navigation and progress messages.

What I can learn

  • 01

    Model-Update-View architecture

    See how state transitions are handled separately from rendering, with commands representing effects such as timers or network work.

  • 02

    Terminal input, resizing, and screen buffers

    Study how terminal key events, resize messages, and screen modes update the application model.

  • 03

    Composable sub-models and message passing

    Learn how smaller input, table, and spinner models compose and communicate with a parent model.

One thing to explore

Examples and message loop

Follow the examples implementation and connect it to the concepts above.

Explore the source (opens in a new tab)

10-Minute Challenge

Build a terminal counter

Before you start: Go installed and an interactive terminal.

  1. Create a small Go module and add Bubble Tea.
  2. Implement a model with a counter and key handling.
  3. Run it in a terminal; use up/down to change the count and q to quit.
Terminal
mkdir bubble-demo && cd bubble-demogo mod init bubble-demogo get github.com/charmbracelet/bubbletea

Keep exploring

All repositories →