A minimalist AI-powered EPUB reader for the Gen Z generation
Features β’ Installation β’ Usage β’ Tech Stack β’ Contributing
- EPUB Support: Import and read EPUB books seamlessly
- Progress Tracking: Visual progress bars for each book
- Customizable Themes: Light, Dark, and Sepia reading modes
- Font Customization: Adjust font size (80-200%) for comfortable reading
- Bookmarks: Save important pages for quick access
- Hinglish Translation: Translate English text to conversational Hinglish (Roman script)
- Hindi Translation: Translate to modern, everyday Hindi (Devanagari)
- Multi-Provider Support:
- OpenAI (GPT-3.5)
- Google Gemini (2.0 Flash)
- DeepSeek
- Groq (Free)
- Grok
- Custom API endpoints
- BYOK (Bring Your Own Key): Use your own API keys for privacy and control
- Smart Translation: Focuses on simple, daily conversation language
- Dark Mode: Full app-wide dark theme support
- System Theme: Automatically adapts to device theme
- Minimalist Design: Clean, distraction-free reading interface
- Responsive Layout: Optimized for various screen sizes
- Text Selection: Select text to translate, copy, or share
- Quote Sharing: Create beautiful quote cards to share on social media
- Draggable AI Box: Movable translation overlay for convenience
- Copy to Clipboard: Quick copy functionality for selected text
- Book Import: Easy EPUB file import from device storage
- Book Deletion: Long-press to delete books (with confirmation)
- Reading Progress: Track completion percentage for each book
- Last Read Tracking: See when you last opened each book
- Node.js (v18 or higher)
- npm or yarn
- Expo CLI (
npm install -g expo-cli) - EAS CLI (
npm install -g eas-cli) for building
- Clone the repository
git clone https://github.com/sahiljaggarwal/genz-reader.git
cd genz-reader- Install dependencies
npm install- Start the development server
npx expo start- Run on device/emulator
- Press
afor Android - Press
ifor iOS - Scan QR code with Expo Go app
eas build --platform android --profile previeweas build --platform android --profile productioneas build --platform ios --profile production- Tap the + icon in the header
- Select an EPUB file from your device
- Book will be added to your library automatically
- Tap on any book card to open it
- Swipe or tap to navigate pages
- Your progress is saved automatically
- Select any text while reading
- Choose Hinglish or Hindi from the menu
- Translation appears in a draggable box
- Tap outside or close button to dismiss
- Go to Settings (gear icon)
- Select your preferred AI provider
- Enter your API key
- Choose language mode (Hinglish/Hindi)
- Open Settings
- Adjust:
- Reading theme (Light/Sepia/Dark)
- Font size (80-200%)
- App theme (Light/Dark/System)
- React Native (0.81.5) - Mobile framework
- Expo (~54.0) - Development platform
- TypeScript (~5.9) - Type safety
- Expo Router (~6.0) - File-based routing
- Zustand (^5.0) - Lightweight state management
- AsyncStorage (2.2.0) - Local data persistence
- Expo File System - EPUB file management
- Lucide React Native - Icon library
- React Native WebView - EPUB rendering
- React Native View Shot - Quote card generation
- OpenAI API
- Google Gemini API
- DeepSeek API
- Groq API
- Grok API
genz-reader/
βββ app/ # Expo Router pages
β βββ index.tsx # Home screen (library)
β βββ reader/[id].tsx # EPUB reader
β βββ settings.tsx # Settings screen
β βββ about.tsx # About screen
βββ components/ # Reusable components
β βββ reader/ # Reader-specific components
β βββ SelectionMenu.tsx
β βββ DraggableAIBox.tsx
β βββ QuoteShareModal.tsx
βββ services/ # Business logic
β βββ ai/ # AI translation services
β βββ storage/ # Local storage utilities
βββ stores/ # Zustand state stores
β βββ useBookStore.ts
β βββ useSettingsStore.ts
βββ types/ # TypeScript type definitions
βββ assets/ # Images and fonts
- Uses simple, daily conversation language
- Keeps common English words (tired, happy, sad, etc.)
- Avoids heavy/literary Hindi words
- Targets 15-year-old comprehension level
- Allows Indian cultural references (cricket, Bollywood)
- Modern, everyday Hindi (Devanagari script)
- Avoids Sanskrit-heavy or literary Hindi
- Writes common English words in Hindi style
- Simple and clear sentences
-
OpenAI
- Get API key from platform.openai.com
- Model:
gpt-3.5-turbo
-
Google Gemini
- Get API key from ai.google.dev
- Model:
gemini-2.0-flash(fallback:gemini-pro)
-
DeepSeek
- Get API key from platform.deepseek.com
- Model:
deepseek-chat
-
Groq (Free)
- Get API key from console.groq.com
- Model:
llama-3.3-70b-versatile
-
Grok
- Get API key from x.ai
- Model:
grok-beta
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Sahil Jaggarwal
- Twitter: @sahiljaggarwal
- GitHub: @sahiljaggarwal
- Email: sahiljaggrwal@gmail.com
- Built with β€οΈ in India
- Powered by Expo and React Native
- AI translation by OpenAI, Google Gemini, and others
- Icons by Lucide
Add screenshots here to showcase your app
- Highlight and annotation support
- Cloud sync for reading progress
- PDF support
- Text-to-speech
- Reading statistics and insights
- Book recommendations
- Social features (reading clubs)
If you find this project helpful, please give it a βοΈ!
Made with π and β by Sahil Jaggarwal