A full-stack quiz application built using Node.js, Express.js, MySQL, and vanilla HTML, CSS, JavaScript.
- ⚙️ Backend: Node.js, Express.js
- 🗄️ Database: MySQL
- 🎨 Frontend: HTML, CSS, JavaScript
- 🔐 Authentication: express-session, bcryptjs
thinkiq/
├── config/
│ └── db.js
├── routes/
│ ├── auth.js
│ ├── quizzes.js
│ └── results.js
├── public/
│ ├── login.html
│ ├── register.html
│ ├── admindashboard.html
│ ├── userdashboard.html
│ └── style.css
├── database.sql
├── server.js
├── package.json
├── .env.example
└── README.md
- Install Node.js (v16+)
- Install MySQL Server
Run the SQL file:
source database.sql;Or manually execute the queries inside database.sql.
cp .env.example .envUpdate .env file:
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=thinkiq
SESSION_SECRET=your_secret_key
PORT=3000
npm install# Production
npm start
# Development
npm run dev- Create quizzes
- Delete quizzes
- View all user results
- Register & Login
- Take quizzes
- View own results
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Register user |
| POST | /api/auth/login |
Login |
| POST | /api/auth/logout |
Logout |
| GET | /api/auth/me |
Get current session |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/quizzes |
Get all quizzes |
| GET | /api/quizzes/:id |
Get quiz details |
| POST | /api/quizzes |
Create quiz (Admin) |
| DELETE | /api/quizzes/:id |
Delete quiz |
| POST | /api/quizzes/:id/submit |
Submit answers |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/results |
All results (Admin) |
| GET | /api/results/mine |
User results |
- 🔑 Passwords hashed using bcryptjs
- 📦 Session-based authentication using express-session
- 🛡️ Role-based access control (Admin/User)
- 🚫 Answers hidden during quiz attempts
- 🌐 Deploy to cloud (Render / Railway)
- 📱 Responsive UI design
- 📊 Analytics dashboard
- 🧠 AI-based quiz recommendations