๐ Awarded "Best Project" - Sem 5 TEIT
ExamEdge is a full-stack web application built to simplify and centralize UPSC exam preparation. The platform combines a MERN-based frontend, Firebase authentication, and a unique automation-driven resource update pipeline using Python and n8n.
The goal of ExamEdge is to reduce fragmentation in exam preparation by providing a single, structured platform for study resources, practice, and progress tracking.
- Secure Access: Powered by Firebase Authentication.
- Session Management: Robust email/password login with session persistence.
- Security: Protected routes ensuring data privacy for authenticated users.
- Digital Library: Centralized repository organized by Subjects and Topics.
- Scalable Design: Supports locally mounted or externally hosted resources.
- Smart Search: Quickly filter materials by category.
ExamEdge eliminates manual uploads using a smart automation pipeline:
- n8n Workflows: Actively monitor local folders for new PDFs.
- Python Scripting: Automatically parses metadata and updates the application database.
- Instant Sync: The frontend reflects new resources without manual redeployment.
- Topic-wise Quizzes: Self-assessment modules for every subject.
- Progress Tracking: Visual analytics of user activity.
- Leaderboard: Real-time ranking system to encourage consistency.
| Domain | Tech Used |
|---|---|
| Frontend | React.js (Vite), Tailwind CSS |
| Authentication | Firebase Authentication (Google Sign-In) |
| Resource Storage | Local File System (PDF-based resources) |
| Automation | Python, n8n (Workflow Automation) |
| Tools | Git, GitHub, Firebase Console |
Note: The application does not use a traditional backend database or server. Firebase is used only for authentication, while study resources are stored locally to minimize operational costs.
- Frontend: Communicates with the backend via REST APIs.
- Auth: Firebase handles secure authentication and token management.
- Database: MongoDB stores user profiles, quiz scores, and app state.
- Automation:
- n8n triggers workflows upon file detection.
- Python processes file metadata and updates the JSON registry.
| Dashboard | Quiz Interface |
|---|---|
![]() |
![]() |
| Study Resources | Leaderboard |
|---|---|
![]() |
![]() |
| Badges & Achievements | User Profile |
|---|---|
![]() |
![]() |
| n8n Automation Workflow | Firebase Console |
|---|---|
![]() |
![]() |
ExamEdge/
โโโ backend/ # Backend services
โ โโโ node_modules/
โ โโโ migrate.py # Backend automation / migration script
โ โโโ requirements.txt # Python dependencies
โ โโโ package.json
โ โโโ package-lock.json
โ โโโ serviceAccountKey.json # Firebase Admin SDK key (ignored)
โ
โโโ public/ # Public assets
โ โโโ resources/ # Study resources (ignored from Git)
โ โโโ vite.svg
โ
โโโ src/ # React frontend
โ โโโ assets/ # Frontend static assets
โ โโโ components/ # Reusable UI components
โ โโโ context/ # Global state & auth context
โ โโโ data/ # Static / mock data
โ โโโ pages/ # Application pages
โ โโโ App.jsx
โ โโโ Firebase.jsx # Firebase client configuration
โ โโโ index.css
โ โโโ main.jsx
โ
โโโ generate_resources.py # Resource indexing / automation script
โโโ .env # Environment variables (ignored)
โโโ .gitignore
โโโ eslint.config.js
โโโ index.html
โโโ package.json
โโโ package-lock.json
โโโ postcss.config.js
โโโ LICENSE
โโโ README.md
- Node.js (v18 or higher)
- MongoDB (Local or Atlas)
- Firebase Project (for Auth credentials)
- Python 3.x (for automation scripts)
-
Clone the Repository
git clone [https://github.com/thisisAtharv/ExamEdge.git](https://github.com/thisisAtharv/ExamEdge.git) cd ExamEdge -
Install Dependencies
# Install Root/Frontend dependencies npm install # Install Backend dependencies cd backend npm install cd ..
-
Environment Setup This project uses separate credentials for the frontend and backend configuration.
Frontend Environment Variables Create a
.envfile in the root directory of the project:VITE_GOOGLE_CLIENT_ID=your_google_client_id VITE_FIREBASE_API_KEY=your_api_key VITE_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com VITE_FIREBASE_PROJECT_ID=your_project_id VITE_FIREBASE_STORAGE_BUCKET=your_project_id.appspot.com VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id VITE_FIREBASE_APP_ID=your_app_id
Note: These values are used by the React frontend for authentication and Firebase integration. All variables prefixed with
VITE_are exposed to the client and are safe to use.Backend Configuration (Firebase Admin SDK) The backend uses a Firebase service account key for admin-level operations.
- Download the service account JSON file from the Firebase Console (Project Settings > Service Accounts).
- Place the file inside the backend directory:
backend/serviceAccountKey.json - Secure the file by ensuring it is listed in your
.gitignoreto exclude it from version control:backend/serviceAccountKey.json
-
Run the Application
npm run dev
- Building a scalable Full-Stack MERN application.
- Integrating third-party services like Firebase for secure authentication.
- Designing complex Automation Workflows using n8n.
- Implementing Role-Based Access Control (RBAC) basics.
- โ๏ธ Cloud Storage: Migration of local PDFs to AWS S3 / Firebase Storage.
- ๐ Advanced Analytics: AI-driven insights on user performance.
- ๐ฑ Mobile Responsiveness: Enhanced UI for mobile devices.
This project is licensed under the MIT License.







