A modern web application that intelligently manages your schedule by integrating with Google Calendar and Google Tasks. Powered by AI, it helps you detect conflicts, find free slots, generate study plans, and get personalized reminders.
- Sync with Google Calendar to view your events
- Real-time calendar data fetching
- Visual calendar view with FullCalendar
- Automatically detects overlapping events
- Highlights conflicting events in red on the calendar
- Provides detailed conflict information
- Identifies available time slots in your schedule
- Shows gaps of 1 hour or more between events
- Helps you plan new activities
- Integrates with Google Tasks
- Displays pending tasks
- Syncs with your calendar for better planning
- Weekly and monthly event statistics
- Busiest days and hours analysis
- Event duration tracking
- Visual insights into your schedule patterns
- Smart Chat Assistant: Ask questions about your schedule using natural language
- Study Plan Generator: Creates personalized study schedules based on available free time
- Intelligent Reminders: AI-generated motivational reminders for upcoming events
- Google OAuth 2.0 integration
- Secure access to Calendar and Tasks APIs
- Session management with NextAuth
- Frontend: Next.js 16, React 19, TypeScript
- Styling: Tailwind CSS
- Calendar: FullCalendar (React)
- AI: Groq API (Llama 3.3 model)
- Authentication: NextAuth.js with Google Provider
- APIs: Google Calendar API, Google Tasks API
- Node.js 18+
- Google Cloud Console account (for API keys)
- Groq API key
- Clone the repository:
git clone <repository-url>
cd smart-timetable-assistant/frontend- Install dependencies:
npm install- Set up environment variables:
Create a
.env.localfile in the root directory:
# Google OAuth
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# AI API
GROQ_API_KEY=your_groq_api_key- Configure Google Cloud Console:
- Create a new project or select existing one
- Enable Google Calendar API and Google Tasks API
- Create OAuth 2.0 credentials
- Add authorized redirect URIs (for local development:
http://localhost:3000/api/auth/callback/google)
- Start the development server:
npm run dev-
Open http://localhost:3000 in your browser
-
Sign in with your Google account
-
Grant permissions for Calendar and Tasks access
-
Start exploring your smart timetable!
- Calendar Tab: View your events and conflicts
- Conflicts Tab: See detailed conflict information
- Free Slots Tab: Find available time slots
- Tasks Tab: View your Google Tasks
- Analytics Tab: Get insights about your schedule
- Study Tab: Generate AI-powered study plans
Ask the assistant questions like:
- "What's my schedule for tomorrow?"
- "Do I have any conflicts this week?"
- "When is my next meeting?"
- Enter the subject you want to study
- Specify the number of hours needed
- The AI will create a personalized study plan using your free slots
Click "Get Reminder" to receive AI-generated motivational messages about your upcoming events.
GET /api/calendar- Fetch calendar eventsGET /api/conflicts- Detect event conflictsGET /api/freeslots- Find free time slotsGET /api/tasks- Fetch Google TasksGET /api/analytics- Get schedule analyticsPOST /api/chat- AI chat with schedule contextPOST /api/studyplan- Generate study plansPOST /api/notify- Get AI reminders
frontend/
├── app/
│ ├── api/ # API routes
│ │ ├── auth/ # NextAuth configuration
│ │ ├── calendar/ # Calendar integration
│ │ ├── conflicts/ # Conflict detection
│ │ ├── freeslots/ # Free slots finder
│ │ ├── tasks/ # Tasks integration
│ │ ├── analytics/ # Analytics
│ │ ├── chat/ # AI chat
│ │ ├── studyplan/ # Study planning
│ │ └── notify/ # Reminders
│ ├── components/ # React components
│ │ └── FullCalendarView.tsx
│ ├── types/ # TypeScript types
│ └── globals.css # Global styles
├── public/ # Static assets
└── package.json # Dependencies
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License.
For questions or issues, please open an issue on GitHub or contact the development team.