Skip to content

StudySync makes it super easy to sync different courses, assignments, and exams into a single unified portal by simply uploading PDF syllabi.

Notifications You must be signed in to change notification settings

zero-abd/StudySync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

StudySync πŸ“š

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.

image

✨ Features

  • πŸ€– 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

πŸ—οΈ Architecture

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

πŸš€ Getting Started

Prerequisites

  • Node.js (v18 or higher)
  • Python (v3.8 or higher)
  • Google Cloud Account with Vertex AI API enabled
  • Firebase Project for data storage

Backend Setup

  1. Navigate to the backend directory:

    cd backend
  2. Install Python dependencies:

    pip install -r requirements.txt
  3. Set up environment variables: Create a .env file 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
  4. 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
  5. Set up Firebase:

    • Create a Firebase project
    • Generate a service account key (JSON)
    • Add the JSON content to your .env file as FIREBASE_CREDENTIALS
  6. Run the backend server:

    python app.py

    The backend API will be available at http://localhost:5000

Frontend Setup

  1. Navigate to the frontend directory:

    cd frontend
  2. Install Node.js dependencies:

    npm install
  3. Set up environment variables: Create a .env.local file 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
  4. Run the development server:

    npm run dev

    The frontend will be available at http://localhost:3000

πŸ“– How to Use StudySync

1. Upload Your Syllabus

  • 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

2. Review and Save Course Data

  • 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

3. Track Your Progress

  • 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

4. Stay Organized

  • 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

5. Manage Tasks

  • Visit the Tasks page to see all assignments and exams
  • Mark tasks as complete to track your progress
  • Add custom tasks for additional assignments

πŸ› οΈ API Endpoints

Backend API (http://localhost:5000)

Chat & PDF Analysis

  • POST /api/chat - Chat with AI assistant or analyze PDF files
  • GET /api/tasks - Get available task types
  • GET /api/health - Health check

Data Management

  • GET /api/get_student_data - Fetch student course data
  • POST /api/save_syllabus_data - Save extracted syllabus information
  • POST /api/save_user - Create new user
  • POST /api/add_semester - Add semester information
  • POST /api/add_courses - Add courses to semester

Frontend API (http://localhost:3000)

  • POST /api/chat - Proxy to OpenAI for general chat (alternative to backend chat)

πŸ“ Project Structure

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

🎨 Key Components

PDF Processing Flow

  1. Upload: User selects PDF file in chat panel
  2. Analysis: Backend uses Gemini AI to extract structured data
  3. Review: User can edit extracted information in a side-by-side view
  4. Save: Data is stored in Firebase and local JSON file
  5. Sync: Frontend automatically refreshes to show new course data

Dashboard Features

  • 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

AI Assistant

  • 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

πŸ§ͺ Development

Backend Development

cd backend
python app.py  # Runs in debug mode with auto-reload

Frontend Development

cd frontend
npm run dev    # Runs with hot-reload and Turbopack

Building for Production

Backend

cd backend
pip install gunicorn
gunicorn app:app

Frontend

cd frontend
npm run build
npm start

πŸ”§ Environment Configuration

Required Environment Variables

Backend (.env)

GOOGLE_CLOUD_PROJECT=your-gcp-project-id
GOOGLE_CLOUD_LOCATION=us-central1
FIREBASE_CREDENTIALS={"type":"service_account",...}
PORT=5000

Frontend (.env.local)

NEXT_PUBLIC_API_URL=http://localhost:5000
OPENAI_API_KEY=your-openai-api-key

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • 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! πŸŽ“βœ¨

About

StudySync makes it super easy to sync different courses, assignments, and exams into a single unified portal by simply uploading PDF syllabi.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •