StuddyBuddy is an intelligent study companion that helps students and learners create quizzes, generate sticky notes, and annotate PDF documents using AI technology. Built with React, Node.js, and powered by Google's Gemini AI.
Project Demonstration : https://www.youtube.com/watch?v=Sgg8ST6DOFQ
- Multiple Choice Questions (MCQ): Generate contextual MCQs from uploaded documents
- Creative Questions (CQ): Create open-ended questions that test deep understanding
- Smart Scoring: AI-powered evaluation for creative answers
- Save & Review: Save generated quizzes for later review
- Instant Generation: Generate quizzes directly from PDF chatbot
- Auto-Generation: Create study flashcards from document content
- Tagging System: Organize notes with relevant tags
- Importance Levels: Categorize notes by importance (High/Medium/Low)
- Flip Cards: Interactive front/back flashcard experience
- Quick Access: Generate notes instantly via PDF assistant
- Task Creation: Create and organize study tasks with priorities, tags, and descriptions
- Calendar Views: Monthly, weekly, and list views for task visualization
- Smart Scheduling: Schedule study sessions with start/end times
- Progress Tracking: Track task status (Pending/In Progress/Completed)
- Pomodoro Timer: Built-in focus timer for productive study sessions
- Auto-Suggestions: Get AI-suggested tasks based on your study materials
- Resource Linking: Connect tasks to uploaded PDFs, quizzes, and notes
- Priority Management: Organize tasks by High/Medium/Low priority levels
- Interactive Chat: Ask questions about your uploaded documents
- Smart Responses: Get contextual answers based on document content
- Quick Actions: Generate summaries, quizzes, and sticky notes with one click
- Document Analysis: AI-powered understanding of PDF content
- Chat History: Maintain conversation context throughout sessions
- Unified Overview: Comprehensive view of all your study materials
- Study Statistics: Track your learning progress and activities
- File Management: Visual overview of uploaded documents and their status
- Quiz Performance: Monitor quiz results and improvement trends
- Task Reminders: See upcoming tasks and deadlines at a glance
- Quick Actions: Access all features from a centralized hub
- Task Updates: Get notified when tasks are created, updated, or completed
- Smart Alerts: Receive reminders for upcoming study sessions
- Activity Feed: Stay informed about all your learning activities
- Notification Bell: Visual indicator for unread notifications
- Mark as Read: Manage notification status efficiently
- User Feedback: Submit suggestions and report issues directly
- Contact Form: Easy way to reach the development team
- Feature Requests: Suggest new features and improvements
- Bug Reports: Help improve the platform by reporting issues
- Multi-Viewer Support: Advanced PDF viewer with fallback options
- Document Annotation: Add highlights, notes, and comments
- File Management: Upload, organize, and search through documents
- Text Extraction: Smart content extraction for AI processing
- AI Integration: Seamless AI features embedded in PDF viewer
- Google OAuth: Secure login with Google accounts
- User Profiles: Personalized learning dashboard
- File Organization: User-specific document management
- Session Management: Secure authentication across all features
- React 19 - Modern UI library
- Material-UI - Component library
- React Router - Navigation
- Axios - HTTP client
- PDF.js - PDF rendering
- Node.js & Express - Server framework
- PostgreSQL - Primary database
- Qdrant - Vector database for semantic search
- Google Gemini AI - AI text generation
- Multer - File upload handling
- Docker & Docker Compose - Containerization
- GitHub Actions - CI/CD pipeline
- Azure VM - Cloud deployment
- Node.js (v20 or higher)
- Docker & Docker Compose
- Git
git clone https://github.com/Tamim-saad/StuddyBuddy.git
cd StuddyBuddy# Copy environment template
cp .env.example .env
# Edit .env with your actual values
nano .envRequired Environment Variables:
GEMINI_API_KEY: Get from Google AI StudioJWT_SECRET: Random secret key for authenticationEMAIL_USER&EMAIL_PASS: Email credentials for notificationsREACT_APP_GOOGLE_CLIENT_ID: Google OAuth client IDPOSTGRES_URI: PostgreSQL database connection stringQDRANT_URL: Qdrant vector database URL
# Build and start all services
docker-compose up --build
# Run in background
docker-compose up -d --build# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../frontend
npm install
# Start PostgreSQL and Qdrant (manually or via Docker)
# Update POSTGRES_URI and QDRANT_URL in .env accordingly
# Start backend (from backend directory)
npm start
# Start frontend (from frontend directory)
npm start- Frontend: http://localhost:3000
- Backend: http://localhost:4000
- Qdrant Dashboard: http://localhost:6333/dashboard
Main Features Access:
- π Dashboard: Central hub with overview of all activities
- π File Management: Upload and organize your study materials
- π€ PDF Chatbot: Interactive AI assistant for document analysis
- π Study Planner: Task management and scheduling system
- π― Quiz Generator: AI-powered question creation
- π Sticky Notes: Smart flashcard generation
- π Notifications: Real-time activity updates
- π¬ Feedback: Submit suggestions and report issues
- Navigate to the upload section
- Upload PDF files
- Wait for automatic text extraction and indexing
- Access the planner from the sidebar navigation
- Create study tasks with priorities, tags, and scheduling
- Use calendar, list, or weekly views to manage tasks
- Start Pomodoro timer sessions for focused study
- Get auto-suggested tasks based on your uploaded content
- Open any uploaded document
- Use the floating chat button to open the AI assistant
- Ask questions about the document content
- Generate summaries, quizzes, and notes with quick action buttons
- Get contextual responses based on the document
- Select uploaded files or use the PDF chatbot
- Choose quiz type (MCQ or CQ)
- Specify number of questions
- Review and save generated quizzes
- Track your performance over time
- Select documents for note generation or use PDF assistant
- AI will create flashcards with key concepts
- Review and organize notes by importance
- Use flip-card interface for effective studying
- Check the dashboard for comprehensive overview
- View study statistics and activity summaries
- Track task completion and quiz performance
- Manage notifications and stay updated on activities
- Use the feedback form to suggest improvements
- Report any issues or bugs
- Request new features
- Contact the development team
- Open documents in the PDF viewer
- Add highlights, comments, and annotations
- Save annotations for future reference
- Use integrated AI features while reading
The application automatically creates required tables:
users- User accounts and profileschotha- Uploaded files and metadataquiz- Generated quizzes and questionsstickynotes- Generated study notesannotations- PDF annotations and highlightsplanner_tasks- Study planner tasks and schedulingnotification- Real-time notifications and alerts
- Model: Uses Google Gemini 1.5 Flash (free tier)
- Cost Optimization: Limited token usage and optimized prompts
- Fallback: Graceful error handling for AI failures
Follow the "Getting Started" section above.
-
Provision Azure VM with Docker support
-
Set up GitHub Secrets:
AZURE_VM_IP: Your VM's public IPSSH_PRIVATE_KEY: SSH key for VM access- All environment variables from
.env.example
-
Deploy via GitHub Actions:
git push origin main # Triggers automatic deployment
-
Build images:
docker-compose build
-
Deploy to your platform (AWS, GCP, DigitalOcean, etc.)
Update these in your .env file:
# Production URLs
REACT_APP_BASE_URL=http://YOUR-DOMAIN:4000
BACKEND_URL=http://YOUR-DOMAIN:4000
FRONTEND_URL=http://YOUR-DOMAIN
# Database (if using external PostgreSQL)
POSTGRES_URI=postgresql://user:pass@your-db-host:5432/dbname- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
POST /api/auth/register- User registrationPOST /api/auth/login- User loginPOST /api/auth/google- Google OAuth
POST /api/uploads- Upload filesGET /api/uploads- List user filesDELETE /api/uploads/:id- Delete file
POST /api/quiz/generate/mcq- Generate MCQ quizPOST /api/quiz/generate/cq- Generate creative questionsPOST /api/quiz/generate- Generate quiz (chatbot compatible)POST /api/quiz/generate-summary- Generate PDF summaryPOST /api/quiz/chat- Chat with PDF contentPOST /api/quiz/save- Save quiz resultsGET /api/quiz/saved- Get saved quizzes
GET /api/planner- Get all tasks with filtersPOST /api/planner- Create new taskGET /api/planner/:taskId- Get specific taskPUT /api/planner/:taskId- Update taskDELETE /api/planner/:taskId- Delete taskGET /api/planner/suggest/auto- Get auto-suggested tasks
GET /api/notifications- Get user notificationsPOST /api/notifications- Create notificationPUT /api/notifications/:id/read- Mark notification as readDELETE /api/notifications/:id- Delete notification
POST /api/stickynotes/generate- Generate notesPOST /api/stickynotes/save- Save notesGET /api/stickynotes/file/:id- Get notes for file
1. Docker Build Fails
# Clean Docker cache
docker system prune -a
docker-compose build --no-cache2. Database Connection Issues
- Ensure PostgreSQL container is running
- Check POSTGRES_URI in .env file
- Verify network connectivity between containers
3. AI Generation Fails
- Verify GEMINI_API_KEY is correct
- Check API quotas and limits
- Review backend logs for specific errors
4. File Upload Issues
- Check file size limits (typically 10MB for PDFs)
- Ensure uploads directory is writable
- Verify backend is running and accessible
- Check PDF text extraction process completion
5. Planner/Notification Issues
- Verify database tables are created properly
- Check PostgreSQL connection and permissions
- Ensure notification table exists with correct schema
- Verify user authentication tokens are valid
6. PDF Chatbot Not Responding
- Check Qdrant vector database connection
- Verify document indexing completed successfully
- Ensure GEMINI_API_KEY has sufficient quota
- Check network connectivity to AI services
7. Performance Issues
- Monitor database query performance
- Check Qdrant index status and memory usage
- Verify adequate server resources (RAM/CPU)
- Consider cleaning old notification/chat data
This project is licensed under the MIT License - see the LICENSE file for details.
- Google Gemini AI for powerful text generation and chat capabilities
- Qdrant for vector search capabilities enabling semantic document search
- React & Material-UI for the beautiful and responsive frontend
- Docker for containerization and easy deployment
- PostgreSQL for robust data storage and management
- Formspree for seamless feedback form integration
- Open Source Community for amazing tools and libraries
For support, email [email protected] or create an issue in this repository.
You can also use the in-app feedback system to report issues or suggest improvements directly from the application.
Made with β€οΈ for learners everywhere
StuddyBuddy - Your AI-powered study companion for smarter, more efficient learning