NoteQuest is an AI-powered learning platform that transforms raw study notes into structured subjects, chapters, and topics.
Using AI-powered topic extraction, NoteQuest helps learners organize material, track progress, complete quizzes, maintain study streaks, earn XP, and build consistent learning habits through gamification.
Whether you're preparing for exams, learning a new subject, or managing large volumes of notes, NoteQuest converts unstructured information into an actionable study roadmap.
NoteQuest is designed to be AI-provider agnostic.
While this demo currently uses the Groq API for topic extraction, quiz generation, study tips, and daily challenges, the application architecture is not tied to any specific AI provider.
Any LLM API capable of processing prompts and returning structured responses can be integrated with minimal changes, including:
- Groq
- OpenAI
- Google Gemini
- Anthropic Claude
- OpenRouter
- Self-hosted models via Ollama
- Other OpenAI-compatible APIs
Groq is used in this repository because it provides a cost-effective way to power AI features during development and demonstration. The underlying architecture allows providers to be swapped without significant changes to the application.
π§ Demo Release
NoteQuest is currently an active demonstration project showcasing AI-assisted study planning, quiz generation, progress tracking, and gamified learning.
Current development focuses on:
- Improving AI extraction accuracy
- Expanding quiz generation capabilities
- Enhancing analytics and insights
- Improving mobile responsiveness
- Refining the overall user experience
- AI topic extraction from pasted notes or uploaded files.
- Upload support for
.txtand text-based.pdffiles (up to first 30 pages extracted). - Subject dashboard with topic completion, progress tracking, and learning roadmaps.
- Gamification: XP, levels, streaks, completion rewards, and badges.
- Daily AI challenge and smart revision suggestions.
- Chapter-based quiz generation with XP rewards.
- Study analytics (heatmap, velocity trends, completion estimates).
- Optional Supabase-powered global leaderboard.
- Light/dark theme support with persisted preference.
| Layer | Technology |
|---|---|
| Frontend | React 19 |
| Routing | React Router 7 |
| Build Tool | Vite 8 |
| Styling | Tailwind CSS |
| AI Integration | Groq API (demo implementation) |
| Database | Supabase |
| PDF Processing | pdfjs-dist |
| Local Persistence | Browser localStorage |
| Deployment | Vercel |
User Notes / PDF
β
βΌ
AI Processing Layer
β
βΌ
Topic Extraction
β
βΌ
Structured JSON
β
βΌ
Subject / Chapter / Topic Store
β
βββ Progress Tracking
βββ Quiz Generation
βββ Revision Planning
βββ XP & Streak System
βββ Analytics Engine
βββ Leaderboard Integration
src/
components/
UploadNotes.jsx
TopicBoard.jsx
ProgressBar.jsx
Roadmap.jsx
SmartRevision.jsx
DailyChallenge.jsx
StudyHeatmap.jsx
VelocityChart.jsx
Leaderboard.jsx
...
hooks/
useToast.js
pages/
Home.jsx
Upload.jsx
Dashboard.jsx
SubjectDetail.jsx
Quiz.jsx
LeaderboardPage.jsx
Notes.jsx
Settings.jsx
profile.jsx
utils/
gemini.js
storage.js
supabase.js
theme.js
App.jsx
main.jsx
- Node.js 18+
- npm 9+
npm installCopy .env.example to .env and fill in the values:
VITE_GROQ_API_KEY=your_groq_api_key_here
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_keyNotes:
VITE_GROQ_API_KEYis required for AI features (topic extraction, quiz generation, study tips, daily challenge).- Supabase variables are only required if you want leaderboard sync.
npm run devOpen the local URL shown by Vite (usually http://localhost:5173).
npm run dev- Start development servernpm run build- Build production bundlenpm run preview- Preview production build locallynpm run lint- Run ESLint
If you want the online leaderboard, create a leaderboard table in Supabase.
Example SQL:
create table if not exists leaderboard (
id bigint generated always as identity primary key,
username text not null unique,
xp integer not null default 0,
level text not null default 'Novice',
subjects_count integer not null default 0,
topics_completed integer not null default 0,
streak integer not null default 0,
updated_at timestamptz not null default now()
);Then enable read/write policies suitable for your project environment.
- Core progress and app state are stored in browser
localStorage. - Leaderboard data is stored in Supabase when configured.
- Theme preference is persisted and synced across open tabs.
- User uploads notes (text or PDF) in Upload.
- Notes are sent to Groq (
llama-3.3-70b-versatile) to produce structured JSON. - Parsed subjects/chapters/topics are saved locally.
- Dashboard and subject pages drive progress, XP, revision plans, and analytics.
npm run buildThe production output is generated in dist/.
This repository includes vercel.json and is ready for Vercel deployment.
- AI extraction fails:
- Confirm
VITE_GROQ_API_KEYis set correctly. - Check API quota/rate limits.
- Confirm
- PDF upload returns no text:
- Use text-based PDFs (not scanned images).
- Very large PDFs are truncated to first 30 pages.
- Leaderboard errors:
- Verify Supabase URL/key and table schema.
- Ensure your table permissions/policies allow expected operations.
This project is licensed under the MIT License.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software,
subject to the conditions of the MIT License.
See the LICENSE file for the full license text.





