The Ultimate Reading Companion — Seamless, Immersive, Intelligent.
HyperText is designed for readers who refuse to be interrupted. Whether you're diving into a novel or a technical document, HyperText provides a fluid, distraction-free environment with powerful AI-assisted tools at your fingertips.
Listen to your books with human-like intonation while you follow along—perfect for multitasking or auditory learners.
Never lose your flow over an unfamiliar word.
- Zero Latency: Click any word to get its meaning instantly.
- Context-Aware: Powered by Google Gemini AI, definitions are intelligently tailored to the sentence context.
- Seamless UI: Definitions appear in a non-intrusive sidebar, keeping your reading focus sharp.
Upload and read your favorite content in multiple formats:
- EPUB — Full support with chapter navigation.
- PDF — High-fidelity rendering for documents.
- Plain Text — For quick notes or drafts.
- Securely authenticate with Email/Password or Google Sign-In.
- Your reading history and library are synced to the cloud.
- Access your books from any device.
Pick up right where you left off. HyperText tracks your reading sessions and lets you resume with a single click.
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS 4 |
| AI | Google Gemini AI (via @google/genai) |
| Auth & DB | Supabase |
| Animations | Framer Motion |
| Icons | Lucide React |
| EPUB | epub.js |
| react-pdf |
- Node.js v18 or higher
- A Supabase project (for auth & database)
- A Google AI API key (for Gemini)
-
Clone the repository:
git clone https://github.com/nawaaaaaAaar/hypertext.git cd hypertext -
Install dependencies:
npm install
-
Configure environment variables: Create a
.env.localfile in the root directory:# Supabase NEXT_PUBLIC_SUPABASE_URL=your_supabase_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key # Google Gemini AI GOOGLE_API_KEY=your_google_api_key # Optional: Add more keys for rate-limit round-robin # GEMINI_API_KEY_1=... # GEMINI_API_KEY_2=...
-
Run the development server:
npm run dev
-
Open your browser: Navigate to http://localhost:3000 and start reading!
hypertext/
├── src/
│ ├── app/ # Next.js App Router pages
│ │ ├── page.tsx # Home / Upload page
│ │ ├── read/ # Reading view
│ │ ├── library/ # User's saved books
│ │ └── auth/ # Authentication callbacks
│ ├── components/ # Reusable UI components
│ │ ├── EPUBViewer.tsx
│ │ ├── PDFViewer.tsx
│ │ ├── ContextSidebar.tsx # Word definitions panel
│ │ └── HistoryPanel.tsx
│ └── lib/ # Utilities & API clients
│ ├── gemini.ts # Gemini AI API wrapper
│ ├── supabase.ts # Supabase client
│ └── apiKeyManager.ts # Key rotation for rate limits
├── public/ # Static assets
└── package.json
We love contributions! Whether it's fixing a bug, improving documentation, or adding a new feature, your help is welcome.
- Fork the repository.
- Create a feature branch (
git checkout -b feature/amazing-feature). - Commit your changes (
git commit -m 'Add amazing feature'). - Push to the branch (
git push origin feature/amazing-feature). - Open a Pull Request.
Distributed under the MIT License. See LICENSE for more information.
Made with ❤️ for readers who value flow.