A centralized platform for students to search, preview, download, and contribute previous year question papers.
PaperVault helps students quickly find past exam papers using course codes, departments, years, and exam types while preventing duplicate uploads and maintaining an organized repository.
- Search by course code or course name
- 500ms debounced search
- Instant filtering
- Department
- Academic Year
- Semester
- Exam Type
- Preview PDFs directly in the browser
- No download required
- One-click PDF download
- Download counter
- Upload previous year papers
- PDF validation
- Automatic Cloudinary storage
Prevents uploading duplicate papers based on:
- Course Code
- Semester
- Year
- Exam Type
- Secure JWT Authentication
- Protected Routes
- Role-based Admin Access
- Delete uploaded papers
- Cloudinary cleanup on deletion
- Responsive Design
- Loading Skeletons
- Empty States
- Confirmation Dialogs
- Toast Notifications
- Pagination
- React
- TypeScript
- Vite
- Tailwind CSS
- React Router
- Axios
- React Hot Toast
- Node.js
- Express.js
- MongoDB
- Mongoose
- JWT Authentication
- Multer
- Cloudinary
Home
Upload
PaperVault
│
├── client/
│ ├── src/
│ ├── components/
│ ├── pages/
│ └── ...
│
├── server/
│ ├── controllers/
│ ├── middleware/
│ ├── models/
│ ├── routes/
│ ├── utils/
│ └── ...
│
└── README.md
PORT=
MONGO_URL=
JWT_SECRET=
CLIENT_URL=
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
NODE_ENV=VITE_API_URL=
VITE_GOOGLE_CLIENT_ID=git clone https://github.com/himanshuraj-demon/PaperVault.gitcd client
npm installcd server
npm installnpm run devnpm run dev- JWT Authentication
- Protected API Routes
- Secure Password Hashing
- Rate Limiting
- Helmet Middleware
- Input Validation
- Duplicate Upload Prevention
- PDF-only Uploads
- Redis Caching
- Admin Dashboard Analytics
- Bulk Upload
- Paper Reporting
- Course-wise Statistics
- OCR-based Search
- Email Notifications
Contributions are welcome.
If you'd like to improve PaperVault:
- Fork the repository
- Create a feature branch
git checkout -b feature/new-feature- Commit your changes
git commit -m "Added new feature"- Push
git push origin feature/new-feature- Open a Pull Request
This project is licensed under the MIT License.
Himanshu Raj
GitHub: https://github.com/himanshuraj-demon
If you found this project useful, consider giving it a ⭐ on GitHub.
It helps others discover the project!

