(See src/models/*.ts for exact Mongoose schema definitions)
- Description: Register a new user and generate their initial roadmap.
- Body:
{ username, email, password, goal?, learningStyle?, timeCommitment? } - Response:
{ success: true, token, user: { ... } } - Features:
- Checks for existing user (email/username).
- Hashes password.
- Generates JWT token (set in cookie).
- creates default
Roadmapbased on user goal.
- Description: Authenticate existing user.
- Body:
{ email, password } - Response:
{ success: true, token, user: { ... } } - Features:
- Validates credentials.
- Returns JWT token (cookie).
- Description: Get current logged-in user's profile basics.
- Headers:
Authorization: Bearer <token> - Response:
{ success: true, user: { ... } }
- Description: Logout user.
- Features: Clears functionality auth cookie.
- Description: Update user preference fields.
- Body:
{ goal?, timeCommitment?, learningStyle? } - Response:
{ success: true, user: { ... } }
- Description: Get all tasks for the current user (sorted by specific order/date).
- Description: Generate daily tasks using AI.
- Features:
- Checks if tasks already exist for today.
- Uses Google Gemini to generate content based on user profile/roadmap.
- Creates
Taskdocuments.
- Description: Get only tasks created/assigned for "today".
- Description: Get details of a specific task.
- Params:
id(Task ID)
- Description: Mark a task as completed.
- Body:
{ quizAnswers? }(if task has a quiz) - Features:
- Validates quiz answers.
- Updates task status to
completed. - Awards Experience Points (XP).
- Updates Skill proficiency.
- Updates User Streak (daily streak logic).
- Checks for Level Up / Rank Up.
- Description: Regenerate a specific task's content if unsatisfying.
- Features: Re-calls AI to get new content/quiz.
- Description: Get full user profile data including stats, skills, achievements.
- Response:
{ success: true, profileData: { ... }, username, email }
username,email,password(hashed)profileData:level,rank(E-S),experience,progressskills: [{ name, proficiency, lastImproved }]streak: { current, longest, lastCompleted }achievements: [{ title, description, icon, date }]roadmapId(ref)
title,description,type,difficultyLevelstatus: pending, in-progress, completedcontent(HTML/Markdown from AI)quiz: [{ question, options, answer }]rewards: { experience, skillRewards }
userId,goal,title,descriptionmilestones: [{ title, status, type, content, rewards }]