StudySync is a comprehensive student dashboard application that makes it super easy to sync different courses, assignments, and exams into a single unified portal by simply uploading PDF syllabi. Unlike traditional LMS platforms like Canvas and Blackboard that often fail to provide centralized course management (because professors don't maintain them properly), StudySync automatically extracts and organizes all your academic information from syllabus PDFs using AI.
- π€ AI-Powered PDF Analysis: Upload syllabus PDFs and automatically extract course information, schedules, assignments, and grade distributions
- π Unified Dashboard: View all your courses, upcoming deadlines, and class schedules in one place
- π Grade Tracking: Input your marks and get calculated grades based on course distribution
- π Smart Scheduling: Navigate through your daily class schedules with an intuitive interface
- π¬ AI Assistant: Chat with an intelligent assistant for study tips, scheduling help, and academic guidance
- π Real-time Sync: Automatically sync course data with Firebase for persistence across devices
StudySync is built as a full-stack application with:
- Frontend: Next.js 15 with React 19, TypeScript, and Tailwind CSS
- Backend: Flask Python API with Google Vertex AI integration
- Database: Firebase Firestore for user data persistence
- AI: Google Gemini 2.0 Flash for PDF analysis and chat functionality
- Node.js (v18 or higher)
- Python (v3.8 or higher)
- Google Cloud Account with Vertex AI API enabled
- Firebase Project for data storage
-
Navigate to the backend directory:
cd backend -
Install Python dependencies:
pip install -r requirements.txt
-
Set up environment variables: Create a
.envfile in the backend directory with:# Google Cloud Configuration GOOGLE_CLOUD_PROJECT=your-project-id GOOGLE_CLOUD_LOCATION=us-central1 # Firebase Configuration (JSON string) FIREBASE_CREDENTIALS={"type":"service_account","project_id":"your-project-id",...} # Optional: Custom port PORT=5000
-
Set up Google Cloud credentials:
- Create a Google Cloud project and enable the Vertex AI API
- Install the Google Cloud SDK and authenticate:
gcloud auth login gcloud config set project your-project-id - Or set up service account credentials in your environment
-
Set up Firebase:
- Create a Firebase project
- Generate a service account key (JSON)
- Add the JSON content to your
.envfile asFIREBASE_CREDENTIALS
-
Run the backend server:
python app.py
The backend API will be available at
http://localhost:5000
-
Navigate to the frontend directory:
cd frontend -
Install Node.js dependencies:
npm install
-
Set up environment variables: Create a
.env.localfile in the frontend directory:# API Configuration NEXT_PUBLIC_API_URL=http://localhost:5000 # OpenAI Configuration (for chat functionality) OPENAI_API_KEY=your-openai-api-key
-
Run the development server:
npm run dev
The frontend will be available at
http://localhost:3000
- Click on the AI Assistant panel (right side of the dashboard)
- Click "Upload Syllabus PDF"
- Select your course syllabus PDF file
- The AI will automatically extract:
- Course name and instructor
- Class times
- Assignment schedule
- Exam dates
- Grade distribution
- After PDF analysis, review the extracted information
- Edit any incorrect details in the side panel
- Click "Save Course Information" to add it to your dashboard
- Navigate to the Courses page to see all your enrolled courses
- Input your assignment and exam scores using the "Input Marks" feature
- Get calculated grades based on your course's distribution
- View task completion progress for each course
- Use the Dashboard to see upcoming deadlines and today's schedule
- Navigate through different days using the date controls
- Chat with the AI assistant for study tips and academic help
- Visit the Tasks page to see all assignments and exams
- Mark tasks as complete to track your progress
- Add custom tasks for additional assignments
POST /api/chat- Chat with AI assistant or analyze PDF filesGET /api/tasks- Get available task typesGET /api/health- Health check
GET /api/get_student_data- Fetch student course dataPOST /api/save_syllabus_data- Save extracted syllabus informationPOST /api/save_user- Create new userPOST /api/add_semester- Add semester informationPOST /api/add_courses- Add courses to semester
POST /api/chat- Proxy to OpenAI for general chat (alternative to backend chat)
StudySync/
βββ backend/ # Flask Python API
β βββ app.py # Main Flask application
β βββ prompts.py # AI prompts for different tasks
β βββ requirements.txt # Python dependencies
β βββ student_data.json # Local data storage
β βββ pdfs/ # Sample PDF files
βββ frontend/ # Next.js React application
β βββ app/ # Next.js 13+ app directory
β β βββ dashboard/ # Dashboard pages
β β βββ api/ # API routes
β β βββ layout.tsx # Root layout
β βββ components/ # React components
β β βββ ui/ # Reusable UI components
β β βββ dashboard.tsx # Main dashboard component
β β βββ courses-page.tsx# Courses management
β β βββ chat-panel.tsx # AI chat interface
β β βββ ...
β βββ hooks/ # Custom React hooks
β βββ lib/ # Utility functions
β βββ package.json # Node.js dependencies
βββ README.md # This file
- Upload: User selects PDF file in chat panel
- Analysis: Backend uses Gemini AI to extract structured data
- Review: User can edit extracted information in a side-by-side view
- Save: Data is stored in Firebase and local JSON file
- Sync: Frontend automatically refreshes to show new course data
- Upcoming Deadlines: Shows next 5 assignments/exams across all courses
- Class Schedule: Navigate through daily schedules with date controls
- Progress Tracking: Visual progress bars for task completion
- Grade Calculator: Input marks and get calculated grades
- Contextual Help: Specialized prompts for different academic tasks
- PDF Analysis: Automatic extraction of course information
- Study Tips: Personalized recommendations and strategies
- Streaming Responses: Real-time chat experience
cd backend
python app.py # Runs in debug mode with auto-reloadcd frontend
npm run dev # Runs with hot-reload and Turbopackcd backend
pip install gunicorn
gunicorn app:appcd frontend
npm run build
npm startGOOGLE_CLOUD_PROJECT=your-gcp-project-id
GOOGLE_CLOUD_LOCATION=us-central1
FIREBASE_CREDENTIALS={"type":"service_account",...}
PORT=5000NEXT_PUBLIC_API_URL=http://localhost:5000
OPENAI_API_KEY=your-openai-api-key- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some 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.
- Google Vertex AI for powerful PDF analysis and chat capabilities
- Firebase for reliable data storage and synchronization
- Next.js & React for the modern, responsive frontend
- Tailwind CSS for beautiful, customizable styling
- Radix UI for accessible component primitives
StudySync - Making academic life organized, one PDF at a time! πβ¨