TUI for training typing speed.
- Configure your text training with various settings: language, time, words length, etc.
- Practice your typing with a selected configuration within a specific time range.
- Review the mistakes made, statistics, and your speed across the typing session.
Install speedtype with:
curl -fsSL https://raw.githubusercontent.com/BorisPlaton/speedtype/refs/heads/main/speedtype/install.sh | sh
After installation, run:
speedtype
To update speedtype, run the same command as for installation.
This section is intended only for developing the Speedtype. If you only want to install the application, go to the Install & Update section.
Speedtype consists of several parts:
speedtype— the TUI written in Python. Think of this as a frontend that runs in the user's terminal.zeus— the backend application handling text and typing configuration logic.
Depending on which project you work on, the initialization may differ. The common step across all of them is to pull this repository :)
speedtype:
cd speedtype
just init
zeus:
cd zeus
just init
Each component contains a justfile with common commands that help during development. You can see them all by running
just inside the component directory, or just help.
Developing:
- Checkout from the
maina new branch with the following name<feature/bugfix/task>/<short description>.- How to choose what to specify: feature, bugfix or task:
- feature - adds a new functionality to the end users - it is what they will see when Speedtype is launched.
- bugfix - fixing the bug that occurs in the Speedtype.
- task - anything else: updating README, adding new tests, configuring linters, etc.
- How to choose what to specify: feature, bugfix or task:
- Do some changes...
- Push the branch to the
origin. - Create PR.
Pull requests:
- Title must follow the next structure
<feature/bugfix/task>: <short description>. - PR's body must contain the following sections.
- What was done - description of what was changed/added/removed.
- Issues - link to the issue which will be resolved after PR is merged.
- Attachments (optional) - contains the additional attachments: photo, videos, etc.
- Add appropriate labels.
- PRs are merged into
mainusing the squash and merge strategy. - After the PR is merged, the branch will be deleted automatically.