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, session history
βΈ Eye-friendly Dark/Light themes
βΈ Customizable color theme
Installation
πͺ Windows
Download from Releases:
Portable:
- Download
FingerGo-{VERSION}-x64-portable.zip
- Extract and run
FingerGo.exe
Requirements: Windows 10/11 with WebView2 (auto-downloads if missing)
π macOS
Download from Releases:
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)
π§ Linux
Download from Releases:
Flatpak (recommended):
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](https://github.com/golang/go) 1.25+ with Repository Pattern (DI)
- **Bridge:** [Wails v2](https://github.com/wailsapp/wails) provides GoβJS communication
- **Frontend:** Vanilla [JavaScript](https://github.com/tc39/ecma262) (ES6+) with Event-Driven Architecture (pub/sub EventBus)
- **Storage:** JSON files in XDG directories
- **Platforms:** [Linux](https://kernel.org/), [macOS](https://www.apple.com/macos/), [Windows](https://www.microsoft.com/windows/)
## For Developers
- [Technical design](docs/tech-design/)
- [Architecture overview](docs/tech-design/architecture.md)
- [Makefile](Makefile)
- [Contributing](docs/CONTRIBUTING.md)
## Acknowledgments
- [Wails](https://wails.io/)
## Apache 2.0 [LICENSE](LICENSE)
If you use this project, please link back to this repo and β it if it helped you.
## Sponsor
[](https://github.com/sponsors/AshBuk) [](https://www.paypal.com/donate/?hosted_button_id=R3HZH8DX7SCJG)
Please consider supporting development