# Show HN: PageLM – Open-Source NotebookLM Alternative (React/Node/LangChain)

> Source: <https://github.com/CaviraOSS/PageLM>
> Published: 2026-08-17 15:25:23+00:00

**An open source AI powered education platform that transforms study materials into interactive learning experiences, slightly inspired by NotebookLM**

## demo.mp4

Note: If the video doesn't load above, you can[download the demo video directly]

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.

**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.

- Google Gemini • OpenAI GPT • Anthropic Claude • xAI Grok •
[MiniMax](https://www.minimax.io/)• Ollama (local) • OpenRouter

- OpenAI • Gemini • Ollama

- 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

| 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) |
Deployment |
Docker, Docker Compose |
Docs |
pdf-lib, mammoth, pdf-parse |

- Node.js v21.18+
- npm or pnpm
- ffmpeg (required for podcast audio)
- Docker (optional)

```
# 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](http://localhost:5173)

```
# Development
docker compose up --build

# Production
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build
```

- Frontend:
[http://localhost:5173](http://localhost:5173)(dev) /[http://localhost:8080](http://localhost:8080)(prod) - Backend:
[http://localhost:5000](http://localhost:5000)

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.

Join our [Discord](https://discord.gg/P7HaRayqTh) community to connect, share ideas, and take part in exciting discussions!

We welcome all contributions.

- Fork the repository
- Create a feature branch (
`git checkout -b feature/new-feature`

) - Commit changes (
`git commit -m "Add feature"`

) - Push (
`git push origin feature/new-feature`

) - 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

- AI model integrations
- Mobile app support
- Performance improvements
- Accessibility features
- Docs & tutorials

If you find PageLM useful, please consider supporting:

**Ethereum (ERC-20)**:

```
0x5a12e3f48b6d761a120bc3cd0977e208c362a74e
```

Your support helps fund ongoing development and hosting.

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](/CaviraOSS/PageLM/blob/main/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!
