Real-Time Meeting Assistant for ADHD and Neurodivergent Students
A comprehensive full-stack web application designed to help students with ADHD and Autism manage their studies more effectively. The platform processes notes, transcribes audio/video content, generates intelligent summaries, and provides an AI-powered chat assistant with context-aware responses.
- Upload and process PDF and text files
- Extract text content from PDFs using advanced parsing
- Generate ADHD-friendly summaries with key concepts, digestible chunks, and study tips
- Automatically break down complex content into manageable sections
- Real-time meeting and lecture recording using browser MediaRecorder API
- Instant transcription of recorded audio
- Role-aware summaries tailored to user's perspective (Student, Developer, etc.)
- Automatic generation of study artifacts (notes, flashcards, quizzes)
- Upload audio/video files or provide YouTube URLs
- Multiple transcription strategies with intelligent fallback:
- Supadata API for fast transcriptions
- AssemblyAI for comprehensive summaries
- Local transcription via Groq Whisper
- Download and process YouTube videos automatically
- Generate study materials from video content
- Context-aware AI chat assistant
- Intelligent Resource Filtering: Automatically detects when you mention specific resources
- "PDF notes" β Uses only PDF/notes context
- "YouTube video" β Uses only video/YouTube context
- "Live recording" β Uses only recording context
- No mention β Uses all available context
- Retrieves context from all previous sessions stored in database
- Real-time conversation with ADHD-friendly responses
- Create personalized study schedules based on exam dates
- Input topics and available study hours
- AI-generated day-by-day study plans with breaks and variety
- Optimized for ADHD-friendly learning patterns
- Node.js + Express.js - Server framework
- MongoDB + Mongoose - Database and ODM
- Groq SDK - AI/ML services (LLaMA 3.3 & Whisper)
- JWT - Authentication tokens
- bcrypt - Password hashing
- Multer - File upload handling
- pdf-parse (v2.4.5) - PDF text extraction
- ytdl-core - YouTube video downloading
- Zod - Input validation
- React 19 - UI framework
- Vite - Build tool and dev server
- Axios - HTTP client
- CSS3 - Styling with modern features
Before you begin, ensure you have the following installed:
- Node.js (v18.0.0 or higher)
- npm or yarn package manager
- MongoDB (local instance or MongoDB Atlas account)
- Groq API Key (Get one here)
- Supadata API Key (for fast transcriptions)
- AssemblyAI API Key (for advanced transcriptions)
- yt-dlp (for YouTube download fallback)
- FFmpeg (for audio conversion)
git clone <repository-url>
cd ByteForgecd backend
npm installCreate a .env file in the backend directory:
# Server Configuration
PORT=3001
# Database
MONGO_URI=mongodb://localhost:27017/focusflow
# Or for MongoDB Atlas:
# MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/focusflow
# JWT Secret (generate a strong random string)
JWT_SECRET=your_super_secret_jwt_key_here
# Groq AI API (Required)
GROQ_API_KEY=your_groq_api_key_here
# Optional: YouTube Transcription Services
SUPADATA_API_KEY=your_supadata_key_here
ASSEMBLYAI_API_KEY=your_assemblyai_key_here
# Optional: YouTube Download Settings
ALLOW_YOUTUBE_FALLBACK=true
ENABLE_YTDLP=true
ENABLE_FFMPEG=true
ENABLE_PIPED_FALLBACK=true
ENABLE_ASSEMBLYAI_URL=falsecd ../frontend
npm installCreate a .env file in the frontend directory (optional):
VITE_API_BASE_URL=http://localhost:3001Local MongoDB:
# If using local MongoDB, make sure it's running
mongodMongoDB Atlas:
- Create a free cluster at MongoDB Atlas
- Get your connection string and add it to
.env
Terminal 1 - Backend:
cd backend
npm run devServer will run on http://localhost:3001
Terminal 2 - Frontend:
cd frontend
npm run devFrontend will run on http://localhost:5173 (or port shown in terminal)
Backend:
cd backend
npm startFrontend:
cd frontend
npm run build
npm run previewPOST /api/auth/signup- Create new accountPOST /api/auth/signin- Login
POST /api/process-notes- Upload and process PDF/text filesPOST /api/transcribe- Transcribe audio filePOST /api/transcribe-media- Upload media or YouTube URLPOST /api/chat- Chat with AI assistantPOST /api/study-schedule- Generate study schedule
GET /api/results- List all user results (optional:?type=notes|media|transcribe)GET /api/results/:id- Get specific resultDELETE /api/results/:id- Delete result
GET /api/health- Server status
Note: All endpoints except /api/health and /api/auth/* require JWT authentication.
ByteForge/
βββ backend/
β βββ src/
β β βββ config/
β β β βββ db.js # MongoDB connection
β β βββ controllers/ # Business logic
β β β βββ authController.js
β β β βββ chatController.js
β β β βββ mediaController.js
β β β βββ notesController.js
β β β βββ scheduleController.js
β β β βββ transcribeController.js
β β β βββ resultsController.js
β β βββ middleware/
β β β βββ authMiddleware.js # JWT verification
β β β βββ errorHandler.js # Error handling
β β β βββ validateInput.js # Input validation
β β βββ models/
β β β βββ userModel.js # User schema
β β β βββ resultModel.js # Results schema
β β βββ routes/
β β β βββ api.js # API routes
β β β βββ authRoutes.js # Auth routes
β β βββ utils/
β β β βββ aiGenerator.js # Groq AI integration
β β β βββ fileHandler.js # File upload config
β β β βββ tokenUtils.js # JWT utilities
β β β βββ youtube.js # YouTube processing
β β βββ server.js # Express app setup
β βββ uploads/ # Temporary file storage
β βββ package.json
β
βββ frontend/
βββ src/
β βββ components/
β β βββ ChatAssistant.jsx
β β βββ Login.jsx
β β βββ MeetingAssistant.jsx
β β βββ MeetingTranscriber.jsx
β β βββ NotesProcessor.jsx
β β βββ StudySchedule.jsx
β β βββ Icon.jsx
β βββ App.jsx # Main component
β βββ App.css # Global styles
β βββ main.jsx # React entry point
βββ package.json
The chat assistant intelligently filters context based on your question:
- Resource Detection: Analyzes your question for keywords like "PDF", "YouTube", "recording"
- Smart Filtering: Only uses relevant stored data from previous sessions
- Context Combination: Merges current tab context with database context
- Real-time Updates: Automatically loads context from all previous sessions
When processing YouTube videos, the system requires:
- ytdl-core (direct download)
- ffmpeg (installed with ytdl)
This ensures maximum reliability and uptime.
Uses pdf-parse v2.4.5 with the new PDFParse class API:
- Creates parser instance with buffer data
- Extracts text using
getText()method - Properly cleans up resources with
destroy() - Handles both PDF and plain text files
Transcriptions can be customized for different roles:
- Student: Focus on learning objectives, key concepts
- Developer: Technical details, code references
- Manager: Action items, decisions, follow-ups
- Default: General-purpose summary
- Password Hashing: bcrypt with 10 salt rounds
- JWT Authentication: Secure token-based auth (7-day expiration)
- Rate Limiting: 100 requests per 15 minutes per IP
- Input Validation: Zod schema validation for all user inputs
- CORS Protection: Configured for secure cross-origin requests
- Error Handling: Comprehensive error handling with user-friendly messages
- Navigate to "Process Notes" tab
- Drag and drop or select a PDF file
- Wait for processing (shows progress)
- View the processed, ADHD-friendly breakdown
- Go to "Live Recording" tab
- Click "Start Recording"
- Speak or let the meeting record
- Click "Stop Recording"
- View transcript and AI-generated summary
- Go to "Ask Questions" tab
- Type: "Summarize the key points from my PDF notes"
- The system automatically filters to only PDF context
- Get a precise answer based on your notes
- Go to "Upload Media" tab
- Paste a YouTube URL
- System downloads and transcribes automatically
- Get transcript, summary, flashcards, and quiz
- Ensure MongoDB is running locally or Atlas cluster is accessible
- Check
.envfile has correctMONGO_URI - Verify network connectivity
- Ensure PDF files are not corrupted
- Check file size (max 50MB)
- Verify pdf-parse package is installed correctly
- Check if video is publicly accessible
- Enable fallback options in
.env - Verify yt-dlp is installed if using that option
- Verify
GROQ_API_KEYis set correctly - Check API quota limits
- Ensure internet connection is stable
This project was built as a hackathon submission. Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is open source and available for educational purposes.
- Groq for providing fast AI inference
- MongoDB for database services
- All open-source libraries used in this project
For questions or support, please open an issue on the repository.
Built with β€οΈ for ADHD and Neurodivergent Students