A full-stack web application where students can upload, browse, search, and review academic notes.
This project was collaboratively built by a team of 6 students from Newton School of Technology, under the guidance of faculty members and with support from the Software Development Club (NST-SDC). What began as a summer open-source initiative for solving students real-world problem became a hands-on way to strengthen our skills in frontend, backend, databases, deployment, and teamwork.
π Live Website
- Upload notes (PDF, DOCX, etc.)
- Browse & search by subject, title, or tags
- Personalized dashboard for managing uploaded and downloaded notes
- Ratings & reviews system to improve note quality
- Secure login/signup with Firebase Authentication
- Clean, responsive design for mobile and desktop
Layer | Tools Used |
---|---|
Frontend | React, Tailwind CSS |
Backend | Node.js, Express.js |
Database | MongoDB (Mongoose) |
Authentication | Google Authentication |
Deployment | Vercel (Frontend), Render (Backend) |
- HomePage (the landing page, light mode & dark mode toggle present)


- Dashboard (tracks and updates all the activities, and can also navigate to different webpages)


3a. Browse page (with all the relevant subjects and filters)
3b. Review Button (On clicking the review button, it opens up this detailed information about the particular note, along with a preview and reviews)
- Notes Upload Page (with functional and clear layout)

- Doubts Page (helps in viewing and filtering all the doubts by users, also uploading the doubts)


- Notes Page (Tracks uploaded and downloaded notes)

git clone https://github.com/your-username/notes-sharing-platform.git
cd notes-sharing-platform
npm install
cd backend
npm install
cd ../frontend
npm install
Create a .env file in both the backend/ and frontend/ folders.
=> Example structure:
backend/.env
MONGO_URI=<your_mongo_uri>
JWT_SECRET=<your_jwt_secret>
PORT=3000
GOOGLE_CLIENT_ID=<your_google_client_id>
GOOGLE_CLIENT_SECRET=<your_google_client_secret>
FRONTEND_URL=http://localhost:5173
CLOUDINARY_CLOUD_NAME=<your_cloudinary_cloud_name>
CLOUDINARY_API_KEY=<your_cloudinary_api_key>
CLOUDINARY_API_SECRET=<your_cloudinary_api_secret>
CLOUDINARY_UPLOAD_PRESET=<your_upload_preset>
CLOUDINARY_UPLOAD_FOLDER=<your_upload_folder>
RESEND_API_KEY=<your_resend_api_key>
BACKEND_URL=http://localhost:3000
YOUTUBE_API_KEY=your_youtube_api_key_here
GOOGLE_SEARCH_API_KEY=your_google_search_api_key_here
GOOGLE_CUSTOM_SEARCH_ENGINE_ID=your_custom_search_engine_id_here
frontend/.env
VITE_CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
VITE_CLOUDINARY_PRESET=your_upload_preset
VITE_API_BASE_URL=http://localhost:3000
Start both the backend and frontend in separate terminals:
Backend
cd backend
npm start
Frontend
cd frontend
npm run dev
Now open http://localhost:5173 in your browser.
notes-sharing-platform/
βββ frontend/ # React app
β βββ src/
β β βββ components/
β β βββ pages/
β β βββ utils/
β β
β βββ public/
β
βββ backend/ # Node.js + Express API
β βββ controllers/
β βββ models/
β βββ routes/
β βββ middlewares/
β βββ index.js
β
βββ .gitignore
βββ README.md
βββ LICENSE
Weβd love your help!
- Fork the repository
- Create a new branch:
git checkout -b feature/your-feature
- Make your changes
- Commit:
git commit -m "Add your feature"
- Push:
git push origin feature/your-feature
- Open a Pull Request on GitHub
- Vipul Yadav ([email protected])
- Mridul ([email protected])
- Riddhi Khera ([email protected])
- Nitin Sahu ([email protected])
- Ananya Gupta ([email protected])
- Amrit Kumar Mahto ([email protected])