"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.
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
| 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 |
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 24bitYou should be comfortable with:
- Basic Go syntax (structs, interfaces, goroutines, channels)
- Running
go run .andgo mod tidy - SSH basics (what a public key is)
You do NOT need prior TUI experience. We start from zero.
# 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/...βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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