Skip to main content

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.

  1. Generate the Certificate: The repository includes a script to generate a self-signed certificate.

    python scripts/generate_cert.py

    This will create a certs directory with cert.pem and key.pem files.

  2. Run the Application: Start Personal-Guru as you normally would. The Flask server will automatically detect the certificate and start with HTTPS.

  3. 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:

  1. Run Personal-Guru: Start the Personal-Guru application on its default port (5002) without any SSL context.
  2. 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.
  3. 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.