Show HN: PageLM – Open-Source NotebookLM Alternative (React/Node/LangChain) PageLM, an open-source AI education platform developed by caviraOSS, converts study materials into interactive resources such as quizzes, flashcards, structured notes, and podcasts. Built with React, Node.js, and LangChain, it supports multiple LLM providers including Google Gemini, OpenAI GPT, Anthropic Claude, xAI Grok, MiniMax, Ollama, and OpenRouter, and is available on GitHub. 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