Never miss a deadline again. Upload your syllabus and let AI extract deadlines, create tasks, generate study materials, and auto-schedule prep sessionsβall in one place.
Features β’ Demo β’ Quick Start β’ Documentation β’ Contributing
Scheduly is an intelligent productivity calendar designed for students and professionals who want to stay organized without the manual effort. Built with FastAPI and React, it leverages AI to automate deadline management and study planning.
- π For Students: Upload course syllabi and automatically extract all assignments, exams, and deadlines
- π For Everyone: Smart scheduling that actually understands your workload and availability
| Feature | Description |
|---|---|
| π€ AI-Powered Extraction | Advanced 4-agent CrewAI pipeline parses even poorly-formatted syllabi |
| ποΈ Intelligent Scheduling | Automatically schedules prep sessions while avoiding conflicts |
| π Full Flexibility | Allows for manual editing and addition of deadlines |
| π Workload Analysis | Real-time feasibility checking and time management insights |
| π Privacy-First | Your data stays yoursβsecure JWT authentication and user isolation |
- Upload any format: PDF, TXT, or DOCX syllabi
- Advanced AI extraction: Uses a 4-agent CrewAI pipeline to intelligently parse course schedules
- Automatic task creation: Extracts assignments, exams, quizzes, projects, and deadlines
- Workload estimation: AI estimates study hours needed for each task
- Assessment breakdown: Analyzes grading components and course structure
- Handles messy formats: Works with poorly formatted PDFs and broken tables
- Comprehensive task tracking: Assignments, exams, interviews, readings, projects
- Priority levels: High, medium, low with visual indicators
- Completion tracking: Check off tasks and track progress
- Time estimation: AI suggests prep time needed for each task
- Filter & sort: View all, active only, or completed tasks
- Quick actions: Edit, delete, or mark complete with one click
- Visual calendar views: Day, week, and month views
- Drag-and-drop: Move events by dragging them to new times
- Color-coded events: Distinguish at a glance
- π΅ Meetings & Classes
- π Interviews
- π΄ Exams & Deadlines
- π£ Prep Sessions
- Quick event creation: Click any time slot to add events
- Automatic event linking: Tasks automatically create calendar events
- Auto-schedule prep sessions: Automatically creates study blocks before deadlines
- Conflict detection: Avoids scheduling over existing events
- Optimal time distribution: Spreads prep time intelligently
- Urgency awareness: More sessions closer to deadlines
- Workload analysis:
- See total prep hours needed
- Calculate free vs. busy time
- Get feasibility warnings if overloaded
- Track time utilization percentage
- Schedule overview: View next 7, 14, or 30 days at a glance
- Google Calendar sync: Import events from Google Calendar
- Outlook Calendar sync: Import events from Microsoft Outlook
- Gmail scanning: Extract deadlines from emails automatically
- Two-way sync: Changes reflect in both systems
- JWT authentication: Secure, stateless user authentication
- Password encryption: Bcrypt hashing for password security
- User data isolation: Your data stays completely private
- OAuth support: Secure integration with Google and Microsoft
|
Backend
|
Frontend
|
Screen.Recording.2025-12-09.at.4.38.33.PM.mov
See how easy it is to upload a syllabus, extract deadlines, and manage your schedule with AI.
Use the demo account to explore all features:
- Email:
demo@example.com - Password:
demo123
Prerequisites: Python 3.10+, Node.js 16+, and an OpenAI API key
git clone https://github.com/Kenza-R/AI_Calendar.git
cd AI_Calendar# Navigate to backend directory
cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Create environment file
cp .env.example .envEdit .env and add your OpenAI API key:
OPENAI_API_KEY=your-openai-api-key-here
SECRET_KEY=your-random-secret-key# Initialize database with demo data
python scripts/seed_data.py
# Start the backend server
python main.pyβ
Backend running at http://localhost:8000
π API Docs at http://localhost:8000/docs
# Navigate to frontend directory
cd frontend
# Install dependencies
npm install
# Start development server
npm run devβ
Frontend running at http://localhost:5173
Open http://localhost:5173 and login with:
- Email:
demo@example.com - Password:
demo123
π Upload a Syllabus
- Navigate to π Upload Syllabus tab
- Select your syllabus file (PDF, TXT, or DOCX)
- Click Upload & Extract
- AI automatically extracts all deadlines and creates tasks
- Review extracted tasks in the β Tasks tab
β Manage Tasks
- Navigate to β Tasks tab
- Click + New Task to create a task manually
- Set priority level and task type
- Add deadline and estimated study hours
- Click any task to view/edit details
- Check off tasks when complete
π Auto-Schedule Study Sessions
- Open any task with a deadline
- Click Schedule Prep Sessions
- AI creates optimal study blocks that:
- β Avoid conflicts with existing events
- β° Distribute time intelligently
- π₯ Prioritize urgent deadlines
- View scheduled prep sessions in your calendar
ποΈ Use the Calendar
- Navigate to π Calendar tab
- Switch between Day, Week, or Month view
- Drag and drop events to reschedule
- Click events to view/edit details
- Events are color-coded by type for quick scanning
π Check Schedule Overview
- Navigate to π Overview tab
- See all upcoming deadlines at a glance
- Review workload analysis:
- π Total prep hours needed
- β³ Free time available
β οΈ Feasibility warnings- π Time utilization percentage
Scheduly needs an OpenAI API key for AI features:
- Sign up at platform.openai.com
- Create an API key
- Add to
.env:OPENAI_API_KEY=sk-...
For calendar sync and email scanning:
- Create project in Google Cloud Console
- Enable Google Calendar API and Gmail API
- Create OAuth 2.0 credentials
- Add to
.env:
GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secretFor Outlook calendar sync:
- Register app in Azure Portal
- Configure Microsoft Graph API permissions
- Add to
.env:
MICROSOFT_CLIENT_ID=your-client-id
MICROSOFT_CLIENT_SECRET=your-client-secretAI_Calendar/
βββ backend/
β βββ app/
β β βββ models/ # SQLAlchemy database models
β β βββ routers/ # FastAPI route handlers
β β βββ services/ # Business logic layer
β β βββ schemas/ # Pydantic validation schemas
β β βββ utils/ # Helper functions & AI services
β βββ scripts/ # Database seeding & utilities
β βββ main.py # Application entry point
β βββ requirements.txt # Python dependencies
β
βββ frontend/
β βββ src/
β β βββ components/ # Reusable React components
β β βββ pages/ # Page-level components
β β βββ services/ # API client services
β β βββ context/ # React context providers
β βββ package.json # Node dependencies
β βββ vite.config.js # Vite build configuration
β
βββ docs/ # Extended documentation
- API Documentation - Interactive Swagger UI (when running)
- Setup Guide - Detailed installation instructions
- Features Overview - Complete feature documentation
- Deployment Guide - Production deployment
"No module named 'crewai'"
# Make sure you're using Python 3.10+
python --version
pip install crewai crewai-toolsDatabase errors:
# Reset database
rm backend/ai_calendar.db
python backend/scripts/seed_data.pyOpenAI API errors:
- Check your API key is correct in
.env - Verify you have API credits available
- App works with limited features without API key
Port already in use:
# Kill process on port 5173
lsof -ti:5173 | xargs kill -9
npm run devModule not found:
# Clean install
rm -rf node_modules package-lock.json
npm install"Upload not working"
- Check file format (PDF, TXT, or DOCX only)
- Ensure file size is reasonable (<10MB)
- Check backend console for detailed errors
"Calendar events not syncing"
- OAuth credentials must be configured
- Check token expiration in database
- Re-authenticate if needed
View All Endpoints
Full interactive documentation available at http://localhost:8000/docs
| Method | Endpoint | Description |
|---|---|---|
POST |
/auth/register |
Register new user |
POST |
/auth/login |
Login and receive JWT token |
GET |
/auth/me |
Get current user info |
| Method | Endpoint | Description |
|---|---|---|
GET |
/tasks/ |
List all tasks with optional filters |
POST |
/tasks/ |
Create task (auto-generates prep material) |
GET |
/tasks/{id} |
Get task details |
PUT |
/tasks/{id} |
Update task |
DELETE |
/tasks/{id} |
Delete task |
POST |
/tasks/{id}/schedule |
Auto-schedule prep sessions |
POST |
/tasks/{id}/regenerate-prep |
Regenerate prep materials |
| Method | Endpoint | Description |
|---|---|---|
GET |
/events/ |
List all calendar events |
POST |
/events/ |
Create new event |
PUT |
/events/{id} |
Update event |
DELETE |
/events/{id} |
Delete event |
| Method | Endpoint | Description |
|---|---|---|
POST |
/documents/upload-syllabus-crewai |
Upload syllabus (4-agent AI) |
POST |
/documents/extract-assessments |
Extract grading breakdown |
GET |
/documents/ |
List uploaded documents |
GET |
/documents/{id} |
Get document details |
| Method | Endpoint | Description |
|---|---|---|
POST |
/calendar/sync/google |
Sync Google Calendar |
POST |
/calendar/sync/gmail |
Scan Gmail for deadlines |
POST |
/calendar/sync/outlook |
Sync Outlook Calendar |
GET |
/calendar/schedule-overview |
Get workload analysis |
CrewAI 4-Agent Pipeline
Scheduly uses a sophisticated multi-agent AI system for parsing syllabi:
Syllabus Upload β [Segmentation Agent] β [Parsing Agent] β [Workload Agent] β [Deadline Agent] β Tasks Created
- Segmentation Agent - Breaks syllabus into structured blocks
- Parsing Agent - Extracts dates, assignments, and requirements
- Workload Agent - Estimates study hours needed
- Deadline Agent - Creates complete task objects with metadata
This pipeline handles poorly formatted PDFs, broken tables, and complex schedules that traditional parsers fail on.
Intelligent Scheduling Algorithm
When you click "Schedule Prep Sessions", Scheduly:
- β Analyzes your calendar for existing events and commitments
- π― Calculates optimal distribution based on deadline urgency
- β° Creates time blocks (1-3 hours for maximum productivity)
- π« Avoids conflicts by checking all existing events
- π Reschedules automatically if conflicts are found
- π Validates feasibility and warns if you're overbooked
Workload Analysis Engine
The Schedule Overview provides real-time insights:
| Metric | Calculation |
|---|---|
| Prep Hours Needed | Sum of estimated hours for all incomplete tasks |
| Free Time | Total available hours - scheduled events |
| Utilization % | (Busy hours / Total hours) Γ 100 |
| Feasibility | β
Green if free time > prep needed, |
Deploy to Render.com (Recommended)
Scheduly includes render.yaml for easy deployment:
- Fork/push repository to GitHub
- Create a Render account
- Connect your repository
- Add environment variables:
OPENAI_API_KEYSECRET_KEY
- Click "Deploy"! π
Deploy with Docker
# Build the image
docker build -t scheduly .
# Run the container
docker run -p 8000:8000 -p 5173:5173 \
-e OPENAI_API_KEY=your-key \
-e SECRET_KEY=your-secret \
schedulyManual Deployment
Backend:
cd backend
pip install gunicorn
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000Frontend:
cd frontend
npm run build
# Serve dist/ folder with nginx, Apache, or CDNWe welcome contributions from the community! Here's how you can help:
- π Report Bugs: Open an issue with reproduction steps
- π‘ Suggest Features: Share your ideas for improvements
- π Improve Documentation: Fix typos, add examples, clarify instructions
- π§ Submit PRs: Fix bugs or implement new features
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Write/update tests if applicable
- Commit with clear messages (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Backend: Follow PEP 8 guidelines
- Frontend: Use ESLint configuration provided
- Commits: Use clear, descriptive commit messages
Setting Up Development Environment
# Backend
cd backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install pytest black flake8 # dev dependencies
# Frontend
cd frontend
npm install
npm run dev
# Run tests
cd backend && pytest
cd frontend && npm testGetting the Most Out of Scheduly
- β Upload syllabi at the start of each semester
- β Review AI-extracted dates for accuracy
- β Set realistic time estimates for better scheduling
- β Use high/medium/low priorities effectively
- β Check Schedule Overview weekly for workload insights
- ποΈ Arrow Keys: Navigate between dates
- ποΈ Drag & Drop: Quickly reschedule events
- ποΈ Double Click: Create events fast
- ποΈ ESC: Close modals
This project is licensed under the ISC License - see the LICENSE file for details.
Built with incredible open-source tools:
- FastAPI - Modern Python web framework
- React - JavaScript UI library
- OpenAI - GPT-4 language models
- CrewAI - Multi-agent AI orchestration
- FullCalendar - Feature-rich calendar component
- π Documentation - Comprehensive guides and tutorials
- π Issue Tracker - Report bugs or request features
- π¬ Discussions - Ask questions and share ideas
- Mobile app (iOS & Android)
- Collaborative features (shared calendars)
- More calendar integrations (iCal, Apple Calendar)
- Voice input for task creation
- Browser extension for quick capture
- Advanced analytics dashboard
- Custom AI model fine-tuning
- Recurring tasks and events
Vote on features or suggest new ones in Discussions!
Made with β€οΈ for students and professionals who want to stay organized and prepared.