Studybuddy/FlashLearn is an AI-powered learning platform that transforms PDFs and YouTube videos into interactive quizzes, making exam preparation faster and more engaging.
The Problem:
Students struggle with last-minute revisions through lengthy PDFs and videos. Finding key concepts quickly and testing knowledge in real-time remains a challenge.
Our Solution:
An AI-driven platform that:
π Generates quizzes from uploaded PDFs
π₯ Converts YouTube videos into bite-sized quizzes
π Tracks progress with leaderboards and streaks
π€ Provides instant doubt-solving via AI chatbot
- AI-Powered Quiz Generation
Upload PDFs or paste YouTube links to instantly create quizzes - Gamified Learning
Compete on category-specific leaderboards (React, DSA, etc.) - Smart Flashcards
AI generates adaptive flashcards from your learning material - Discussion Forums
Collaborate with peers on tricky concepts - Learning Streaks
Daily quiz challenges to boost retention
- Frontend: React.js β, Tailwind CSS
- Backend: Node.js π©, Express.js
- Database: MongoDB π
- AI Integration: Quiz generation & chatbot
- APIs: YouTube Data API, AI services
- Node.js (v16+)
- MongoDB Atlas account
- YouTube API key
- Node.js (v18 or higher)
- MongoDB Atlas account (or local MongoDB)
- YouTube Data API v3 key
- Git
-
Clone the repository:
git clone https://github.com/iamaparnaojha/studybuddy.git cd studybuddy -
Split the terminal and navigate to both server and client directories:
cd serverIn the other terminal:
cd client -
Install dependencies in both server and client:
npm i
-
Set up
.envfiles:-
In the server directory, create a
.envfile:touch .env
Add the following variables (without their values):
PORT=5000 MONGO_URL=mongodb+<your-mongodb-url> JWT_SECRET=<your-secret-key> NODE_ENV=development # API Keys YOUTUBE_API_KEY=<your-youtube-api-key> GEMINI_API_KEY=<your-gemini-api-key> ASSEMBLYAI_API_KEY=<your-assemblyai-api-key> OPENAI_API_KEY=<your-openai-api-key> # Cloudinary CLOUDINARY_CLOUD_NAME=<your-cloud-name> CLOUDINARY_API_KEY=<your-cloudinary-api-key> CLOUDINARY_API_SECRET=<your-cloudinary-api-secret> CLOUDINARY_URL=cloudinary://<your-cloudinary-url>
-
In the client directory, create a
.envfile:touch .env
Add the following variable:
VITE_API_URL=
-
-
Run the project:
- Start the server:
npx run server
- Start the client:
npm run dev
- Click the link shown in the client terminal to open the application.
- To stop the client, press
Ctrl + Cin the terminal.
- Start the server: