EduSyncc is an intelligent offline learning content optimizer a project made for LabLab.ai (Ai for connectivity Hackathon)
EduSyncc is an intelligent educational content management system that helps educators optimize content delivery through smart network management and curriculum alignment analysis. The application uses AI to analyze educational materials, match them with curriculum requirements, and intelligently schedule downloads based on network conditions.
- Create and manage structured curriculum content
- Define learning objectives and prerequisites
- Organize content by grade level and subject
- Track curriculum alignment and coverage
- AI-powered content analysis using Groq's LLaMA 3 model
- Automatic extraction of learning objectives
- Grade level and subject identification
- Curriculum alignment scoring
- Content priority assessment
- Support for multiple file formats:
- PDF documents
- Word documents (.doc, .docx)
- Text files
- Web content
- Google Drive links
- Real-time network speed monitoring
- Predictive network performance analysis
- Intelligent download scheduling
- Download queue prioritization
- Automatic retry mechanism for failed downloads
- Network usage optimization during peak hours
- Comprehensive content overview
- Network performance metrics
- Download status tracking
- Curriculum alignment visualization
- Resource optimization insights
- Python 3.11
- Streamlit
- SQLite3
- Groq API key
- Required Python packages (see requirements.txt)
- Clone the repository:
git clone https://github.com/abdullah-w-21/EduSyncc.git
cd EduSyncc
- Create and activate a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- Install required packages:
pip install -r requirements.txt
-
Set up your Groq API key:
- Create a
.streamlit/secrets.toml
file - Add your API key:
GROQ_API_KEY = "your-api-key-here"
- Create a
-
Initialize the database:
python -c "from app import init_db; init_db()"
- Start the Streamlit application:
streamlit run app.py
- Navigate to the different sections using the sidebar:
- Dashboard: Overview of system metrics and insights
- Curriculum Management: Set up and manage curriculum content
- Content Analysis: Upload and analyze educational materials
- Network Monitor: Track network performance and manage downloads
- Navigate to "Curriculum Management"
- Use the "Add New Curriculum Content" form to input:
- Grade Level
- Subject
- Topic
- Learning Objectives
- Prerequisites
- Click "Add to Curriculum" to save
- Go to "Content Analysis"
- Choose between:
- Upload files directly
- Provide content URLs
- The system will automatically:
- Extract content
- Analyze alignment with curriculum
- Generate learning objectives
- Schedule downloads if needed
- Access "Network Monitor"
- Features available:
- Run speed tests
- View network history
- Check download queue
- See network predictions
- Process download queue
MIN_DOWNLOAD_SPEED = 5.0 # Minimum acceptable speed in Mbps
PEAK_HOURS = range(9, 18) # 9 AM to 6 PM
PEAK_MIN_SPEED = 10.0 # Minimum speed during peak hours
The system uses SQLite with the following tables:
speed_tests
: Network performance datacontent_analysis
: Analyzed content informationdownload_schedule
: Download queue managementcurriculum
: Curriculum structure and requirements
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
The system uses Groq's LLaMA 3 model for content analysis with the following capabilities:
- Content summarization
- Learning objective extraction
- Grade level assessment
- Curriculum alignment scoring
- Priority calculation
The system implements a Random Forest model for network performance prediction:
- Features historical speed test data
- Accounts for time-of-day patterns
- Considers peak usage periods
- Adapts to changing network conditions
Supports multiple content sources and formats:
- Direct file uploads
- URL content extraction
- Google Drive integration
- PDF text extraction
- Word document processing
- Web content scraping
For support, please open an issue in the GitHub repository or contact the maintainers.