# PageLM
**An open source AI powered education platform that transforms study materials into interactive learning experiences, slightly inspired by NotebookLM**
[Report Bug](https://github.com/caviraOSS/pagelm/issues) β’ [Request Feature](https://github.com/caviraOSS/pagelm/issues) β’ [Discord server](https://discord.gg/P7HaRayqTh)
## Demo
https://github.com/user-attachments/assets/98fae4ef-c2b7-4ad2-bfe9-1e0665eb4d71
> **Note**: If the video doesn't load above, you can [download the demo video directly](.github/demo.mp4)
---
## π Features
PageLM converts study material into **interactive resources** including quizzes, flashcards, structured notes, and podcasts.
The platform provides a modern interface for students, educators, and researchers to **enhance learning efficiency** using state-of-the-art LLMs and TTS systems.
### Learning Tools
- **Contextual Chat** β Ask questions about uploaded documents (PDF, DOCX, Markdown, TXT)
- **SmartNotes** β Generate Cornell-style notes automatically from topics or uploaded content
- **Flashcards** β Extract non-overlapping flashcards for spaced repetition
- **Quizzes** β Create interactive quizzes with hints, explanations, and scoring
- **AI Podcast** β Convert notes and topics into engaging audio content for learning on the go
- **Voice Transcribe** - Convert lecture recordings and voice notes into organized, searchable study materials instantly.
- **Homework Planner** - Plans your Homework Smartly using AI, Assists if your stuck.
- **ExamLab** - Simulate any exam, get feedback, and be prepared for the exam
- **Debate** - Debate with AI to improve your Debate skills.
- **Study Companion** - A personalised AI Companion that assists you.
### Supported AI Models
- Google Gemini β’ OpenAI GPT β’ Anthropic Claude β’ xAI Grok β’ [MiniMax](https://www.minimax.io/) β’ [API Route](https://www.api-route.com) β’ Ollama (local) β’ OpenRouter β’ [Requesty](https://requesty.ai) β’ [Cheaper Inference](https://cheaperinference.com) β’ [Atlas Cloud](https://atlascloud.ai) β’ [Opper](https://opper.ai) β’ [LiteLLM](https://docs.litellm.ai/docs/simple_proxy) (self-hosted gateway)
### Embedding Providers
- OpenAI β’ Gemini β’ Ollama
### Technical Highlights
- WebSocket streaming for real-time chat, notes, and podcast generation
- JSON or vector database support for embeddings and retrieval
- File-based persistent storage for generated content
- Markdown-based outputs for structured answers and notes
- Configurable multi-provider setup for LLMs and TTS engines
---
## π οΈ Technology Stack
| Component | Technology |
| -------------- | ---------------------------------------- |
| **Backend** | Node.js, TypeScript, LangChain, Langraph |
| **Frontend** | Vite, React, TailwindCSS |
| **Database** | JSON (default), optional vector DB |
| **AI/ML** | Multiple LLM providers, embeddings |
| **Audio** | Edge TTS, ElevenLabs, Google TTS, Speech SDK (OpenAI, Cartesia, Hume, MiniMax + 10 more), ModelBest VoxCPM |
| **Deployment** | Docker, Docker Compose |
| **Docs** | pdf-lib, mammoth, pdf-parse |
---
## β‘ Getting Started
### Prerequisites
- Node.js v21.18+
- npm or pnpm
- ffmpeg (required for podcast audio)
- Docker (optional)
### Local Development
```bash
# Clone the repository
git clone https://github.com/caviraOSS/pagelm.git
cd pagelm
# Linux:
chmod 777 ./setup.sh
./setup.sh
# Windows:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
./setup.ps1
# Manual (Both Linux/Windows):
# Install dependencies
cd backend
npm install
cd ../frontend
npm install
# Setup environment
cd ..
npm i -g nodemon
cp .env.example .env
# Make sure to configure API keys and settings in .env
# Run these two commands in separate terminals but inside the project directory.
# Run backend
cd backend
npm run dev
# Run frontend
cd frontend
npm run dev
```
π Access at: **http://localhost:5173**
### Docker Deployment
```bash
# Development
docker compose up --build
# Production
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build
```
- Frontend: http://localhost:5173 (dev) / http://localhost:8080 (prod)
- Backend: http://localhost:5000
---
## βοΈ Configuration
All configuration is handled via environment variables:
- **LLM Provider** β Choose your model backend
- **TTS Engine** β Select speech service for podcasts
- **Database Backend** β JSON or vector DB
- **File Upload Limits** β Customize size/format limits
See `.env.example` for all options.
For ModelBest VoxCPM podcasts, set `TTS_PROVIDER=voxcpm`, `VOXCPM_API_KEY`, and optionally `VOXCPM_MODEL` and `VOXCPM_BASE_URL`. The default model is `VoxCPM2`. This integration uses VoxCPM's default voice; reference-audio cloning is not included yet.
---
## π₯ Community
Join our [Discord](https://discord.gg/P7HaRayqTh) community to connect, share ideas, and take part in exciting discussions!
---
## π€ Contributing
We welcome all contributions.
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/new-feature`)
3. Commit changes (`git commit -m "Add feature"`)
4. Push (`git push origin feature/new-feature`)
5. Open a Pull Request
**Guidelines:**
- Follow code style and conventions
- Add tests where needed
- Update docs for new features
- Ensure all tests pass before PR
---
## π‘ Areas to Contribute
- AI model integrations
- Mobile app support
- Performance improvements
- Accessibility features
- Docs & tutorials
---
## π Support the Project
If you find PageLM useful, please consider supporting:
**Ethereum (ERC-20)**:
```
0x5a12e3f48b6d761a120bc3cd0977e208c362a74e
```
Your support helps fund ongoing development and hosting.
---
## π License
Licensed under the **CaviraOSS Community License**.
Free to use, share, and modify for personal and educational purposes.
Commercial use or resale requires prior written permission from CaviraOSS.
See [LICENSE](LICENSE.md) for full terms.
---
**Built with β€οΈ by CaviraOSS and contributors**
β Star us on [GitHub](https://github.com/CaviraOSS/pagelm) if this project helps you!