A modern, distraction-free web reader featuring high-quality text-to-speech synthesis and a Kindle-inspired interface, built with React, Bun, and TypeScript.
🚀 Live Demo: https://flow-read-app.onrender.com/
- Monorepo Manager: pnpm workspaces
- Backend: Bun (Fast JavaScript runtime)
- Frontend: React + Vite
- Shared: Shared utility library
- Architecture: Domain-Driven Design (DDD) / Clean Architecture principles
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- pnpm (v8 or higher) - Used for package management
- Bun (v1.0 or higher) - Required for the backend runtime
-
Install Dependencies
pnpm install
-
Run Development Server Start both backend (watch mode) and frontend (HMR) in parallel:
pnpm dev
- Frontend:
http://localhost:5173 - Backend:
http://localhost:3000
- Frontend:
Build and run the optimized production application (Backend on port 4000):
pnpm clean:all
pnpm build
pnpm prodRun unit tests across all packages:
pnpm test- Clean Artifacts (
dist,coverage):pnpm clean:all
- Full Reset (Nuke
node_modulesand artifacts):pnpm nuke
├── packages/
│ ├── backend/ # Bun HTTP Server (Clean Arch)
│ ├── frontend/ # React + Vite Application
│ └── shared/ # Shared Types & Utilities
├── package.json # Root scripts
└── pnpm-workspace.yaml
- Backend Port: Configurable via
PORTenv var (Default: 3000, Prod: 4000). - Frontend API URL: Configurable via
VITE_API_URL.
