andreasaez/shakespeare

An open source key tap app for macOS. Like Fitbit, but for words.

Swift

0

3 commits

updated Oct 10, 2026

See the code

See what people are saying

SourceMessageScoreDate

Shakespeare: fun typing stats for your Mac menu bar (r/ClaudeAI)

**What I built** Shakespeare is a macOS menu bar app that counts how much you type and turns it into fun stats. I built it with Claude Code. It's free and open source (MIT), and it works fully offline. **What it does** * Shows keys today and over 14 days, a streak for days with 50+ keys, your…

0

Oct 9, 2026

README

Shakespeare ✒️

Fun keyboard stats in your Mac menu bar. Private by construction: it counts key presses, never what you type, and never touches the network.

  • Today and the last 14 days. The menu opens on today's number; hover any bar for that day's count.
  • A streak that means typing. Days with 50+ keys.
  • Honest typing speed. Best sustained WPM over a full minute, letters and space only. Shortcuts and arrows don't count.
  • Fun facts. Your busiest hour, how far your keys have travelled, how many Hamlets you've typed.
  • Top apps (optional, off by default). Where you type most. Toggle it any time; turning it off erases stored app names.
  • Share cards, mechanical keyboard meets Shakespeare. Nine keyboard colourways drawn as a real 75% board (Quarto, Elsinore, Falstaff, Juliet, Tudor Rose, Arden, Venice, plus retro Phosphor and Synthwave), with a soft bloom, solid or one of nine patterns (Manuscript, Damask, Fleur-de-lis … Retro Grid, CRT Scanlines, Halftone) behind it. Rendered on your Mac; you choose where to post.
  • Your menu, your look. Light Inter type and keycap-style tiles. Follows macOS light/dark by default, or pick any colourway under Settings → Appearance.

Install (from source)

Requires macOS 14+ and the Xcode command line tools (xcode-select --install).

git clone https://github.com/andreasaez/shakespeare.git
cd shakespeare
make install

make install is a guided installer. It runs the privacy audit, builds, signs, copies the app to ~/Applications, launches it, and opens the macOS page where you grant the one permission it needs. Then:

  1. In System Settings → Privacy & Security → Input Monitoring, turn on Shakespeare.
  2. If the menu says Restart to start counting, click Restart Shakespeare.
  3. Type something. The number in the menu bar goes up.

Keep the permission across rebuilds

macOS ties the Input Monitoring permission to the app's code signature.

  • With a signing certificate (recommended, free): the installer finds it automatically and the permission survives rebuilds. To create one, open Xcode → Settings → Accounts, add your Apple ID, then Manage Certificates → + → Apple Development.
  • Without one: the app is ad-hoc signed and macOS forgets the permission on every rebuild. The installer clears the stale entry for you, so you just turn the switch on again.

If the app is running, shows no warning, but isn't counting, the permission has gone stale: run make install again, or tccutil reset ListenEvent io.github.andreasaez.shakespeare and re-allow it.

Other commands: make run (debug run), make test, make audit, make app (build only, into dist/), make clean. Environment options: BUNDLE_ID=com.you.shakespeare for your own identifier, SIGN_ID="Apple Development: …" to choose a certificate.

Privacy

Short version: only per-day counters are stored, in ~/Library/Application Support/Shakespeare/stats.json (owner-only permissions). Full details and limits in PRIVACY.md; security notes in SECURITY.md. CI enforces the promises via Scripts/audit-privacy.sh.

Credits

Typeset in Inter v4.1 (SIL Open Font License; see Resources/Fonts/Inter-OFL.txt), bundled in the app so nothing is fetched at runtime. The font's SHA-256 is recorded in Resources/Fonts/SHA256SUMS and checked at build time.

Layout

Sources/ShakespeareCore   logic: key classification, WPM, stats, storage (unit-tested)
Sources/Shakespeare       SwiftUI menu bar app, key monitor, share cards
Scripts/                  build-app.sh (bundle + sign), install.sh, audit-privacy.sh,
                          make-icon.swift (redraws Resources/AppIcon.icns in code)

Contributing

See CONTRIBUTING.md. MIT licensed.

fun
opensource

