Downpour is a macOS-first Tauri desktop typing game in a pnpm monorepo.
Words fall like rain in a neon city scene. Type words before impact, keep lives alive, and prevent the waterline from flooding the run.
- Monorepo:
pnpmworkspaces - Desktop shell/backend: Tauri v2 + Rust
- Frontend: React + Vite + TypeScript (strict)
- Styling: Tailwind CSS
- Persistence: SQLite (
rusqlite) in app data directory (downpour.db)
apps/downpour-desktop: Tauri app + frontendpackages/shared: shared TypeScript contracts + validators
Downpour is currently distributed as a macOS build-from-source installation. The GitHub release does not include a notarized app bundle.
./install.sh will:
- verify or install Xcode Command Line Tools, Homebrew, Node.js
>= 22, pnpm, and Rust - install workspace dependencies with
pnpm - build
Downpour.applocally from source - copy
Downpour.appinto/Applications - remove repo-local build artifacts after installation completes
The first build can take a few minutes on a fresh machine.
git clone https://github.com/richer-richard/Downpour.git
cd Downpour
./install.shIf you prefer to manage the toolchain manually, make sure these are available first:
- Node.js
>= 22 - pnpm
>= 10 - Rust stable toolchain (
rustup) - Xcode Command Line Tools
Refresh the built-in word corpus from SCOWL:
pnpm update:wordlistThis downloads SCOWL en_US.txt and en_US-large.txt, filters them into
gameplay-safe lowercase words, and updates
apps/downpour-desktop/src/assets/wordlists/.
pnpm devThis runs:
- frontend Vite dev server on
http://localhost:1420 - Tauri desktop host via
cargo tauri dev
After running pnpm dev, verify:
- A native macOS window opens titled
Downpour. - Start screen is visible (title +
Start,Records,Settingsbuttons). - Press
Startand confirm words are falling and HUD metrics update.
pnpm lintpnpm typecheckpnpm buildThis runs the repo-pinned Tauri build via pnpm --filter downpour-desktop tauri build.
- Releases are source-first and rely on GitHub's autogenerated source archives.
- Install a tagged release by downloading or cloning the release source and running
./install.sh. - No notarized
.app,.zip, or.dmgis attached to the release.
Frontend tests:
pnpm --filter downpour-desktop testRust tests:
cargo test --manifest-path apps/downpour-desktop/src-tauri/Cargo.toml- DB file:
<app_data_dir>/downpour.db - Tauri commands:
get_recordssave_recordget_best_wpmset_best_wpmreset_records
- SQLite settings:
PRAGMA journal_mode=WALPRAGMA synchronous=FULLPRAGMA foreign_keys=ON
- Type letters: lock and progress falling words
Backspace: rewind target progressEsc: pause/resume- Missed words increase waterline and reduce lives
- Game ends when lives reach
0or waterline reaches threshold
- If
pnpm buildfails with Tauri toolchain errors, verify:xcode-select -prustc --versionpnpm --version
- If the app cannot open WebView resources, ensure Vite port
1420is available. - If you run frontend only (
pnpm --filter downpour-desktop dev), Tauri commands fall back to browserlocalStoragestubs. - If macOS warns on first launch after installation, open
Downpour.appfrom Finder or allow it in System Settings.
- Updater script:
scripts/update-wordlists.mjs - Upstream source: SCOWL generated word lists from
https://github.com/en-wl/wordlist-diff - License notice copied into
apps/downpour-desktop/src/assets/wordlists/SCOWL-Copyright.txt