A ClojureScript rewrite of the ColemakCamp typing trainer, re‑focused around the Enthium v14 keyboard layout. The site is a static single‑page application compiled with shadow‑cljs and served from the docs/ directory (GitHub Pages).
The primary feature is an interactive typing trainer with progressive levels, a live cheatsheet keyboard and real‑time WPM/accuracy scoring. Secondary pages provide layout rationale, performance statistics, a comparison table, and learning documentation, all reachable via hash routes.
The original ColemakCamp JavaScript source is kept in the repository root for reference only; the active ClojureScript code lives under src/enthalpy.
- Typing trainer powered by Reagent and re-frame; global application state lives in a single
app-db. - Progressive level system (1‑8) with letter sets tuned to Enthium v14 home‑row frequency.
- QWERTY‑emulation mode (“US KB”) for users typing on a physical US QWERTY layout.
- Live cheatsheet keyboard and finger‑colour legend.
- Time/word modes, adjustable limits, and optional caps/punctuation/backspace requirements.
- Supplementary documentation pages (rationale, layout, comparison, FAQ) with hash‑based routing.
- Build & dev workflow driven by
just/ Shadow‑CLJS, using Bun as the JS runtime.
just install– install Bun dependencies.just dev– start Shadow‑CLJS with hot‑reload at http://localhost:3000.just build– produce a production bundle indocs/js.just check/just test– perform syntax checks and run the integrity test suite (clj -M scripts/test.clj).
The ClojureScript code in this repository is licensed under the GNU Affero General Public License v3.0 (AGPL‑3.0), matching the original ColemakCamp project; see LICENSE for full text.
Parts of the project that are not a part of this license are mentioned in this table:
| Project Name | Project License |
|---|---|
| Popper | MIT |
| Tippy.js | MIT |
| Fork Awesome CSS | MIT |
| Cuprum (Google Fonts) | Open Font License |
| Radio Canada (Google Fonts) | Open Font License |
| Cascadia Code (Microsoft) | Open Font License |
| Material Icons (Google Fonts) | Apache-2.0 |
Some of the icons have been taken from Flaticon, which requires attribution. Below is a list of all the icons in the fontasm font file that are directly taken from Flaticon or modified based on something from Flaticon.
| Icon Class | Attribution |
|---|---|
| fa-arrow-top | Flaticon |
| fa-arrow-right | Flaticon |
| fa-arrow-bottom | Flaticon |
| fa-arrow-left | Flaticon |
| fa-editor | Flaticon |
| fa-settings | Flaticon |
| fa-theme | Flaticon |
| fa-preferences | Flaticon |
| fa-send | Flaticon |
| fa-edit | Flaticon |
| fa-keyboard | Flaticon |
Icons not listed here are either from Material Icons, or created from scratch.