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.
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:
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.
- Python 3.12+
- PostgreSQL 12+
- Redis 6+
OpenAI API Key(Optional - added viasettingspage from the app itself)- Get your API key from: https://platform.openai.com/api-keys
-
Clone the repository
git clone https://github.com/darren277/autodidact.git cd autodidact -
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
-
Configure environment variables
# Copy and edit the environment template cp env.example .env # Edit .env with your configuration
-
Set up database
python manage.py create_tables python manage.py seed_data # Optional: add sample data -
Run the application
make w # Development mode # or python main.py
Visit http://localhost:5000 to access the application.
- Setup Guide - Detailed setup instructions
- Deployment Guide - Production deployment (Kubernetes, Docker, etc.)
- Environment Variables - Complete environment variable reference
- Database Migration - Database schema and migration details
- Encryption Guide - Security and encryption implementation
- 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)
- 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
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
make w # Run with Waitress (Windows-friendly)
make g # Run with Gunicorn
python main.py # Run directly with Flaskpython 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 contentsmake docker-flask # Build Docker image
make k8s-deploy # Deploy to Kubernetes
make k8s-debug # Debug Kubernetes deployment# 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-keySee Environment Variables for complete configuration options.
make w # Start development serverdocker build -t autodidact .
docker run -p 5000:5000 --env-file .env autodidactmake k8s-deploy # Deploy to Kubernetes clusterSee Deployment Guide for detailed deployment instructions.
# 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- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- 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
- 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.