Academic Timetable AI is an all-in-one student workspace for classes, course materials, notes, quizzes, and deadlines.
The app is built for a student workflow where course content does not live in one place. A student can manage their timetable, connect Google Classroom, sync teacher posts and materials, read AI-generated summaries, generate quizzes from study content, keep notes per class, and see only the updates that actually matter when they return to the dashboard.
This project is a student productivity platform that combines:
-
timetable and class-session management
-
course and handout organization
-
Google Classroom sync
-
AI summaries for synced study materials
-
quiz generation and quiz attempt tracking
-
material-based study packs and practice questions
-
class notes and past-class note history
-
dashboard alerts for new assignments, quizzes, and other Classroom updates
-
prepare for quizzes from handouts and lecture materials
-
keep notes linked to actual classes
Instead of forcing the student to manually download everything, re-upload it, and organize it again, the platform syncs course content from Google Classroom and turns it into a study workflow inside the app.
- The student signs into the app.
- The student connects Google Classroom.
- The backend syncs courses, announcements, course work, course materials, and supported Drive attachments.
- Synced materials appear inside the app with metadata such as subject, posted time, and attachments.
- AI analysis can summarize the material and extract key points and topic tags.
- The app can generate quizzes and study packs from the synced material and uploaded course handouts.
- The dashboard shows schedule context plus new Google Classroom updates since the last visit.
- Weekly timetable management
- Timetable image import
- Current-class and next-class views
- Past-class notes tied to timetable entries
- Course workspace pages
- Course handout upload and document-based Q&A
- Google Classroom OAuth connection
- Google Classroom sync for:
- announcements
- coursework
- course materials
- supported Drive attachments
- Automatic PDF text extraction for supported Drive PDFs
- Automatic AI analysis for extracted Classroom materials during sync
- Material detail pages with:
- attachment listing
- AI analysis
- material summary
- generated quiz
- quiz attempts
- Quiz Prep area in the sidebar for generated quizzes and results
- Dashboard filtering for new Classroom updates since the student last viewed the dashboard
.
├── backend/ # Express + TypeScript API, Drizzle schema, Google Classroom sync, AI services
├── frontend/ # React + TypeScript + Vite client
└── docs/ # Project notes and internal docs
- Frontend: React 19, TypeScript, Vite, Tailwind CSS, TanStack Query, Axios
- Backend: Node.js, Express, TypeScript, Drizzle ORM, PostgreSQL, Zod
- Auth: Supabase
- Classroom integration: Google Classroom API + Google Drive API
- AI: OpenAI
- PDF parsing:
pdf-parse
- Node.js
- npm
- PostgreSQL database
- Supabase project
- Google Cloud project with Google Classroom API enabled
- OpenAI API key for AI features
Create backend/.env and set:
DATABASE_URL=
SUPABASE_URL=
SUPABASE_SERVICE_ROLE_KEY=
FRONTEND_BASE_URL=http://localhost:5173/materials
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_REDIRECT_URI=http://localhost:4000/api/google-classroom/callback
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4o
OPENAI_EMBEDDING_MODEL=text-embedding-3-small
RAG_EXTRACTION_PROVIDER=openai
HUGGINGFACE_API_KEY=
HUGGINGFACE_EXTRACTION_MODEL=Create frontend/.env and set:
VITE_API_BASE_URL=http://localhost:4000/api
VITE_SUPABASE_URL=
VITE_SUPABASE_ANON_KEY=cd backend
npm install
cd ../frontend
npm installFor local development, the fastest path is:
cd backend
npm run db:pushAvailable backend database scripts:
npm run db:generatenpm run db:migratenpm run db:pushnpm run db:studio
cd backend
npm run devBackend default URL:
http://localhost:4000- API base:
http://localhost:4000/api
cd frontend
npm run devFrontend default URL:
http://localhost:5173
To use Classroom sync:
- Create a Google Cloud project.
- Enable the Google Classroom API.
- Configure the OAuth consent screen.
- Create an OAuth client for a web application.
- Add this backend callback as an authorized redirect URI:
http://localhost:4000/api/google-classroom/callback
- Add your testing Google account as a test user if the app is still in testing mode.
The dashboard is the student command center. It currently includes:
- current session
- next class
- class notes
- focused schedule view for today or the next scheduled day
- new Google Classroom updates since the last dashboard visit
The materials area turns synced Classroom content into study content. Each material can show:
- metadata
- attachments
- AI analysis
- material summary
- generated quiz
- quiz attempts
The courses area acts like a subject workspace. It supports:
- subject list
- course handouts
- handout-based Ask AI
- notes and synced Classroom materials inside each course
Notes are linked to actual timetable entries so a student can:
- take notes during class
- open previous class sessions
- see saved notes for that class
- add notes for past classes
Quiz Prep is a consolidated area where the student can:
- see generated quizzes
- review scores
- inspect attempt history
- jump back to the source material
The current AI layer supports:
- note summarization
- course handout Q&A
- synced material analysis
- material summaries and study packs
- quiz generation from materials
- quiz-related dashboard insights
The system is designed around source-backed answers whenever possible, especially in course-level Q&A and study-pack generation.
- Supported Google Drive PDFs are parsed during Classroom sync.
- If text extraction succeeds, the material can be automatically analyzed during sync.
- Text-based PDFs work better than scanned image PDFs.
- If Drive access is missing or the PDF has no extractable text, the summary may not be available.
This project is moving toward a full student operating system rather than a simple timetable app. The main direction is:
- make Google Classroom updates actionable
- turn uploaded and synced materials into study aids
- connect class sessions, notes, deadlines, and quizzes in one workflow
npm run devnpm run buildnpm run startnpm run typechecknpm run db:generatenpm run db:migratenpm run db:pushnpm run db:studio
npm run devnpm run buildnpm run lintnpm run preview
No license file is currently included in this repository.
