A web application that helps students create personalized study plans by balancing assignment deadlines, task difficulty, and their own productivity habits. It reduces stress and helps students work more efficiently to stay on top of their coursework by optimizing time management.
- User Authentication: Secure login and registration with email/password
- Course Management: Add, edit, and delete courses
- Assignment Tracking: Manage assignments with due dates, difficulty levels, and estimated hours
- Availability Scheduling: Set your preferred study times and availability
- Smart Schedule Generation: AI-powered algorithm that creates optimized study schedules
- Progress Tracking: Mark study sessions as completed and track progress
- Modern UI: Beautiful, responsive interface built with Material-UI
- FastAPI: Modern, fast web framework for building APIs
- PostgreSQL: Reliable relational database
- SQLAlchemy: Python SQL toolkit and ORM
- Alembic: Database migration tool
- FastAPI Users: Authentication and user management
- scikit-learn: Machine learning for schedule optimization
- Celery: Task queue for notifications and reminders
- React: Modern JavaScript library for building user interfaces
- TypeScript: Type-safe JavaScript for reduced bugs and better development experience
- Material-UI: React components implementing Google's Material Design
- React Query: Data fetching and caching with optimistic updates
- React Hook Form: Form handling with validation using Yup schemas
- React Router: Client-side routing with protected routes
- React Testing Library: Comprehensive testing framework for user interactions
- Jest: JavaScript testing framework with coverage reporting
- React Big Calendar: Interactive calendar component for schedule visualization
fa25-fa25-team061/
├── backend/
│ ├── app/
│ │ ├── __init__.py
│ │ ├── main.py # FastAPI application
│ │ ├── config.py # Configuration settings
│ │ ├── database.py # Database connection
│ │ ├── models.py # SQLAlchemy models
│ │ ├── schemas.py # Pydantic schemas
│ │ ├── auth.py # Authentication setup
│ │ ├── schedule_generator.py # Schedule optimization algorithm
│ │ └── routers/ # API route handlers
│ │ ├── auth.py
│ │ ├── courses.py
│ │ ├── assignments.py
│ │ ├── availability.py
│ │ └── schedules.py
│ ├── alembic/ # Database migrations
│ ├── requirements.txt # Python dependencies
│ ├── run.py # Application runner
│ └── env.example # Environment variables template
└── frontend/
├── public/
├── src/
│ ├── components/ # Reusable React components
│ ├── pages/ # Page components
│ ├── contexts/ # React contexts
│ ├── App.tsx # Main application component
│ └── index.tsx # Application entry point
└── package.json # Node.js dependencies
- Python 3.8+
- Node.js 16+
- PostgreSQL 12+
- Redis (for Celery)
-
Navigate to the backend directory:
cd backend -
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Set up environment variables:
cp env.example .env # Edit .env with your database and other settings -
Set up the database:
# Create PostgreSQL database createdb aptora # Run migrations alembic upgrade head
-
Start the backend server:
python run.py
The API will be available at http://localhost:8000
-
Navigate to the frontend directory:
cd frontend -
Install dependencies:
npm install
-
Start the development server:
npm start
-
Run tests:
npm test -
Run tests with coverage:
npm test -- --coverage
The frontend will be available at http://localhost:3000
Once the backend is running, you can access the interactive API documentation at:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
The application uses a sophisticated algorithm to generate study schedules:
-
Priority Calculation: Assignments are prioritized based on:
- Time urgency (closer due dates get higher priority)
- Difficulty level (harder assignments get more time)
- Estimated hours required
-
Availability Matching: The system matches assignments with your available time slots
-
Optimization: Uses clustering algorithms to minimize context switching and maximize productivity
- Intuitive Interface: Clean, modern design that's easy to navigate
- Real-time Updates: Changes are reflected immediately across the application
- Responsive Design: Works seamlessly on desktop and mobile devices
- Progress Tracking: Visual indicators show completion status and progress
- Calendar Visualization: Interactive calendar view for schedule management
- Comprehensive Testing: Thorough test coverage ensures reliability
- Error Handling: Graceful error handling with user-friendly feedback
- Main branches:
main: stable, production-ready. Only fast-forward merges fromdevelopon release.develop: integration branch for completed features; always green (CI passes).
- Short-lived branches:
feature/<name>: new features and UI work. Branch offdevelop, open PR intodevelop.fix/<name>: bug fixes. Branch offdevelop(ormainfor hotfix), PR back accordingly.chore/<name>: tooling, docs, or non-functional changes.hotfix/<name>: urgent production fixes. Branch offmain, PR intomainanddevelop.
- Workflow:
- Create branch from
develop. - Commit with conventional prefix (feat:, fix:, chore:, docs:, test:).
- Open PR to
developwith checklist and brief description. - Require 1 reviewer approval + passing CI.
- Squash-merge; delete branch.
- Create branch from
Naming examples: feature/auth-jwt, fix/assignments-delete, chore/ci-pytest.
Backend
cp backend/env.example backend/.envand setDATABASE_URL,SECRET_KEY,FRONTEND_URL.- Create venv and install:
pip install -r backend/requirements.txt. - Initialize DB (SQLite or Postgres). For local dev you may set
DATABASE_URL=sqlite:///./dev.db. - Run API:
python backend/run.py→http://localhost:8000. - Run tests:
pytest backend -q.
Frontend
cd frontend && npm install.npm start→http://localhost:3000.- Environment: use proxy or set
REACT_APP_API_URLif needed. - Tests:
npm test.
Notes on requested tech changes
- The project already uses FastAPI + SQLAlchemy; introducing MongoDB now would duplicate models and slow velocity. If MongoDB is still desired, we can plan a separate
feature/mongo-devspike to add an optional dev-only store without disrupting current SQL flows. - The frontend is already set up and integrated; migrating to Vite can be scheduled later (
feature/vite-migration) without blocking current delivery.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Anisha (adasg) – Backend development, ML schedule optimization
- Aafreen (aafreen3) – Backend development, database design, ML model
- Vibha (vdara) – Frontend development, dashboard UI, landing page
- Sriya (sburra2) – Frontend development, authentication, registration/login
- Calendar export functionality (Google Calendar, iCal)
- Email notifications and reminders
- Mobile app development
- Advanced analytics and insights
- Integration with learning management systems
- Collaborative study planning features