NotePal is an AI-powered note-taking application that transforms text, images, audio, and video into concise, structured notes. It’s designed for students, professionals, and lifelong learners who want to save time and retain key information without manual effort.
- Quiz Generation: Automatically creates multiple-choice and short-answer quizzes based on uploaded content to reinforce learning.
- Text Editor: Rich text editor for manual note-taking, formatting, and organization.
- Note Generation: Summarizes documents, images, and transcribed audio/video into bullet-point notes using AI.
- Chatbot Assistance: Interactive chatbot that answers content-related questions and clarifies concepts in real time.
- OCR & Object Detection: Extracts text from images (PaddleOCR) and identifies objects (YOLOv5) for context-aware summaries.
- Multi-Modal Input: Supports
.txt,.pdf,.docx, image, and video uploads to cover all content types seamlessly.
- Python (Flask): Backend API and note-generating logic
- Next.js (JavaScript/TypeScript): Frontend interface and routing
- Firebase: Stores user-uploaded files, handles real-time data sync, and manages backend storage
- NextAuth: Manages user authentication and session handling in the frontend (used for login, route protection, and session checks)
- OpenAI API: Text summarization, quiz creation, and chatbot responses
- LangChain: Manages chatbot logic and connects LLMs to external data
- Pinecone: Stores embeddings and retrieves relevant content for the chatbot
- Whisper: Transcribes audio from video files
- PaddleOCR: Extracts text from images
- CLIP: Selects relevant images based on text context
- YOLOv5: Detects objects in images
- MoviePy & FFmpeg: Convert videos to MP4 and extract audio
- PyPDF2 & python-docx: Read and extract text from PDF and Word files
-
Clone the Repository
git clone https://github.com/nicolasgioanni/NotePal.git cd NotePal -
Backend Setup
- Create and activate a Python virtual environment:
python3 -m venv venv source venv/bin/activate - Install dependencies:
pip install --upgrade pip pip install -r requirements.txt
- Create and activate a Python virtual environment:
-
Frontend Setup
- Navigate to the frontend folder (if separate):
cd frontend - Install Node.js packages:
npm install
- Navigate to the frontend folder (if separate):
-
Environment Configuration
- Create a
.env.localfile in the project root with:OPENAI_API_KEY=your_openai_api_key NEXTAUTH_URL=https://mynotepal.ai
- (Optional) If using AWS S3:
AWS_ACCESS_KEY_ID=your_aws_access_key AWS_SECRET_ACCESS_KEY=your_aws_secret_key AWS_S3_BUCKET=your_s3_bucket_name
- Create a
-
FFmpeg Installation
- macOS:
brew install ffmpeg
- Ubuntu/Debian:
sudo apt-get install ffmpeg
- Windows: Download from ffmpeg.org and add to
PATH.
- macOS:
-
Start the Backend
export FLASK_APP=app.py export FLASK_ENV=development flask run
Backend runs at
http://localhost:5000. -
Start the Frontend
cd frontend npm run devFrontend runs at
http://localhost:3000. -
Live Application
- Access the live deployment at: https://mynotepal.ai
- Sign up or log in to upload files, generate notes, and use the chatbot.
-
API Example (cURL)
curl -X POST http://localhost:5000/api/process -H "Content-Type: application/json" -d '{ "file_type": "text", "file_path": "/absolute/path/to/file.pdf", "user_request": "Create a summary in bullet points" }'
-
Note Generation
- Processes text, images, and video to create structured notes.
- Orchestrates OCR, object detection, and text summarization pipelines.
-
Quiz Generation
- Analyzes generated notes to produce multiple-choice and short-answer quizzes.
-
Interactive Chatbot
- Responds to user queries based on processed content, leveraging OpenAI’s conversational models.
-
Document Parsing
- Extracts text from PDFs and Word documents using
PyPDF2andpython-docx.
- Extracts text from PDFs and Word documents using
-
Image & Video Handling
- Uses
PaddleOCRandYOLOv5for image analysis;Whisperfor audio transcription from videos.
- Uses
-
User Authentication
- Secures routes and API endpoints via NextAuth, ensuring only authenticated users can generate or view notes.
This project was founded and developed by Parth Gupta and Nicolas Gioanni to enhance learning and note-taking through AI. We welcome contributions! To contribute:
- Fork the repository.
- Create a new branch:
git checkout -b feature/your-feature
- Implement your changes and commit:
git commit -m "Add short description of changes" - Push to your branch:
git push origin feature/your-feature
- Open a Pull Request against the
mainbranch.
If you encounter bugs, have suggestions, or want to improve functionality, please open an issue. We will review and address contributions promptly.
This project is licensed under the Apache License 2.0. See the LICENSE file for details.