Skip to content

You are the teacher and the student. An LLM enriched learning platform for designing lesson plans for others or for yourself.

Notifications You must be signed in to change notification settings

darren277/autodidact

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

364 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Autodidact

You are the teacher and the student.

An LLM-enriched learning platform for designing lesson plans for others or for yourself. Built with Python, Flask, and OpenAI's GPT models.

A Note About Educational Principles

An important foundational goal for this project is to encourage critical thinking, metacognition, and epistemic humility.

Self-directed learning, especially with the aid of LLM tools, where they are known for "hallucinating" as a direct side effect of how token prediction works, requires extra care to ensure one does not succumb to overconfidence or confirmation bias.

Before contributing to this project, it is important to have some understanding of the following principles:

General Learning Theory

Learning theory and cognitive psychology are fundamental to building an effective educational platform.

The automated learning objective generator, for example, uses Bloom's Taxonomy to help define learning objectives for measuring different levels of understanding.

I hope to add more educational theory to the knowledge base in this project over time so that future features are aligned with them in mind.

πŸš€ Quick Start

Prerequisites

Installation

  1. Clone the repository

    git clone https://github.com/darren277/autodidact.git
    cd autodidact
  2. Set up environment

    # Create virtual environment
    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    
    # Install dependencies
    pip install -r requirements.txt
  3. Configure environment variables

    # Copy and edit the environment template
    cp env.example .env
    # Edit .env with your configuration
  4. Set up database

    python manage.py create_tables
    python manage.py seed_data  # Optional: add sample data
  5. Run the application

    make w  # Development mode
    # or
    python main.py

Visit http://localhost:5000 to access the application.

πŸ“š Documentation

πŸ—οΈ Architecture

Core Components

  • Flask Web Application - Main web interface
  • PostgreSQL Database - Data persistence
  • Redis - Caching and session management
  • OpenAI GPT - AI-powered learning assistance
  • AWS Cognito - User authentication (production)

Key Features

  • Course Management - Create and organize learning content
  • AI Assistant - Interactive learning companion
  • Note Taking - Multiple note formats (Cornell, Mind Map, etc.)
  • Progress Tracking - Monitor learning progress
  • Media Integration - Support for videos and annotations

πŸ› οΈ Development

Project Structure

autodidact/
β”œβ”€β”€ lib/                    # Core application logic
β”‚   β”œβ”€β”€ assistant/         # AI assistant functionality
β”‚   β”œβ”€β”€ apis/             # External API integrations
β”‚   └── tools/            # Utility tools
β”œβ”€β”€ models/               # Database models
β”œβ”€β”€ routes/               # Flask routes and endpoints
β”œβ”€β”€ templates/            # HTML templates
β”œβ”€β”€ static/              # CSS, JS, and media files
β”œβ”€β”€ k8s/                 # Kubernetes deployment files
└── tests/               # Test suite

Available Commands

Development

make w          # Run with Waitress (Windows-friendly)
make g          # Run with Gunicorn
python main.py  # Run directly with Flask

Database Management

python manage.py create_tables    # Create database tables
python manage.py drop_tables      # Drop all tables
python manage.py seed_data        # Add sample data
python manage.py show_tables      # Display table contents

Docker & Kubernetes

make docker-flask    # Build Docker image
make k8s-deploy      # Deploy to Kubernetes
make k8s-debug       # Debug Kubernetes deployment

πŸ”§ Configuration

Required Environment Variables

# Database
POSTGRES_HOST=localhost
POSTGRES_USER=autodidact_user
POSTGRES_PASS=your_password
POSTGRES_DB=autodidact

# Security
FLASK_APP_SECRET=your-secret-key
MASTER_ENCRYPTION_KEY=your-master-key

See Environment Variables for complete configuration options.

πŸš€ Deployment

Local Development

make w  # Start development server

Docker

docker build -t autodidact .
docker run -p 5000:5000 --env-file .env autodidact

Kubernetes (Production)

make k8s-deploy  # Deploy to Kubernetes cluster

See Deployment Guide for detailed deployment instructions.

πŸ§ͺ Testing

# Run all tests
python -m pytest tests/

# Run specific test files
python -m pytest tests/test_dashboard.py
python -m pytest tests/test_encryption.py

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Submit a pull request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ†˜ Support

  • Documentation: Check the docs folder for detailed guides
  • Issues: Report bugs and feature requests via GitHub Issues
  • Discussions: Use GitHub Discussions for questions and ideas

πŸ”— Related Projects

  • OpenProject Integration - Import courses from OpenProject
  • Google Calendar Integration - Schedule learning sessions
  • TTS Integration - Text-to-speech for accessibility

Note: This is an educational platform designed to enhance self-directed learning through AI assistance. The system supports both individual learners and educators creating content for others.

About

You are the teacher and the student. An LLM enriched learning platform for designing lesson plans for others or for yourself.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •