CrackIt is a full-stack aptitude test web application that lets users practice topic-wise tests, track their performance over time, and improve their scores.
Users can register, log in, select a test category and difficulty, attempt timed MCQ tests, and view their performance history β all in one seamless platform.
Register / Login
β
Browse Test Categories & Topics
β
Select Difficulty (Easy / Medium / Hard)
β
Attempt MCQ Test
β
View Score & Explanations
β
Track Performance History
- Topic-wise aptitude tests (categorized and difficulty-based)
- MCQ format with 4 options per question
- Per-question explanations after submission
- Guest mode with a sample test (no login required)
- Register & login with JWT authentication
- Edit profile (name, phone)
- Secure password hashing with bcrypt
- Protected routes via auth middleware
- View test history by topic
- Score breakdown per attempt
- Visual charts powered by Recharts
- Dark mode support
- Smooth animations via Framer Motion
- Mobile responsive Bootstrap layout
- Toast notifications for user feedback
- Glassmorphism-inspired design
- RESTful API with Express.js
- MongoDB + Mongoose for data persistence
- Bulk question upload support
- Modular MVC architecture
| Layer | Tech |
|---|---|
| Frontend | React 19, Vite, React Router v7 |
| UI | Bootstrap 5, Framer Motion, Lucide React |
| Charts | Recharts |
| State | Zustand |
| HTTP Client | Axios |
| Backend | Node.js, Express.js |
| Database | MongoDB, Mongoose |
| Auth | JWT, bcryptjs |
| Dev Tools | Nodemon, ESLint |
CrackIt/
β
βββ backend/
β βββ index.js
β βββ .env
β βββ config/
β β βββ db.js
β βββ controllers/
β β βββ userController.js
β β βββ questionController.js
β β βββ testResultController.js
β βββ middleware/
β β βββ authMiddleware.js
β βββ models/
β β βββ User.js
β β βββ Questions.js
β β βββ QuestionPack.js
β β βββ TestResult.js
β β βββ UserMsg.js
β βββ routes/
β βββ userRoutes.js
β βββ aptTestRoutes.js
β βββ testResultRoutes.js
β
βββ frontend/
βββ index.html
βββ src/
βββ App.jsx
βββ pages/
β βββ HomePage.jsx
β βββ TestCategories.jsx
β βββ TestDifficulty.jsx
β βββ TestPage.jsx
β βββ PerformanceTracker.jsx
βββ components/
β βββ common/
β βββ home/
β βββ modals/
βββ store/
βββ utils/
| Method | Endpoint | Description |
|---|---|---|
| POST | /register |
Register a new user |
| POST | /login |
Login & get JWT |
| PUT | /update |
Update user profile |
| Method | Endpoint | Description |
|---|---|---|
| GET | /get |
Get questions by pack ID |
| GET | /getList |
Get packs by topic |
| POST | /add |
Add a single question |
| POST | /bulk-add |
Bulk upload questions |
| Method | Endpoint | Description |
|---|---|---|
| POST | /post |
Save a test result |
| GET | /:email |
Get results by user |
git clone https://github.com/your-username/CrackIt.git
cd CrackItcd backend
npm installCreate a .env file in the backend/ folder:
PORT=3000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secretStart the backend:
npm run devcd frontend
npm install
npm run devhttp://localhost:5173
- Admin panel for question management
- Email verification on registration
- AI-based weak topic suggestions
This project demonstrates:
- β Full-stack MERN development
- β JWT-based authentication & protected routes
- β RESTful API design with MVC pattern
- β State management with Zustand
- β Data visualization with Recharts
Give it a star β it helps a lot!