Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ugabuga logo

[ 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.

Features

  • 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 Space when typing a wrong word skips to the next word immediately.
    • Instant Restart: Press Tab to 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:
      1. Home Row positioning
      2. Muscle memory
      3. Column finger layout mapping
      4. Accuracy vs. Speed
      5. Ergonomic posture
  • 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.
  • 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.
  • Clean Architecture:
    • Structured following standard Go layout practices with a clear /cmd entrypoint and /internal logic encapsulation.

Requirements

  • Go (version 1.22 or higher)
  • A terminal with Unicode support (to render block charts and borders)

How to Build and Run

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
./ugabuga

Alternatively, to run the project directly without compiling to disk:

go run ./cmd/ugabuga

Installation

To install the application globally on your system, run:

go install ./cmd/ugabuga

This 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:

ugabuga

Running Tests

To run unit tests:

go test ./...

Key Bindings

Main Menu

  • ↑ / ↓ or k / j: Navigate menu items.
  • ← / → or h / l: Cycle options (Language, Mode, Duration, Words, Themes).
  • Enter: Select or start a practice.

Typing Test

  • 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.

Typing Tips

  • ← / → or h / l: Navigate tips.
  • Esc: Return to main menu.

Stats & History

  • Esc: Return to main menu.
  • c: Clear all history and reset streak.

About

I wanted to practice correct typing, so I built this xD

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages