FingerGo
FingerGo is a cross-platform touch-typing trainer, designed to improve typing speed and accuracy, with a user-friendly and intuitive interface.
It includes real-time keyboard visualization, a hierarchical text and code library, and live statistics tracking.
Built with Go β Wails β Vanilla JavaScript (ES6+). Available for Linux, macOS, and Windows.
Features
βΈ Clean Interface Design
βΈ Shortcuts, Zen Mode, keyboard/Stat Toggle
βΈ Real-time visual keyboard with finger mapping
βΈ Hierarchical text/code library (plain text and code samples)
βΈ Live stats: WPM, CPM, accuracy, perβkey mistakes
βΈ Eye-friendly Dark/Light themes
βΈ Customizable color theme
Screenshots
Installation
Portable:
- Download
FingerGo-{VERSION}-x64-portable.zip
- Extract and run
FingerGo.exe
Requirements: Windows 10/11 with WebView2 (auto-downloads if missing)
DMG:
- Download
FingerGo-{VERSION}-universal.dmg
- Open DMG and drag FingerGo to Applications
- First launch: Right-click β Open (bypasses Gatekeeper if unsigned)
Supports: Intel and Apple Silicon (Universal binary)
Flatpak:
flatpak install --user FingerGo-{VERSION}-x86_64.flatpak
flatpak run com.ashbuk.FingerGo
Portable (tar.gz):
# Requires WebKit2GTK 4.1 installed on your system.
tar -xzf FingerGo-{VERSION}-linux-x86_64.tar.gz
./FingerGo
Tech Stack
ββββββββββββββββββββββββ ββββββββββββββββββββββββββ
β GUI LAYER ββββββ Wails ββββββββΊβ INTERNAL LAYER β
β HTML/CSS/JS β Bridge β Go 1.25+ β
ββββββββββββββββββββββββ ββββββββββββββββββββββββββ
β β
Event-Driven Repository
β β
ββββββ΄ββββββ ββββββ΄ββββββ
β EventBus β β Repos β
β (pub/sub)β β (DI) β
ββββββ¬ββββββ ββββββ¬ββββββ
β β
Modular JS Domain Models
β
βΌ
βββββββββββββββββββββββ
β JSON Storage β
β ~/.local/share/... β
βββββββββββββββββββββββ
- Backend: Go 1.25+ with Repository Pattern (DI)
- Bridge: Wails v2 provides GoβJS communication
- Frontend: Vanilla JavaScript (ES6+) with Event-Driven Architecture (pub/sub EventBus)
- Storage: JSON files in XDG directories
- Platforms: Linux, macOS, Windows
For Developers
Acknowledgments
If you use this project, please link back to this repo and β it if it helped you.

Please consider supporting development