Transform Lectures into Knowledge, Effortlessly.
StudyEZ is a web application designed to help students process and organize lecture recordings. Upload audio/video files or provide URLs, and StudyEZ uses AI to generate transcriptions, summaries, identify key topics, and find relevant external resources. All notes are automatically categorized by Subject, Class, and Topic, presented in an intuitive, navigable interface.
Built for the BitCamp 2025 Hackathon!
- Lecture Upload: Upload audio/video files directly or provide a URL (e.g., YouTube) for processing.
- AI-Powered Transcription: Utilizes AssemblyAI to generate accurate transcripts from lecture audio.
- Intelligent Analysis (via Google Gemini):
- Automatic Categorization: Identifies the Subject, Class, and specific Topic of the lecture.
- Summarization: Generates concise summaries of the lecture content.
- Sub-Topic Identification: Extracts key sub-topics discussed within the lecture.
- Resource Generation:
- Automatically finds relevant web articles (via Google Search) and YouTube videos for each identified sub-topic.
- Presents resources in a clear table format.
- Organized Navigation: Displays lectures in a hierarchical, collapsible sidebar (Subject -> Class -> Topic).
- Detailed Note View: Shows upload date, topics covered, summary, structured resources, and a collapsible transcript for each lecture entry. Allows multiple entries per topic.
- Customizable UI:
- Resizable sidebar.
- Dark/Light theme toggle with preference saved locally.
- Content Management: Delete specific lecture notes, or entire Topic, Class, or Subject folders (with confirmation).
Frontend:
- Framework: React
- Build Tool: Vite
- Routing:
react-router-dom
- HTTP Client:
axios
(for uploads),fetch
API - Styling: CSS with CSS Variables (supporting Dark/Light themes with a purple motif)
Backend:
- Framework: Python + Flask
- Environment:
python-dotenv
- Audio Download:
yt-dlp
- Database: MongoDB (likely via
pymongo
)
AI Services:
- Transcription: AssemblyAI API
- Analysis & Summarization: Google Generative AI API (Gemini)
- Resource Finding: Google Custom Search API
Database:
- MongoDB (e.g., MongoDB Atlas free tier or local instance)
Deployment (Planned/Actual):
- Target Domain:
studyeasy.tech
Follow these steps to get a local copy up and running.
Prerequisites:
- Node.js and npm (or yarn)
- Python 3.x and pip
- Git
- MongoDB instance (running locally or connection URI for Atlas/other)
ffmpeg
andffprobe
: Required byyt-dlp
for audio processing. Install via your system's package manager (e.g.,sudo apt install ffmpeg
,brew install ffmpeg
).
Installation Steps:
-
Clone the Repository:
git clone <your-repository-url> cd <your-repository-name>
-
Backend Setup:
cd server # Or your backend directory name python3 -m venv venv # Create a virtual environment source venv/bin/activate # On Windows use `venv\Scripts\activate` pip install -r requirements.txt # Install Python dependencies
- Create a
.env
file in theserver
directory and add the following environment variables (replace placeholders with your actual keys/URIs):# Example .env for backend ASSEMBLYAI_API_KEY=your_assemblyai_api_key_here GEN_AI=your_google_generative_ai_api_key_here MODEL_NAME=gemini-pro # Or your preferred Google model GOOGLE_API_KEY=your_google_search_api_key_here GOOGLE_CSE_ID=your_google_custom_search_engine_id_here MONGO_URI=your_mongodb_connection_string_here # Crucial for database connection
- Run the backend server:
The backend should now be running, typically on
python app.py
http://127.0.0.1:5000
. Check the terminal for MongoDB connection success/errors.
- Create a
-
Frontend Setup:
- Open a new terminal window/tab.
cd ../client # Navigate to the client directory from the root npm install # or yarn install
- Create a
.env
file in theclient
directory (or.env.development
if preferred) and add the backend URL:(If using Create React App, use# Example .env for frontend (Vite) VITE_API_BASE_URL=http://127.0.0.1:5000
REACT_APP_API_BASE_URL=http://127.0.0.1:5000
) - Run the frontend development server:
The frontend should now be accessible, typically at
npm run dev # or yarn dev
http://localhost:5173
.
- Open your browser and navigate to the frontend URL (e.g.,
http://localhost:5173
). - You should see the StudyEZ homepage.
- (Authentication Placeholder) Use the "Go to App (Temp Bypass)" button to access the main application.
- Use the "+ Upload" button (top-left of the sidebar) to open the upload modal.
- Choose either "Upload File" (select an audio/video file) or "Enter URL" (paste a link, e.g., YouTube).
- Click "Upload Selected File" or "Submit URL". The file/URL will be sent to the backend for processing.
- Once processing is complete, the sidebar should refresh automatically (via the
onUploadSuccess
callback triggeringfetchStructure
). - Navigate the collapsible sidebar using the arrows next to Subjects and Classes.
- Click on a specific Topic to view its generated notes (Date, Topics Covered, Summary, Resources Table, Transcript) in the main content area.
- Click the Transcript header to expand/collapse the text.
- Use the theme toggle (☀️/🌙) in the top-right to switch between light and dark modes.
- Drag the border between the sidebar and content area to resize the sidebar.
- Double-click a sidebar item (Subject, Class, Topic) to mark it for deletion (strikethrough + trash icon appears). Click the trash icon to confirm deletion.
- Click the trash icon next to a specific note entry in the content area to delete just that entry.
- Domain: localhost/
studyeasy.tech
- Frontend: Currently deployed on localhost
- Backend: Currently deployed on localhost
- Dan Nguyen
- Abdullah Ali
- Michelle Eileen
- Sesha Sai Lakkavajjala
- Real User Authentication: Implement Google OAuth for secure login/signup.
- User-Specific Notes: Associate uploaded lectures and notes with individual user accounts.
- Database Storage for Files: Use AWS S3 or similar for robust storage of original media files instead of just local/temporary storage.
- Enhanced Resource Generation: Generate different types of resources (e.g., flashcards, practice questions).
- In-App Search: Allow users to search through transcripts and summaries.
- Direct Audio Recording: Implement functionality to record audio directly in the browser.
- Sharing: Allow users to share notes or summaries.
- UI/UX Polish: Further refine loading states, error handling, transitions, and visual design.
- More AI Features: Explore sentiment analysis, keyword highlighting, chapter generation within transcripts.
- AssemblyAI for transcription services.
- Google Generative AI (Gemini) for analysis.
- Google Custom Search API for resource finding.
- React, Flask, Vite, and other open-source libraries used.
- BitCamp 2025!