{"id":48800629,"url":"https://github.com/vyrx-dev/toofan","last_synced_at":"2026-06-07T08:01:20.124Z","repository":{"id":351192733,"uuid":"1202812596","full_name":"vyrx-dev/toofan","owner":"vyrx-dev","description":"A minimal, lightning-fast typing TUI for your terminal","archived":false,"fork":false,"pushed_at":"2026-05-08T07:10:37.000Z","size":3171,"stargazers_count":233,"open_issues_count":2,"forks_count":24,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-05-08T09:16:39.350Z","etag":null,"topics":["go","minimal","monketype","termial","textual","tui-app","typing","typing-practice"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vyrx-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"ko_fi":"vyrxx"}},"created_at":"2026-04-06T12:31:38.000Z","updated_at":"2026-05-08T07:10:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vyrx-dev/toofan","commit_stats":null,"previous_names":["vyrx-dev/toofan"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/vyrx-dev/toofan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vyrx-dev%2Ftoofan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vyrx-dev%2Ftoofan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vyrx-dev%2Ftoofan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vyrx-dev%2Ftoofan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vyrx-dev","download_url":"https://codeload.github.com/vyrx-dev/toofan/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vyrx-dev%2Ftoofan/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34013240,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","minimal","monketype","termial","textual","tui-app","typing","typing-practice"],"created_at":"2026-04-14T02:03:27.994Z","updated_at":"2026-06-07T08:01:20.105Z","avatar_url":"https://github.com/vyrx-dev.png","language":"Go","funding_links":["https://ko-fi.com/vyrxx"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# toofan\n\n**A minimal, lightning-fast typing TUI**  \n_Practice with english words or real code snippets. No browser, no account, everything stays local._\n\n\u003cp align=\"center\"\u003e\n  \u003ci\u003eFeatured on\u003c/i\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://terminaltrove.com/toofan/\"\u003e\n    \u003cimg width=\"20%\" alt=\"Terminal Trove logo\" src=\"https://github.com/user-attachments/assets/f85b1470-a574-4bc2-b002-4e6dddb9e277\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cbr\u003e\n\n\u003cimg src=\"assets/main.gif\" alt=\"toofan demo\" width=\"750\"\u003e\n\n\u003c/div\u003e\n\n---\n\n## Features\n\n- **Two Modes:** Practice standard English words or real-world code snippets.\n- **Curated Lessons:** Hand-written, topic-based code exercises across multiple languages.\n- **Dynamic Themes:** Cycle between multiple aesthetic terminal themes (`ctrl+t`).\n- **Live Metrics:** Real-time WPM speed and accuracy tracking.\n- **Error Review:** See exactly which words you mistyped after every test.\n- **Ranks:** Automated progression system based on your typing speed.\n- **Offline \u0026 Local:** No browser, no account, zero telemetry.\n- **Racing:** Race against your own last 10 tests.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/code-snippets-grid.png\" width=\"48%\" title=\"Real Code Snippets\" alt=\"Real Code Snippets\" /\u003e\n  \u003cimg src=\"assets/lession-grid.png\" width=\"48%\" title=\"Curated Topics \u0026 Lessons\" alt=\"Curated Topics \u0026 Lessons\" /\u003e\n  \u003cimg src=\"assets/languages-grid.png\" width=\"48%\" title=\"Multiple Languages Supported\" alt=\"Multiple Languages Supported\" /\u003e\n  \u003cimg src=\"assets/theme-grid.png\" width=\"48%\" title=\"Dynamic Built-in Themes\" alt=\"Dynamic Built-in Themes\" /\u003e\n\u003c/p\u003e\n\n## Profile Dashboard\n\nA personal overview of your typing speed history, personal bests across durations, and a daily activity map to keep you consistent. Press `ctrl+p` to open.\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"assets/profile-new.png\" width=\"95%\"\u003e\n\u003c/div\u003e\n\n## Installation\n\n⚠️ **Note:** Always take a backup (`ctrl+s`) before updating toofan.\n\n### curl (macOS \u0026 Linux)\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/vyrx-dev/toofan/master/install.sh | sh\n```\n\n### AUR\n\n```bash\nparu -S toofan-bin\n```\n\n### Go\n\n```bash\ngo install github.com/vyrx-dev/toofan@latest\n```\n\n### Homebrew / Nix / Ubuntu / Fedora\n\nComing soon.\n\n### Build from Source\n\nIf you prefer building manually (requires Go):\n\n```sh\ngit clone https://github.com/vyrx-dev/toofan.git\ncd toofan\ngo build -o toofan .\nmv toofan ~/.local/bin/\n```\n\n## FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003eHow are stats calculated?\u003c/summary\u003e\n\n```text\nraw      = total_chars / 5 / elapsed_minutes\nwpm      = (total_chars - uncorrected_errors) / 5 / elapsed_minutes\naccuracy = (total_chars - all_mistakes) / total_chars × 100\n```\n\n- **wpm** - your net speed. Every 5 characters count as one \"word\". Uncorrected mistakes are subtracted.\n- **accuracy** - counts every wrong keystroke, even if you corrected it with backspace.\n- **raw** - your gross speed before any penalty.\n- **errors** - press `e` on the results page to see exactly which words you mistyped.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWhere are my files stored?\u003c/summary\u003e\n\nEverything lives in `~/.config/toofan/` as plain text files:\n\n- `config.txt` : Your selected duration, mode, language, and theme\n- `results.txt` : Every test result (date, wpm, accuracy, duration, mode)\n- `pb.txt` : Your personal bests per mode and duration\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eCan I backup my data?\u003c/summary\u003e\n\nYes. Press `ctrl+s` to save a backup and `ctrl+r` to restore from one. Backups are saved to `~/.config/toofan/backups/` and can be moved between machines.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eHow do I update toofan?\u003c/summary\u003e\n\nThe update process depends on how you installed it:\n\n**curl (Quick Install):**\nJust run the install command again. It will automatically download and replace the old binary.\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/vyrx-dev/toofan/master/install.sh | sh\n```\n\n**Go:**\n\n```bash\ngo install github.com/vyrx-dev/toofan@latest\n```\n\n**AUR:**\nUse your AUR helper to update the package:\n\n```bash\nparu -Syu toofan-bin\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eHow do I uninstall Toofan?\u003c/summary\u003e\n\nIf you installed via the `curl` Quick Install, simply delete the binary and the configuration folder:\n\n```bash\nrm ~/.local/bin/toofan\nrm -rf ~/.config/toofan\n```\n\n_(If you built it from source and moved it globally, run `sudo rm /usr/local/bin/toofan` instead)._\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eDoes it work offline?\u003c/summary\u003e\n\nYes. Everything runs locally and is embedded in the binary. No internet needed.\n\nBut there’s currently a pending [PR-50](https://github.com/vyrx-dev/toofan/pull/50) for `toofan-online`, which will add multiplayer support. It’s going to be a separate package from the main branch so the original offline experience stays exactly as promised.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWant more programming languages?\u003c/summary\u003e\n\nWe're always looking to add more. If your favorite programming language isn't supported yet, open a PR with a few lesson files and we'll get it in. Check `AGENTS.md` for the file format.\n\n\u003c/details\u003e\n\n## Roadmap\n\n- [x] Curl script installation (macOS \u0026 Linux)\n- [x] Proper documentation for AI and contributors\n- [ ] More language support\n- [x] Difficulty levels for english words\n- [ ] AUR, Homebrew, Nix packages\n- [x] Fix top pane alignment to match bottom panes in profile\n\n## Contributing\n\n- New snippets : Drop a file in `internal/lang/data/\u003clanguage\u003e/lessons/` and rebuild\n- New languages : Just a folder with lesson files\n- New themes : One Go file with a color palette\n- Bug fixes and UX improvements\n\nIf you're using an AI coding assistant, read [`AGENTS.md`](AGENTS.md) first.\n\n## Dependencies\n\n- [Bubble Tea](https://github.com/charmbracelet/bubbletea) : TUI framework\n- [Lipgloss](https://github.com/charmbracelet/lipgloss) : Terminal styling\n\n---\n\n\u003ca href=\"https://www.star-history.com/#vyrx-dev/toofan\u0026type=date\u0026legend=top-left\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=vyrx-dev/toofan\u0026type=date\u0026theme=dark\u0026legend=top-left\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=vyrx-dev/toofan\u0026type=date\u0026legend=top-left\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=vyrx-dev/toofan\u0026type=date\u0026legend=top-left\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvyrx-dev%2Ftoofan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvyrx-dev%2Ftoofan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvyrx-dev%2Ftoofan/lists"}