An AI-assisted study companion that transforms your learning materials into an interactive, gamified experience.
Questly converts your uploaded slides and documents into an intelligent learning roadmap complete with checkpoints, embedded educational videos, and mini-quizzes. Your progress is automatically saved locally and can be synced with Supabase for production deployments.
Questly revolutionizes the way you study by creating a personalized, interactive learning journey:
- π€ Smart Upload β Upload slides or PQP files to automatically generate ordered learning checkpoints
- π₯ Video Integration β Each checkpoint includes a relevant YouTube video tailored to the topic
- π Mini-Quizzes β Test your knowledge with short quizzes after each learning session
- πΎ Progress Tracking β Your progress persists locally, allowing you to exit and resume anytime
- π Unified Dashboard β Access everything from the root path (
/) athttp://localhost:8081/
Questly employs a dual-AI system with clearly defined responsibilities:
Role: Final content preparation and user interaction
- Receives formatted inputs from Gemini
- Prepares and displays all user-facing responses
- Creates the polished messages shown in the UI
- Designated final assistant for all visible content
Role: Information gathering and structuring
- Retrieves information from web and uploaded files
- Structures raw data into organized formats
- Formats content specifically for Gemma 3 consumption
- Powers topic generation, video query refinement, and quiz creation
- Never directly interfaces with users
Architecture Flow: Gemini gathers β Gemini formats β Gemma 3 prepares β User sees final output
src/pages/
βββ Index.tsx # Root dashboard (default landing page)
βββ UploadMaterials.tsx # Material upload and processing interface
βββ Roadmap.tsx # Interactive skill tree with checkpoint navigation
βββ Quiz.tsx # Initial assessment interface
src/components/
βββ LearningModal.tsx # Video embedding and mini-quiz logic for each checkpoint
src/lib/
βββ localStore.ts # Local persistence (studies, topics, quizzes, resume points)
βββ gemini.ts # Retrieval, formatting, YouTube search, checkpoint & quiz generation
βββ ollama.ts # Local LLM utilities (Gemma 3 integration placeholder)
βββ supabase.ts # Supabase client and data model stubs
- Node.js 18+ (recommended)
-
Install Dependencies
npm install
-
Configure Environment
Copy the example environment file and add your API keys:
cp .env.example .env
-
Environment Variables
Edit
.envwith the following configuration:# Gemini API (Required) VITE_GEMINI_API_KEY=your_gemini_api_key_hereVITE_GEMINI_MODEL= # Override default Gemini model VITE_GEMINI_BASE_URL= # Custom base URL or dev proxy (default: /gemini-api)
# Option 1: YouTube Data API VITE_YOUTUBE_API_KEY=your_youtube_api_key_here # Option 2: Google Custom Search Engine VITE_GOOGLE_CSE_API_KEY=your_cse_api_key_here VITE_GOOGLE_CSE_CX=your_cse_id_here
# Supabase (for production persistence) VITE_SUPABASE_URL=your_supabase_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key # Local LLM via Ollama (for Gemma 3) VITE_OLLAMA_HOST=http://localhost:11434 VITE_OLLAMA_MODEL=gemma3
npm run devThe server automatically selects an available port. Recent runs typically use:
http://localhost:8081/
Default Landing: Navigate to the root path (/) to access the main dashboard.
-
Create a Study Session
- Launch the app and navigate to the root dashboard
- Click to start a new study session
-
Upload Learning Materials
- Upload your slides or PQP files
- The app automatically analyzes content and generates learning checkpoints
-
Follow Your Learning Roadmap
- Open the Roadmap to view your personalized skill tree
- Click any checkpoint to begin learning
-
Learn and Progress
- Watch the embedded educational video for each topic
- Complete the mini-quiz to test your understanding
- Correct answers mark the topic as completed and save your progress
-
Resume Anytime
- Your progress is automatically saved
- Return to continue from your last checkpoint
- Click "Exit to Dashboard" to return to the main menu (
/)
Questly implements a robust local persistence system to ensure your learning progress is never lost:
- Videos & Quizzes: Checkpoint videos and mini-quizzes persist in
localStoragewithin each study's topics object - Progress Tracking: Study progress and last accessed checkpoint are continuously tracked
- Auto-Resume: Automatic resumption from your last learning position
Data Structures:
LocalStudyβ Study session metadata and configurationLocalTopicβ Individual topic details and completion status
Core Functions:
setTopicQuiz(studyId, topicTitle, items)β Save quiz questions for a topicgetTopicQuiz(studyId, topicTitle)β Retrieve cached quiz questionslast_checkpoint_titleβ Tracks most recent checkpoint accessedlast_opened_atβ Timestamp of last study session
Responsibilities:
- Load previously cached quiz questions and video URLs
- Generate new content when no cache exists
- Save newly generated content for future access
- Handle quiz submission and validation
Features:
- Auto-resume from last checkpoint on load
- Exit navigation returns to root dashboard (
/) - Visual progress indicators for completed topics
User Completes Quiz β localStorage Updated β Resume Point Saved β Next Session Auto-Resumes
| Route | Page | Description |
|---|---|---|
/ |
Index | Default dashboard and main landing page |
/upload-materials |
UploadMaterials | Material upload and processing interface |
/roadmap |
Roadmap | Interactive skill tree view (accepts ?studyId parameter) |
/quiz |
Quiz | Initial assessment interface (if enabled) |
/dashboardβ Retained in codebase for compatibility but not actively used- Navigation exits return to
/instead
- Navigation exits return to
- Framework: React with Vite
- UI Library: shadcn/ui
- Routing: React Router
- Gemini API β Content retrieval and structuring
- Gemma 3 β Final user-facing responses (via Ollama)
- YouTube Data API β Video search and embedding
- Google Custom Search β Alternative video search option
- Primary: Browser localStorage
- Optional: Supabase for cloud sync
This project is licensed under the MIT License - LICENSE
Go to the ARCHITECTURE.md documentation for detailed technical information.
Built with β€οΈ for learners everywhere