Getting Started
This is a Flask-based web application that serves as a proof-of-concept for a personalized learning tool. It uses a multi-agent AI system to create an interactive learning experience tailored to the user's chosen topic.
Features
- User Accounts: Secure sign-up, login, and profile management.
- Topic Isolation: Each user has their own private learning materials and topics.
- Dynamic Study Plans: Enter any topic and receive a custom, step-by-step study plan.
- Detailed Study Content: Each step in the study plan now includes detailed content.
- Interactive Learning: Progress through the plan one step at a time.
- Text-to-Speech: Listen to each learning step with integrated TTS audio.
- Knowledge Assessment: Answer multiple-choice questions after each step to test your understanding.
- Personalized Background: Set your own background (e.g., "I am a beginner") to tailor the learning content to your level.
- Adaptive Learning: The study plan adapts to your performance on the "Check Your Understanding" questions.
- Q&A Chat: Ask questions about the study material and get answers from an AI assistant.
- Background Database Viewer: Admin tool to view, sort, and manage database records (with bulk delete).
- Instant Feedback: Receive immediate feedback on your answers.
- Local AI Integration: Designed to connect with locally-hosted AI services (LLM, TTS) for privacy and control.
- Export to Markdown: At the end of a course, you can export the entire study plan and content to a markdown file, perfect for importing into note-taking apps like Notion, Obsidian, or NotebookLM.
- Reel Mode: A TikTok/Reel-style interface for browsing educational short videos.
- Comprehensive Test Suite: Includes a full suite of unit tests to verify application logic.
Enabling HTTPS for Microphone Access, reels and other security features
Modern web browsers require a secure (HTTPS) connection to allow web pages to access the microphone, and to enable reels mode.
Method A: Self-Signed Certificate (for Local Development)
This is the simplest way to enable HTTPS for local testing.
-
Generate the Certificate: The repository includes a script to generate a self-signed certificate.
python scripts/generate_cert.pyThis will create a
certsdirectory withcert.pemandkey.pemfiles. -
Run the Application: Start Personal-Guru as you normally would. The Flask server will automatically detect the certificate and start with HTTPS.
-
Trust the Certificate in Your Browser: When you navigate to
https://localhost:5002, your browser will show a privacy warning. You must accept the risk to proceed.
Method B: Reverse Proxy (for Production)
Using a reverse proxy like Nginx or Caddy is the standard way to handle HTTPS in a production environment. The reverse proxy manages the SSL certificates (e.g., from Let's Encrypt) and forwards traffic to the Personal-Guru application, which can run on standard HTTP.
General Steps:
- Run Personal-Guru: Start the Personal-Guru application on its default port (
5002) without any SSL context. - Set Up Reverse Proxy:
- Configure your reverse proxy (e.g., Nginx Proxy Manager, Caddy) to create a new proxy host.
- Domain: Your public domain (e.g.,
personal-guru.your-domain.com). - Scheme:
http. - Forward Hostname/IP: The IP address of the machine running Personal-Guru.
- Forward Port:
5002. - Enable WebSocket Support: This is critical for the voice communication to work.
- Enable SSL:
- In your reverse proxy's SSL settings, request a new SSL certificate (e.g., using Let's Encrypt).
- Enable "Force SSL" and "HTTP/2 Support".
After saving, you can access Personal-Guru securely at your public domain.