[ give me a banana ]
A minimal, monkey-themed typing practice TUI built in Go.
ugabuga is a terminal-based typing trainer inspired by Monkeytype. Designed to be lightweight and simple, it runs entirely in your terminal, featuring custom statistics, historical charts, typing tips, daily challenges, and beautiful color themes.
- Monkey Mode Practice:
- Word practice (10, 25, 50, 100 words) and time-based practice (15s, 30s, 60s, 120s).
- Clean 3-line word scrolling interface.
- Space-skipping: Pressing
Spacewhen typing a wrong word skips to the next word immediately. - Instant Restart: Press
Tabto restart the current test immediately with a new seed. - Live WPM, Accuracy, and Time stats during the test.
- Bilingual Interface:
- Supports English (default) and Portuguese.
- Changing the language in the settings dynamically translates all menus, options, helper tooltips, statistics, performance charts, and typing tips.
- Daily Challenge:
- Deterministic 25-word test generated using a date-based seed (same test for all users on the same day).
- Streak tracking to help you maintain your daily practice.
- Typing Tips:
- An interactive carousel of tips (available in English & Portuguese) covering:
- Home Row positioning
- Muscle memory
- Column finger layout mapping
- Accuracy vs. Speed
- Ergonomic posture
- An interactive carousel of tips (available in English & Portuguese) covering:
- Stats & History:
- All attempts are saved locally in
~/.config/ugabuga/history.json. - The Stats view displays all-time records (Best WPM, Average WPM, Average Accuracy, Daily Streak).
- Includes a beautiful custom ASCII performance chart showing WPM trends over the last 15 tests.
- All attempts are saved locally in
- Themes:
- Multiple color palettes configured to work with transparent terminal backgrounds:
- Carbon (Classic): Dark gray with amber accents.
- Dracula: Iconic purple and ciano dev colorway.
- Nord: Cool arctic blues and grays.
- Sakura: Dark cherry-blossom pink.
- Multiple color palettes configured to work with transparent terminal backgrounds:
- Clean Architecture:
- Structured following standard Go layout practices with a clear
/cmdentrypoint and/internallogic encapsulation.
- Structured following standard Go layout practices with a clear
- Go (version 1.22 or higher)
- A terminal with Unicode support (to render block charts and borders)
Clone the repository and compile the binary:
# Clone the repository (if applicable)
cd ugabuga
# Compile the project
go build -o ugabuga ./cmd/ugabuga
# Run the TUI
./ugabugaAlternatively, to run the project directly without compiling to disk:
go run ./cmd/ugabugaTo install the application globally on your system, run:
go install ./cmd/ugabugaThis compiles and copies the ugabuga binary to your $GOPATH/bin directory (typically ~/go/bin). If ~/go/bin is in your shell's $PATH, you can run it from anywhere in your terminal by typing:
ugabugaTo run unit tests:
go test ./...↑ / ↓ork / j: Navigate menu items.← / →orh / l: Cycle options (Language, Mode, Duration, Words, Themes).Enter: Select or start a practice.
Type any key: Start the test timer.Backspace: Delete the last character.Space: Space between words (or skip the rest of the current word if incorrect).Tab: Restart current test.Esc: Return to main menu.
← / →orh / l: Navigate tips.Esc: Return to main menu.
Esc: Return to main menu.c: Clear all history and reset streak.
