Skip to content

ronakmunjapara/FlashRead

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ FlashRead

FlashRead Banner

SpeedReader β€” Read faster with RSVP technology

Stars Version License Build


✨ What is FlashRead?

FlashRead is a speed reading application that uses RSVP (Rapid Serial Visual Presentation) technology with ORP (Optimal Recognition Point) alignment. It displays words one at a time with the middle character highlighted on a fixed vertical center line, eliminating eye movement and enabling reading speeds of 300-1200+ WPM.

πŸ’‘ RSVP technology allows you to read faster by presenting words sequentially in a fixed position, removing the time your eyes spend searching for the next word.


🎯 Features

Feature Description
⚑ RSVP Speed Reading Words flash one at a time at your chosen speed
🎯 ORP Alignment Optimal recognition point highlighted on center line
πŸš€ 300-1200+ WPM Adjustable reading speed with smart timing
⏸️ Smart Pausing Automatic pauses for commas, periods, and sentence endings
πŸ”— URL Import Load articles directly from any webpage
⌨️ Keyboard Controls Space, arrows, and R for full control
πŸ“ Customizable Adjustable font size (28-92px)

⌨️ Keyboard Shortcuts

Key Action
Space Play / Pause
β†’ Next word
← Previous word
R Restart from beginning

πŸ› οΈ Tech Stack

React TypeScript Vite Tailwind CSS

  • React 19 β€” UI Framework
  • TypeScript β€” Type safety
  • Vite β€” Fast build tool
  • Tailwind CSS 4 β€” Styling
  • Framer Motion β€” Animations
  • Lucide React β€” Icons

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn

Installation

# Clone the repository
git clone https://github.com/ronakmunjapara/FlashRead.git

# Navigate to the project
cd FlashRead

# Install dependencies
npm install

Development

npm run dev

Build

npm run build

Preview Production Build

npm run preview

πŸ“ Project Structure

FlashRead/
β”œβ”€β”€ public/
β”‚   └── favicon.svg
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ ControlsPanel.tsx    # Input controls, WPM slider, URL loader
β”‚   β”‚   └── Reader.tsx           # Word display with ORP highlighting
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ text.ts              # Text processing, tokenization, ORP logic
β”‚   β”‚   └── fetchArticle.ts      # URL content fetching via proxy
β”‚   β”œβ”€β”€ App.tsx                  # Main application component
β”‚   β”œβ”€β”€ main.tsx                 # Entry point
β”‚   └── index.css               # Global styles
β”œβ”€β”€ index.html                   # HTML template with SEO metadata
β”œβ”€β”€ package.json                 # Dependencies
β”œβ”€β”€ vite.config.ts              # Vite configuration
└── tsconfig.json               # TypeScript configuration

πŸ”¬ How It Works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     FlashRead Flow                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚   β”‚  Text   │───▢│ Tokenization │───▢│  ORP Calculationβ”‚   β”‚
β”‚   β”‚  Input  β”‚    β”‚              β”‚    β”‚                 β”‚   β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                              β”‚              β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚   β”‚                                                   β–Ό  β”‚
β”‚   β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚   β”‚   β”‚           Word Display (RSVP)                β”‚   β”‚
β”‚   β”‚   β”‚                                               β”‚   β”‚
β”‚   β”‚   β”‚      [left] [ORP] [right]                    β”‚   β”‚
β”‚   β”‚   β”‚         ◄─────►                              β”‚   β”‚
β”‚   β”‚   β”‚       fixed center line                      β”‚   β”‚
β”‚   β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚   β”‚                                                   β”‚   β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”˜
β”‚                                                      β”‚
β”‚                      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”‚
β”‚                      β”‚  Timing      β”‚β—€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                      β”‚  (WPM based)  β”‚
                      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

ORP Algorithm

The Optimal Recognition Point (ORP) is calculated based on word length:

Word Length ORP Position
1-5 chars Position 1
6-9 chars Position 2
10-13 chars Position 3
14+ chars Position 4

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • Inspired by Spritz RSVP technology
  • ORP algorithm based on research in visual recognition points
  • Built with the amazing Vite ecosystem

Made with ❀️ by @ronakmunjapara

Follow

About

FlashRead is a speed reading application that uses RSVP (Rapid Serial Visual Presentation) technology with ORP (Optimal Recognition Point) alignment. It displays words one at a time with the middle character highlighted on a fixed vertical center line, eliminating eye movement and enabling reading speeds of 300-1200+ WPM.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors