Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


📊 At a Glance

🌐 Live URL
Netlify
📦 Questions

1,151

📚 Subjects

12

🏢 Companies Tagged

10

⚙️ Grading
Server-side only

📖 Table of Contents

🧭 Getting to know it

  📌 Overview  ·  📸 Screenshots  ·  ✨ Features  ·  🔄 How It Works

🛠️ Building it

  🧰 Tech Stack  ·  📁 Project Structure  ·  🚀 Getting Started  ·  📡 API Reference

🌍 Beyond the code

  ☁️ Deployment  ·  🛠 Skills Demonstrated  ·  🗺️ Roadmap  ·  🤝 Contributing  ·  📬 Contact


📌 Overview

Prep Portal helps developers prepare for technical interviews without juggling five different tools.

Instead of scattered notes, random PDFs, and untracked practice, it brings everything — a 1,151-question bank, mock exams, bookmarks, and progress tracking — into one clean dashboard.

Built solo as a full-stack MERN project, covering the entire flow from JWT authentication and REST API design to a server-authoritative grading engine and a responsive React frontend.


📸 Screenshots

🏠 Landing Page

Landing page

🔐 Login & Register

Login page
Login
Register page
Register

Sign in with an existing account, or register a new one in seconds — no email verification needed.

📊 Dashboard

Dashboard overview
Overview — live totals & completion ring
Dashboard progress and activity
Progress & Activity — per-subject chart, difficulty split, recent activity

Live totals, per-subject progress, difficulty breakdown, and recent activity — all on one screen, no clicking required.

📚 Subjects & 📝 Question Bank

Subjects grid
Subjects — 12 subjects, 1,151 questions total
Question bank
Question Bank — search, filter & bookmark

🎯 Filter by difficulty — Easy · Medium · Hard

Easy difficulty questions
🟢 Easy
Medium difficulty questions
🟡 Medium
Hard difficulty questions
🔴 Hard

🧪 Mock Test — Setup → Live Exam → Server-Graded Result

Mock test setup
Setup
Mock test in progress
Live Exam
Mock test result and paper review
Result & Paper Review

🔖 Bookmarks

Bookmarked questions

👤 Profile

User profile page

Bio, skills, institute, and experience — all editable inline, no separate settings page.

🛡️ Admin Panel

Admin - manage users
Manage Users — promote, demote & remove accounts
Admin - manage questions
Manage Questions — moderate the 1,151-question bank

✨ Features

🔐 Authentication & Accounts

✅   JWT-based register / login / logout
✅   Forgot-password via a security question — no email service needed
✅   Role-based access (user / admin)

📊 Dashboard

✅   Live totals: 1,151 questions, reviewed count, bookmarks, 12 subjects
✅   Progress-by-subject chart and an overall completion ring
✅   Difficulty spread and a recent-activity feed

📚 Question Bank

✅   Search, filter by subject / difficulty / company
✅   Bookmark tricky questions, mark them reviewed
✅   12 subjects · 10 tagged companies

📝 Mock Tests

✅   Pick subject, question count & duration
✅   Real MCQ exam, graded server-side
✅   Full paper review: your answer vs. correct answer, per question
✅   Complete test history with score, subject, and duration logged

👤 Profile & Admin

✅   Personal profile: bio, skills, institute, experience
✅   Admin panel: manage users (promote / demote / remove) and moderate questions

⚡ Built for Zero Cost

✅   No paid APIs, no email service, no license fees
✅   Runs entirely on free tiers

🏢 Companies tagged on questions


📚 Question distribution across all 12 subjects — 1,151 total

Subject Questions Subject Questions Subject Questions
🌐 HTML 154 Java 141 📜 JavaScript 132
🎨 CSS 123 🅱️ Bootstrap 115 🚂 Express.js 98
🍃 MongoDB 97 🟢 Node.js 86 🅰️ Angular 71
⚛️ React 57 🗄️ SQL 52 🍃 Spring Boot 25

🎯 Difficulty spread

LevelDistributionCount
🟢 Easy████████████████████████░░░░░░░░░░░░░░░░ 59%676
🟡 Medium███████████████░░░░░░░░░░░░░░░░░░░░░░░░░ 36%417
🔴 Hard██░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 5%58

🔄 How It Works

User journey, end to end:

flowchart LR
    A([Visitor]) --> B[Register / Login]
    B --> C[Dashboard]
    C --> D[Browse Question Bank]
    C --> E[Start Mock Test]
    D --> F[Bookmark / Mark Reviewed]
    E --> G[Server Grades Answers]
    G --> H[Full Paper Review]
    F --> C
    H --> C
    C --> I{Is Admin?}
    I -- Yes --> J[Manage Users & Questions]
    I -- No --> K[Edit Own Profile]
Loading

Mock test grading — why the server is always the source of truth:

sequenceDiagram
    participant U as User (Browser)
    participant F as React Frontend
    participant A as Express API
    participant DB as MongoDB

    U->>F: Pick subject, count, duration
    F->>A: GET /api/mocktest/start
    A->>DB: Fetch random MCQ-ready questions
    DB-->>A: Questions (options only, no answers sent)
    A-->>F: Question set
    U->>F: Answer questions, submit
    F->>A: POST /api/mocktest/submit (answers)
    A->>DB: Compare answers to stored correct options
    DB-->>A: Correct answers
    A-->>F: Score + full paper review
    F-->>U: Result screen with every Q&A
