ZapNotes is a web application designed to provide chapter-wise notes and a quiz feature to help users test their progress. The app allows users to upload PDF files, extract chapter-wise notes, and take quizzes to assess their knowledge. The system leverages Gemini to assist in generating notes from the uploaded PDFs.
-
📄 Chapter-wise Notes:
- Users can upload PDF files for each chapter.
- The system extracts the content and displays chapter-specific notes.
-
❓ Quiz Generation:
- A quiz is randomly generated from the notes to help users test their understanding and progress.
-
🧠 Gemini Integration:
- Gemini is utilized to assist in the extraction and generation of chapter-wise notes from the uploaded PDFs.
The project uses the following technologies:
-
Frontend:
- 🔧 React – A JavaScript library for building user interfaces.
-
Backends:
- 🐍 FastAPI – For handling PDF uploads and extracting chapter-wise notes.
- ⚡ Express.js – For generating and serving random quiz questions based on the extracted notes.
-
Other Tools:
- 🧠 Gemini – For content extraction and note generation from the uploaded PDFs.
The frontend is built using React, providing an intuitive UI for the users to upload PDF files and take quizzes.
- Clone this repository.
git clone https://github.com/hritesh-saha/ZapNotes.git
- Change directory:
cd ZapNotes
- Enter Notes Directory:
cd notes
FastAPI is used for handling PDF uploads and extracting notes. It processes the PDFs and returns chapter-wise notes.
- Enter FastAPI Backend Directory:
cd server
- Install dependencies:
pip install -r requirements.txt
- Start the FastAPI server:
uvicorn main:app --reload
Express handles quiz functionality. It generates random questions based on the notes and sends them to the frontend.
- Enter Express Backend Directory:
cd NodeServer
- Install dependencies:
npm install
- Start the Express server:
npm start
To run the FastAPI and Express backends, you need to set up the following environment variables:
-
Gemini API Key
This API key is required to interact with the Gemini service for extracting chapter-wise notes.GEMINI_API_KEY='your-gemini-api-key'
-
PORT
PORT='your-port-number'