A comprehensive student productivity platform that integrates Google Classroom, provides focus mode capabilities, GPA tracking, goal management, and AI-powered academic assistance.
- Google Classroom Integration: Seamlessly connect and sync your courses, assignments, and announcements
- Focus Mode: Browser extension to block distracting websites during study sessions
- GPA Tracker: Monitor academic performance across current and previous semesters
- Goal Management: Set and track personal and academic goals
- AI Chat Assistant: Get help with academic questions powered by Gemini AI
- Course Management: Organize and view all your courses in one place
- Schedule Planner: Manage your academic schedule efficiently
- Activity feed with recent updates
- Visual GPA calculator with ring chart
- Task management system
- Responsive dashboard with statistics
- User authentication and profile management
.
├── browser-extension/ # Chrome extension for focus mode
│ ├── background.js # Extension background script
│ ├── content.js # Content script for website blocking
│ ├── popup.html/js # Extension popup interface
│ ├── blocked.html/js # Blocked website page
│ └── manifest.json # Extension configuration
│
├── src/
│ ├── components/ # React components
│ │ ├── dashboard/ # Dashboard-specific components
│ │ └── ui/ # Reusable UI components (shadcn/ui)
│ │
│ ├── contexts/ # React Context providers
│ │ ├── AuthContext.tsx # Authentication state
│ │ ├── ClassroomContext.tsx # Google Classroom integration
│ │ ├── CoursesContext.tsx # Course management
│ │ └── GoalsContext.tsx # Goal tracking
│ │
│ ├── pages/ # Application pages/routes
│ │ ├── Auth.tsx # Login/signup page
│ │ ├── Index.tsx # Dashboard home
│ │ ├── Courses.tsx # Course overview
│ │ ├── GPATracker.tsx # GPA management
│ │ ├── Goals.tsx # Goal tracking
│ │ ├── FocusMode.tsx # Focus mode settings
│ │ ├── Chat.tsx # AI chat interface
│ │ ├── Schedule.tsx # Schedule planner
│ │ └── Settings.tsx # User settings
│ │
│ ├── integrations/
│ │ └── supabase/ # Supabase client and types
│ │
│ ├── lib/
│ │ ├── classroomApi.ts # Google Classroom API wrapper
│ │ ├── gemini.ts # Gemini AI integration
│ │ └── utils.ts # Utility functions
│ │
│ └── hooks/ # Custom React hooks
│
├── supabase/
│ └── migrations/ # Database migration files
│
└── public/ # Static assets
- Node.js (v18 or higher)
- npm or bun package manager
- Supabase account
- Google Cloud Console project (for Classroom API)
- Google AI API key (for Gemini)
-
Clone the repository
git clone <repository-url> cd web
-
Install dependencies
npm install # or bun install -
Environment Setup
Create a
.envfile in the root directory:VITE_SUPABASE_URL=your_supabase_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key VITE_GOOGLE_CLIENT_ID=your_google_client_id VITE_GEMINI_API_KEY=your_gemini_api_key
-
Database Setup
# Initialize Supabase locally or use cloud instance # Run migrations supabase db reset
-
Google Cloud Console Setup
- Create a project in Google Cloud Console
- Enable Google Classroom API
- Create OAuth 2.0 credentials
- Add authorized origins:
http://localhost:8080 - Copy Client ID to environment variables
-
Start Development Server
npm run dev # or bun devThe application will be available at
http://localhost:8080
-
Build the extension (if needed)
# Extension files are in browser-extension/ -
Load in Chrome
- Open Chrome and go to
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select the
browser-extensionfolder
- Open Chrome and go to
- React 18 with TypeScript
- Vite for build tooling
- React Router for navigation
- TanStack Query for data fetching
- shadcn/ui for UI components
- Tailwind CSS for styling
- Recharts for data visualization
- Supabase for database and authentication
- Google Classroom API for course integration
- Google Gemini AI for chat assistance
- Vanilla JavaScript
- Chrome Extension Manifest V3
- Dashboard (
/): Overview with stats, courses, and activity feed - Courses (
/courses): Course management and details - GPA Tracker (
/gpa-tracker): Current and previous semester GPA tracking - Goals (
/goals): Personal and academic goal management - Focus Mode (
/focus-mode): Configure website blocking for productivity - Chat (
/chat): AI-powered academic assistance - Schedule (
/schedule): Class and study schedule planner - Settings (
/settings): User preferences and account settings
The application uses Supabase authentication with email/password. Protected routes require authentication and redirect to the login page if not authenticated.
Based on the error logs, the following issues are present:
-
React Router Warnings: Future flags for v7 compatibility
v7_startTransitionv7_relativeSplatPath
-
Google Classroom Integration: 403 Forbidden errors when connecting
- Origin
http://localhost:8080may need to be properly configured in Google Cloud Console - Check OAuth consent screen settings
- Verify API scopes are approved
- Origin
-
COOP Policy Warnings: Cross-Origin-Opener-Policy warnings with Google OAuth popup
- Verify Google Cloud Console OAuth credentials
- Check authorized JavaScript origins include
http://localhost:8080 - Ensure all required scopes are enabled
- Clear browser cache and cookies
- Check browser console for specific error messages
- Ensure extension is loaded in Chrome
- Check extension permissions
- Reload extension after code changes
- Verify manifest.json configuration
npm run test
# or
bun testnpm run build
# or
bun run buildnpm run lint
# or
bun run lint- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m '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.
Team 3 - Victory_Mode