Skip to content

KAMRONBEK/levelz

Repository files navigation

🎓 Qurilishda Loyihalash Malakasi - Exam Platform

AI-powered online exam proctoring system built with MERN stack for Construction Design Skills Assessment.

🌐 Live Production

🚀 Quick Start

Prerequisites

  • Node.js 18+
  • MongoDB
  • Vercel account (for deployment)

Local Development

# Install all dependencies
npm run install-all

# Start both servers (backend + frontend)
npm run dev

# Or start individually
cd backend && npm run server  # Backend on :5005
cd frontend && npm start       # Frontend on :3000

Environment Variables

Backend (.env):

NODE_ENV=development
PORT=5005
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_min_32_chars

Frontend (.env):

VITE_API_BASE_URL=http://localhost:5005
VITE_APP_ENV=development

📁 Project Structure

qurilish-exam/
├── backend/              # Express.js API
│   ├── config/          # Database config
│   ├── controllers/     # Business logic
│   ├── models/          # Mongoose schemas
│   ├── routes/          # API routes
│   ├── middleware/      # Auth & error handling
│   └── server.js        # Entry point
├── frontend/            # React + TypeScript
│   ├── src/
│   │   ├── components/  # Reusable components
│   │   ├── views/       # Page components
│   │   ├── slices/      # Redux slices
│   │   ├── layouts/     # Layout components
│   │   └── utils/       # Helper functions
│   └── vite.config.ts   # Vite configuration
└── package.json         # Root scripts

🛠️ Tech Stack

Backend

  • Runtime: Node.js + Express.js
  • Database: MongoDB + Mongoose
  • Auth: JWT + bcrypt
  • Deployment: Vercel Serverless Functions

Frontend

  • Framework: React 18 + TypeScript
  • Build Tool: Vite
  • UI: Material-UI (MUI) v5
  • State: Redux Toolkit + RTK Query
  • AI/ML: TensorFlow.js
  • Camera: react-webcam

✨ Key Features

For Teachers

  • Create and manage exams
  • Add multiple choice questions
  • Set time limits and scheduling
  • View student results and analytics
  • Monitor AI-detected cheating logs
  • Real-time exam monitoring

For Students

  • Browse available exams
  • Take timed exams
  • Real-time webcam monitoring
  • Face verification
  • Submit answers and view results

AI Proctoring

  • Face Detection: Ensures student face is visible
  • Multiple Face Detection: Alerts if multiple people detected
  • Object Detection: Detects phones, books, prohibited objects
  • Tab Switch Detection: Monitors for tab switching
  • Real-time Logging: All incidents logged for teacher review

🔐 Security

  • JWT-based authentication
  • Bcrypt password hashing
  • CORS protection
  • Rate limiting ready
  • Environment variable protection
  • HTTPS enforced in production

📦 Deployment

Production (Vercel)

Backend: Linked to levelz-api project

cd backend
vercel --prod

Frontend: Linked to levelz-web project

cd frontend
vercel --prod

DNS Configuration

A      @    76.76.21.21
CNAME  www  cname.vercel-dns.com
CNAME  api  cname.vercel-dns.com

Production Environment Variables

Backend (Vercel):

NODE_ENV=production
JWT_SECRET=your_secure_secret
MONGO_URI=your_mongodb_uri

Frontend (Vercel):

VITE_API_BASE_URL=https://api.levelz.uz
VITE_APP_ENV=production

📝 API Documentation

Authentication

  • POST /api/users/auth - Login
  • POST /api/users - Register
  • POST /api/users/logout - Logout
  • GET /api/users/profile - Get profile
  • PUT /api/users/profile - Update profile

Exams

  • GET /api/exams - Get all exams
  • POST /api/exams - Create exam (teacher only)
  • GET /api/exams/:id - Get exam details
  • PUT /api/exams/:id - Update exam (teacher only)
  • DELETE /api/exams/:id - Delete exam (teacher only)

Results

  • GET /api/results - Get all results
  • POST /api/results - Submit exam result
  • GET /api/results/:id - Get specific result
  • GET /api/results/exam/:examId - Get results by exam

🧪 Testing

# Run tests (when implemented)
npm test

# Type check
cd frontend && npm run type-check

# Lint
cd frontend && npm run lint

🤝 Contributing

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/AmazingFeature)
  3. Commit changes (git commit -m 'Add AmazingFeature')
  4. Push to branch (git push origin feature/AmazingFeature)
  5. Open Pull Request

📄 License

This project is private and proprietary.

📞 Support

For issues or questions, contact the development team.


Developed by: SoftWhere UZ Team
Last Updated: October 2025

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors