A comprehensive web-based reading application with translation, grammar explanation, vocabulary management, and advanced Bionic Reading features for enhanced learning.
- PDF & EPUB Support: Read both PDF and EPUB files seamlessly
- Table of Contents: Navigate through books with interactive TOC
- Page Navigation: Easy page turning and zoom controls
- Progress Tracking: Automatically saves your reading progress
- Real-time Translation: Instant Korean translation of selected text
- Grammar Explanation: Detailed grammar analysis with tense detection
- Vocabulary Management: Save and organize unknown words
- Context-aware Notes: Add annotations and highlights to any text
- Fixation Control: Adjust the number of bold characters (1-5)
- Saccade Adjustment: Control word spacing for optimal eye movement
- Opacity Settings: Fine-tune emphasis intensity (1-100%)
- Dual Modes: Choose between Letters or Syllables emphasis
- Flexible Application: Apply to entire document or selection only
- Secure Authentication: Private user accounts with encrypted passwords
- Personal Library: Upload and manage your book collection
- Reading Statistics: Track your learning progress over time
- Cross-device Sync: Access your books from any device
- Responsive Design: Works on desktop, tablet, and mobile
- Dark/Light Themes: Comfortable reading in any environment
- Intuitive Controls: Easy-to-use interface for all features
- Node.js (v14 or higher)
- npm or yarn
-
Clone the repository
git clone <repository-url> cd 002
-
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env # Edit .env and set your SESSION_SECRET -
Start the server
npm start
-
Open in browser
http://localhost:3000
Railway.app ๋ฐฐํฌ๋ ๋งค์ฐ ์ฝ์ต๋๋ค! ์๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ผํ์ธ์:
-
Railway ๊ณ์ ์์ฑ
- Railway.app์์ GitHub์ผ๋ก ๋ก๊ทธ์ธ
-
ํ๋ก์ ํธ ๋ฐฐํฌ
- "New Project" โ "Deploy from GitHub repo"
- ์ด ์ ์ฅ์ ์ ํ:
obmakesomething/002 - ๋ธ๋์น:
claude/pdf-reader-translator-011CUpbHwwWRm27xQSEgmgEh
-
ํ๊ฒฝ ๋ณ์ ์ค์ (์ค์!)
- Railway ๋์๋ณด๋์์ "Variables" ํด๋ฆญ
- ์ถ๊ฐํ ๋ณ์:
SESSION_SECRET=your-random-secret-key-here
- SESSION_SECRET ์์ฑ: RandomKeygen.com
-
๋ฐฐํฌ ์๋ฃ!
- ์๋์ผ๋ก ๋น๋ ๋ฐ ๋ฐฐํฌ ์์
- ๋ช ๋ถ ํ URL ํ์ธ:
https://your-app.up.railway.app
Railway ๋ฐฐํฌ ์์ธ ๊ฐ์ด๋๋ DEPLOY.md ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์:
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์
- ์ปค์คํ ๋๋ฉ์ธ ์ฐ๊ฒฐ
- ๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊ทธ ํ์ธ
- ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
- ๐ฐ ์ $5 ํฌ๋ ๋ง (์ฝ 500์๊ฐ)
- ๐พ 1 GB ๋์คํฌ
- ๐ ์๋ HTTPS
- ๐ GitHub push ์ ์๋ ์ฌ๋ฐฐํฌ
- Navigate to
http://localhost:3000/login.html - Register with a username and password
- Login to access your personal library
- Click the "Upload PDF/EPUB" button
- Select your PDF or EPUB file
- The book will appear in your library
- Select text to get instant translation and grammar explanation
- Click "Add to Vocabulary" to save important words
- Use the Table of Contents for easy navigation
- Adjust zoom and page controls as needed
- Click the "๐ง Bionic Reading" button in the header
- Toggle "Enable Bionic Reading" checkbox
- Adjust settings:
- Fixation: How many letters to emphasize
- Saccade: How often to emphasize words
- Opacity: How bold the emphasis appears
- Mode: Letters or Syllables
- Click "Apply Settings" to see changes
- View saved words in the Vocabulary panel
- Export your word list to JSON
- Review translations and grammar notes
- PDF.js - PDF rendering engine
- EPUB.js - EPUB reader
- Vanilla JavaScript - No framework dependencies
- Modern CSS - Responsive and beautiful UI
- Node.js & Express - Server framework
- SQLite - Lightweight database
- better-sqlite3 - Fast SQLite driver
- bcryptjs - Password encryption
- express-session - Session management
002/
โโโ public/ # Frontend files
โ โโโ index.html # Main reader interface
โ โโโ login.html # Login/register page
โ โโโ styles.css # All styles
โ โโโ app.js # Frontend logic
โโโ uploads/ # User-uploaded books
โโโ server.js # Express server
โโโ database.js # Database operations
โโโ package.json # Dependencies
โโโ .env.example # Environment template
โโโ .gitignore # Git ignore rules
โโโ README.md # This file
Create a .env file with:
PORT=3000
SESSION_SECRET=your-secret-key-here
The SQLite database (reader.db) is created automatically on first run. It stores:
- User accounts
- Book metadata
- Reading progress
- Vocabulary entries
- Notes and annotations
POST /api/register- Create new accountPOST /api/login- User loginPOST /api/logout- User logoutGET /api/auth/check- Check authentication status
POST /api/books/upload- Upload PDF/EPUBGET /api/books- Get user's book libraryGET /api/books/:id- Get specific bookDELETE /api/books/:id- Delete book
POST /api/vocabulary- Add new wordGET /api/vocabulary- Get all saved wordsDELETE /api/vocabulary/:id- Delete wordDELETE /api/vocabulary- Clear all words
POST /api/progress- Update reading progressGET /api/progress/:bookId- Get reading progressPOST /api/notes- Create annotationGET /api/notes/:bookId- Get book annotations
The Bionic Reading feature can be customized through the UI or programmatically:
bionicSettings = {
enabled: true,
fixation: 2, // 1-5 characters to emphasize
saccade: 1, // Word spacing (every N words)
opacity: 70, // Emphasis intensity (1-100%)
mode: 'letters', // 'letters' or 'syllables'
apply: 'all' // 'all' or 'selection'
};Contributions are welcome! Please feel free to submit issues and pull requests.
MIT License - Feel free to use this project for learning and development.
- PDF.js by Mozilla - PDF rendering
- EPUB.js by FuturePress - EPUB reading
- MyMemory Translation API - Free translation service
- Bionic Readingยฎ - Inspiration for the reading enhancement feature
If you encounter any issues or have questions:
- Check the browser console for error messages
- Ensure Node.js and all dependencies are installed
- Verify the database file has write permissions
- Check that port 3000 is available
- Text-to-speech functionality
- More translation language options
- Advanced NLP for better grammar analysis
- Flashcard generation from vocabulary
- Reading goals and achievements
- Book sharing and recommendations
- Mobile app versions (iOS/Android)
Built with โค๏ธ for language learners