1.8 KiB
1.8 KiB
Slow Reader
A web-based reading tool that creates "meaningful friction" by automatically revealing text at an set pace, encouraging deeper engagement and preventing skimming.
Features
- Text reveals automatically
- Spacebar to pause, but no fast-forward button. Escape to exit
- Gentle highlighting through text with past words dimmed
- Customizable base WPM speed
- Three modes: text, PDF, URL parsing
Tech Stack
- Backend: Python with FastAPI, WebSockets for real-time text progression
- Frontend: Vue.js 3 with Vite
- Text Processing: NLTK
- Package Management: uv for Python dependencies
- Text parsing: Client-side parsing with
PDF.js
, URL content parsing withreadability-lxml
Quick Start
-
Install dependencies:
# Backend dependencies (using uv) uv sync # Frontend dependencies cd frontend && npm install
-
Start the application:
./start.sh
-
Open your browser: Navigate to
http://localhost:3000
Manual Startup
If you prefer to run servers separately:
Backend (Terminal 1):
cd backend
uv run uvicorn main:app --reload --host 0.0.0.0 --port 8000
Frontend (Terminal 2):
cd frontend
npm run dev
Usage
- Paste or type your text into the input area
- Adjust the base reading speed if desired (100-300 WPM)
- Click "Start Reading" to begin your mindful reading session
- Use Spacebar to pause/slow down when needed
- Press Escape to exit reading mode at any time
Development
- Linting: Run
uv run ruff check
for Python code linting - Format: Run
uv run ruff format
for Python code formatting - API Documentation: Visit
http://localhost:8000/docs
when backend is running
Future Plans :)
- Browser extension
- Content-type specific pacing
- Reading analytics and progress tracking