Skip to content

Latest commit

Β 

History

History
121 lines (95 loc) Β· 4.25 KB

File metadata and controls

121 lines (95 loc) Β· 4.25 KB

πŸŽ“ Architecting the Modern Terminal

The 2026 Charm Masterclass β€” God-Level TUI Engineering

Thumbnail

"The terminal is not a fallback. It is the most powerful canvas a developer has." β€” Charm Engineering Philosophy


Welcome. You are about to go from writing basic fmt.Println CLI scripts to deploying multi-user, SSH-accessible, animated, physics-driven Terminal User Interfaces that run at 60fps.

This course is structured the way we onboard engineers at Charm. It is direct, technical, and complete. Every concept is explained from first principles. Every code sample runs.


πŸ“š Course Structure

charm-masterclass/
β”œβ”€β”€ cmd
β”‚   └── main.go
β”œβ”€β”€ go.mod
β”œβ”€β”€ internal
β”‚   β”œβ”€β”€ config
β”‚   β”‚   └── config.go
β”‚   └── ui
β”‚       β”œβ”€β”€ app.go
β”‚       β”œβ”€β”€ styles.go
β”‚       └── submodels.go
β”œβ”€β”€ modules
β”‚   β”œβ”€β”€ module-1
β”‚   β”‚   β”œβ”€β”€ 01-mvp-architecture.md
β”‚   β”‚   β”œβ”€β”€ 02-lipgloss-styling.md
β”‚   β”‚   └── status-dashboard.go
β”‚   β”œβ”€β”€ module-2
β”‚   β”‚   β”œβ”€β”€ 01-bubbles-customization.md
β”‚   β”‚   β”œβ”€β”€ 02-huh-forms.md
β”‚   β”‚   └── server-config-wizard.go
β”‚   β”œβ”€β”€ module-3
β”‚   β”‚   β”œβ”€β”€ 01-harmonica-animations.md
β”‚   β”‚   └── animated-dashboard.go
β”‚   └── module-4
β”‚       β”œβ”€β”€ 01-wish-ssh.md
β”‚       └── chat-room.go
β”œβ”€β”€ pkg
β”‚   └── models
β”‚       └── types.go
β”œβ”€β”€ README.md
└── thumbnail.png

πŸ—ΊοΈ Learning Path

Module Topic Difficulty Est. Time
Module 1 The v2 Core β€” Engine & Aesthetics ⭐⭐ Intermediate 3–4 hrs
Module 2 The Logic of Interaction β€” bubbles & huh ⭐⭐⭐ Advanced 4–5 hrs
Module 3 Physics & Polish β€” harmonica & log ⭐⭐⭐ Advanced 3–4 hrs
Module 4 Cloud & Deployment β€” wish & x ⭐⭐⭐⭐ Expert 5–6 hrs

πŸ› οΈ Prerequisites

Before starting, make sure you have:

# Go 1.22 or later
go version

# A terminal that supports true color (iTerm2, Kitty, Wezterm, Windows Terminal)
# Check 256-color support:
echo $TERM        # should be xterm-256color or similar
echo $COLORTERM   # should be truecolor or 24bit

You should be comfortable with:

  • Basic Go syntax (structs, interfaces, goroutines, channels)
  • Running go run . and go mod tidy
  • SSH basics (what a public key is)

You do NOT need prior TUI experience. We start from zero.


⚑ Quick Start

# Clone or copy the template for your own project
cp -r template/ my-tui-app
cd my-tui-app
go mod tidy
go run ./cmd/...

πŸ—οΈ The Charm Ecosystem at a Glance

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    YOUR TUI APPLICATION                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  charm.land/v2/bubbletea  β”‚  The event loop & render engine β”‚
β”‚  charm.land/v2/lipgloss   β”‚  Styles, colors, layout         β”‚
β”‚  charm.land/v2/bubbles    β”‚  Ready-made UI components       β”‚
β”‚  charm.land/v2/huh        β”‚  Forms, inputs, wizards         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  github.com/charmbracelet/harmonica  β”‚  Spring physics       β”‚
β”‚  github.com/charmbracelet/log        β”‚  Structured logging   β”‚
β”‚  github.com/charmbracelet/wish       β”‚  SSH server framework β”‚
β”‚  github.com/charmbracelet/x         β”‚  ANSI + image utils   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Start with Module 1 β†’ module-01-core/01-mvp-architecture.md