Skip to content

JDRV-space/nabu

Repository files navigation

Nabu

Browser-based RSVP speed reader. It flashes words at a chosen speed so you can read a document without moving your eyes across a page.

Live app: https://nabu-reader.vercel.app

What It Does

  • Imports TXT, Markdown, PDF, and DOCX files.
  • Reads with RSVP at 100-1000 WPM.
  • Displays 1, 3, 5, 10, or 20 words per flash.
  • Highlights the Optimal Recognition Point in amber.
  • Stores documents locally in browser IndexedDB.
  • Supports fullscreen reading and keyboard controls.

Run Locally

Prerequisites:

  • Rust stable
  • wasm32-unknown-unknown target
  • Trunk
git clone https://github.com/JDRV-space/nabu.git
cd nabu

rustup target add wasm32-unknown-unknown
cargo install trunk

trunk serve

The app runs at http://127.0.0.1:8080.

Production build:

./scripts/build.sh

Build output goes to dist/.

Keyboard Shortcuts

Key Action
Space Play/Pause
Left/Right Adjust WPM by 50
Up/Down Adjust WPM by 10
R Restart
F Fullscreen
ESC Exit reader

Limitations

  • Documents are stored in browser IndexedDB and encrypted with AES-GCM.
  • The encryption key is stored in browser localStorage as nabu_key.
  • This is privacy against server upload. It is not protection against a compromised browser, browser extension, device, or user profile.
  • Clearing site data can delete the library and the stored key.
  • PDF and DOCX parsing happens in the browser and can fail on malformed or unusual files.
  • There is no account system, sync, sharing, or backup.

Project Layout

nabu/
├── assets/                 # static assets and CSS
├── src/
│   ├── main.rs             # entry point
│   ├── components/         # reader, library, settings, controls, upload
│   ├── state/              # application state and signals
│   ├── storage/            # IndexedDB and document encryption
│   └── parser/             # PDF, DOCX, TXT, MD parsing
├── docs/SPEC.md            # design and implementation notes
├── scripts/                # build scripts
├── Cargo.toml
├── Trunk.toml
├── vercel.json
└── LICENSE

Documentation

License

MIT. See LICENSE.

About

Speed reading (RSVP) web app built with Rust, WebAssembly, and Leptos.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors