Turn your course syllabus PDF into organized Google Calendar events with AI-powered parsing.
SyllabusSync AI is a web application that automatically extracts important dates, assignments, and events from course syllabus PDFs and syncs them directly to your Google Calendar. Simply upload a PDF, let AI parse the content, review and edit the events, then add them to your calendar with one click.
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- UI: React 19 + Tailwind CSS
- Authentication: NextAuth.js with Google OAuth
- PDF Processing:
pdf-parse+tesseract.js(OCR) - AI Parsing: Google Gemini API
- Calendar Integration: Google Calendar API
- Node.js 18+ and npm
- A Google Cloud project with:
- OAuth 2.0 credentials
- Google Calendar API enabled
- Gemini API access
-
Clone the repository
git clone <repository-url> cd digital-secretary
-
Install dependencies
npm install
-
Set up environment variables
Create a
.env.localfile in the root directory with:# NextAuth Configuration NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_SECRET=your-secret-here # Google OAuth GOOGLE_CLIENT_ID=your-google-client-id GOOGLE_CLIENT_SECRET=your-google-client-secret # Gemini API GEMINI_API_KEY=your-gemini-api-key
💡 Generate
NEXTAUTH_SECRETwith:openssl rand -base64 32 -
Run the development server
npm run dev
-
Open your browser
Navigate to http://localhost:3000
- Sign in with your Google account (grants calendar access)
- Upload a syllabus PDF from the dashboard
- Review the parsed events in the table
- Edit any events before syncing (optional)
- Sync to Google Calendar with one click
npm run dev- Start development servernpm run build- Build for productionnpm start- Start production servernpm run lint- Run ESLint
digital-secretary/
├── app/ # Next.js App Router pages & API routes
├── components/ # React components (UI, auth, dashboard)
├── lib/ # Utilities (auth, PDF processing, caching)
├── validators/ # Zod schemas for validation
└── types/ # TypeScript type definitions
- All API keys are server-side only
- Rate limiting on PDF parsing
- File size and type validation
- Caching to prevent duplicate processing
Built for ConUHacks 🚀