Turn a course syllabus into a skill tree. Earn XP for every topic you learn, level up, and unlock boss exams with a live countdown to each deadline. It is gamified planning, not a notes app.
- Syllabus to skill tree. Upload a PDF or photo, or paste text. Gemini extracts units, skills, exams and dates.
- Levels and XP. Skills unlock in order. Every 100 XP is a level.
- Boss exams. An exam stays locked until every skill in the units it covers is done.
- Deadline countdowns. Live days, hours, minutes and seconds for each exam.
- AI study coach. Ask what to study next. The coach sees your progress and upcoming deadlines.
- Accounts. Register and log in. Each user can only see their own quests.
- Premium UI. Glass cards, glow, gradients and Framer Motion animations, with hover effects on every card.
Next.js 14 (App Router), React 18, MongoDB with Mongoose, Gemini API, Framer Motion, bcryptjs, jose (JWT).
Requirements: Node.js 18.17 or newer, a MongoDB database (a free MongoDB Atlas cluster works) and a Gemini API key from Google AI Studio.
npm install
cp .env.example .env.local # then fill in the values
npm run devOpen http://localhost:3000.
| Name | Description |
|---|---|
MONGODB_URI |
MongoDB connection string |
GEMINI_API_KEY |
Gemini API key (server side only) |
GEMINI_MODEL |
Optional. Defaults to gemini-2.5-flash |
JWT_SECRET |
32+ random characters. Generate with openssl rand -base64 48 |
| Route | Purpose |
|---|---|
/ |
Landing page |
/login |
Log in or create an account |
/dashboard |
The app (login required) |
POST /api/auth/register, /login, /logout |
Authentication |
GET /api/auth/me |
Current user |
GET, POST /api/quests |
List quests, create one from a syllabus |
PATCH, DELETE /api/quests/:id |
Complete a skill or boss, delete a quest |
POST /api/ask |
Study coach |
app/ pages, layout, styles and API routes
lib/ db connection, Gemini helper, auth helpers
models/ Mongoose models (User, Quest)
middleware.js protects /dashboard
preview/ standalone demo page, opens without a backend
docs/ screenshots used in this README
- Passwords are hashed with bcrypt.
- Sessions are a 7-day JWT in an httpOnly cookie.
- Middleware blocks
/dashboardwhen logged out. - Every quest and AI request is filtered by the logged-in user's id, so users cannot read or change each other's quests.
- Uploaded syllabus files are sent to Gemini and not stored. Only the generated skill tree is saved.
Not included yet: rate limiting, email verification, password reset and tests. Add rate limiting before deploying publicly.
preview/index.html is a single file demo of the landing page, login and dashboard. It runs entirely in the browser with sample data, so it uses simple parsing rules instead of Gemini, and its demo accounts are not secure.
Deploy to Vercel and add the four environment variables in the project settings. Use a MongoDB Atlas database that allows connections from Vercel.
- Edit the generated skill tree
- Boss prep quizzes generated by Gemini
- Streaks and daily XP
- Calendar export for deadlines
- Password reset and email verification
MIT, see LICENSE. Built by Manash Khati.