andreasaez/shakespeare

An open source key tap app for macOS. Like Fitbit, but for words.

Swift

0

3 commits

updated Oct 10, 2026

See the code

See what people are saying

SourceMessageScoreDate

Shakespeare: fun typing stats for your Mac menu bar (r/ClaudeAI)

**What I built** Shakespeare is a macOS menu bar app that counts how much you type and turns it into fun stats. I built it with Claude Code. It's free and open source (MIT), and it works fully offline. **What it does** * Shows keys today and over 14 days, a streak for days with 50+ keys, your…

0

Oct 9, 2026

README

Shakespeare ✒️

Fun keyboard stats in your Mac menu bar. Private by construction: it counts key presses, never what you type, and never touches the network.

  • Today and the last 14 days. The menu opens on today's number; hover any bar for that day's count.
  • A streak that means typing. Days with 50+ keys.
  • Honest typing speed. Best sustained WPM over a full minute, letters and space only. Shortcuts and arrows don't count.
  • Fun facts. Your busiest hour, how far your keys have travelled, how many Hamlets you've typed.
  • Top apps (optional, off by default). Where you type most. Toggle it any time; turning it off erases stored app names.
  • Share cards, mechanical keyboard meets Shakespeare. Nine keyboard colourways drawn as a real 75% board (Quarto, Elsinore, Falstaff, Juliet, Tudor Rose, Arden, Venice, plus retro Phosphor and Synthwave), with a soft bloom, solid or one of nine patterns (Manuscript, Damask, Fleur-de-lis … Retro Grid, CRT Scanlines, Halftone) behind it. Rendered on your Mac; you choose where to post.
  • Your menu, your look. Light Inter type and keycap-style tiles. Follows macOS light/dark by default, or pick any colourway under Settings → Appearance.

Install (from source)

Requires macOS 14+ and the Xcode command line tools (xcode-select --install).

git clone https://github.com/andreasaez/shakespeare.git
cd shakespeare
make install

make install is a guided installer. It runs the privacy audit, builds, signs, copies the app to ~/Applications, launches it, and opens the macOS page where you grant the one permission it needs. Then:

  1. In System Settings → Privacy & Security → Input Monitoring, turn on Shakespeare.
  2. If the menu says Restart to start counting, click Restart Shakespeare.
  3. Type something. The number in the menu bar goes up.

Keep the permission across rebuilds

macOS ties the Input Monitoring permission to the app's code signature.

  • With a signing certificate (recommended, free): the installer finds it automatically and the permission survives rebuilds. To create one, open Xcode → Settings → Accounts, add your Apple ID, then Manage Certificates → + → Apple Development.
  • Without one: the app is ad-hoc signed and macOS forgets the permission on every rebuild. The installer clears the stale entry for you, so you just turn the switch on again.

If the app is running, shows no warning, but isn't counting, the permission has gone stale: run make install again, or tccutil reset ListenEvent io.github.andreasaez.shakespeare and re-allow it.

Other commands: make run (debug run), make test, make audit, make app (build only, into dist/), make clean. Environment options: BUNDLE_ID=com.you.shakespeare for your own identifier, SIGN_ID="Apple Development: …" to choose a certificate.

Privacy

Short version: only per-day counters are stored, in ~/Library/Application Support/Shakespeare/stats.json (owner-only permissions). Full details and limits in PRIVACY.md; security notes in SECURITY.md. CI enforces the promises via Scripts/audit-privacy.sh.

Credits

Typeset in Inter v4.1 (SIL Open Font License; see Resources/Fonts/Inter-OFL.txt), bundled in the app so nothing is fetched at runtime. The font's SHA-256 is recorded in Resources/Fonts/SHA256SUMS and checked at build time.

Layout

Sources/ShakespeareCore   logic: key classification, WPM, stats, storage (unit-tested)
Sources/Shakespeare       SwiftUI menu bar app, key monitor, share cards
Scripts/                  build-app.sh (bundle + sign), install.sh, audit-privacy.sh,
                          make-icon.swift (redraws Resources/AppIcon.icns in code)

Contributing

See CONTRIBUTING.md. MIT licensed.

fun
opensource