Loading

🧰 Tech Stack


LayerTechnologies
🎨 FrontendReact (Vite), React Router, Redux Toolkit, Axios, Formik, Yup, CSS Modules, React Icons
⚙️ BackendNode.js, Express.js, JWT, bcryptjs
🗄️ DatabaseMongoDB + Mongoose (local or MongoDB Atlas free tier)
☁️ DeploymentFrontend → Netlify · Backend → Render · Database → MongoDB Atlas

📁 Project Structure

interview-prep-portal/
├── backend/
│   ├── config/db.js
│   ├── data/               # 12 question banks (React, Node, Java, SQL, Spring Boot, ...)
│   ├── models/             # User, Question, Subject, Bookmark, Result
│   ├── middleware/         # auth (JWT), admin
│   ├── controllers/
│   ├── routes/
│   ├── utils/              # generateToken, seedData
│   └── server.js
├── frontend/
│   └── src/
│       ├── app/store.js
│       ├── api/axiosInstance.js
│       ├── features/       # auth, dashboard, questions, subjects, bookmarks, mocktest, profile, admin
│       └── components/     # Navbar, Sidebar, Layout, ProtectedRoute
└── screenshots/            # README preview images

🚀 Getting Started

✅ Prerequisites

  • Node.js 18+
  • MongoDB running locally, or a free MongoDB Atlas cluster

1️⃣ Clone the repo

git clone https://github.com/monika0712/interview-preparation-portal.git
cd interview-preparation-portal

2️⃣ Backend setup

cd backend
npm install
cp .env.example .env

Edit .env with your own values:

PORT=5000
MONGO_URI=mongodb://localhost:27017/interview_prep
JWT_SECRET=change_this_to_a_long_random_secret
JWT_EXPIRE=7d
CLIENT_URL=http://localhost:5173

Seed the database with 12 subjects, 1,151 interview questions, and a demo admin account:

npm run seed
npm run dev

The API runs at http://localhost:5000/api.

3️⃣ Frontend setup

In a new terminal:

cd frontend
npm install
cp .env.example .env
npm run dev

The app runs at http://localhost:5173.

4️⃣ Log in

AccountEmailPassword
Demo admindemo@interviewprep.comdemo1234

Or register your own account at /register — you'll still see all seeded questions, but your personal reviewed/bookmark counts start at zero.

🔧 Promote your own account to admin (optional)

Run in mongosh:

use interview_prep
db.users.updateOne({ email: "you@example.com" }, { $set: { role: "admin" } })

Log out and back in — you'll see the Admin link in the sidebar.


📡 API Reference

🔐 Auth

MethodEndpointDescription
/api/auth/registerCreate account
/api/auth/loginLog in, returns JWT
/api/auth/forgot-password/questionGet security question
/api/auth/forgot-password/resetReset password

📚 Questions & Bookmarks

MethodEndpointDescription
/api/questionsList / search / filter questions
/api/questionsCreate question
/api/questions/:idUpdate question
/api/questions/:idDelete question
/api/questions/:id/solveToggle reviewed
/api/bookmarksList / toggle bookmarks
/api/subjectsList subjects

📝 Mock Test & Dashboard

MethodEndpointDescription
/api/mocktest/startGet random questions for a test
/api/mocktest/submitSubmit test result (server-graded)
/api/dashboardDashboard stats

👤 Profile & Admin

MethodEndpointDescription
/api/profileView / update profile
/api/admin/usersList all users
/api/admin/users/:id/rolePromote / demote a user
/api/admin/users/:idRemove a user
/api/admin/questions/:idRemove a question

☁️ Deployment (all free tiers)

ServiceWhereNotes
🎨 FrontendNetlifyBuild command: npm run build, publish dir: dist
⚙️ BackendRenderRoot: backend, build: npm install, start: npm start
🗄️ DatabaseMongoDB AtlasFree M0 cluster

🛠 Skills Demonstrated

🎨 Frontend

  • Component-driven React + Vite
  • Redux Toolkit for global state
  • Formik + Yup form validation
  • Protected, role-based routing

⚙️ Backend

  • RESTful API design in Express
  • JWT auth & middleware
  • Server-authoritative grading logic
  • Mongoose schema design across 12 question banks

🏗️ Engineering

  • Secrets kept out of Git via .env
  • Zero-cost deployment pipeline
  • Clean, incremental Git history

🗺️ Roadmap

ItemStatus
Pagination for the 1,151-question list
Recharts-powered analytics on the progress tracker
Profile photo upload (Cloudinary free tier)
Per-question discussion threads

🤝 Contributing

Contributions, issues, and feature requests are welcome!

StepAction
1️⃣Fork the project
2️⃣Create your feature branch — git checkout -b feature/amazing-feature
3️⃣Commit your changes — git commit -m 'Add amazing feature'
4️⃣Push to the branch — git push origin feature/amazing-feature
5️⃣Open a Pull Request

📬 Contact

Monika Patil

Email GitHub Live Demo

⭐ If this project helped you, consider giving it a star — it really helps!

About

A modern MERN Stack Interview Preparation Portal featuring MCQs, coding questions, mock tests, bookmarks, progress tracking, and an admin dashboard.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages