Skip to content

Rahulyadavv123/campusOS

Repository files navigation

Campus Contest Platform - Complete Setup Guide

A full-stack MERN application for conducting programming contests with admin management and user participation capabilities.

📁 Project Structure

campusOS/
├── backend/                    # Node.js + Express server
│   ├── config/                # Configuration files
│   ├── models/                # MongoDB models
│   ├── controllers/           # Business logic
│   ├── routes/                # API routes
│   ├── middleware/            # Auth & upload middleware
│   ├── utils/                 # Utility functions
│   ├── server.js              # Main server file
│   ├── package.json
│   ├── .env.example
│   └── .gitignore
│
└── frontend/                  # React application
    ├── src/
    │   ├── pages/            # React pages
    │   ├── components/       # React components
    │   ├── context/          # Auth context
    │   ├── hooks/            # Custom hooks
    │   ├── utils/            # Utility functions
    │   ├── App.js
    │   ├── index.js
    │   └── index.css
    ├── public/
    ├── package.json
    ├── .env.example
    └── .gitignore

🚀 Quick Start

Backend Setup

cd backend
npm install
cp .env.example .env  # Configure with your credentials
npm run dev

Frontend Setup

cd frontend
npm install
cp .env.example .env
npm start

Frontend: http://localhost:3000 Backend: http://localhost:5000


🔧 Environment Variables

Backend (.env)

MONGODB_URI=mongodb://localhost:27017/campusOS
JWT_SECRET=your_secure_key
PORT=5000
CLOUDINARY_CLOUD_NAME=your_name
CLOUDINARY_API_KEY=your_key
CLOUDINARY_API_SECRET=your_secret
JUDGE0_API_KEY=your_key
JUDGE0_BASE_URL=https://judge0-ce.p.rapidapi.com
EMAIL_USER=your_email@gmail.com
EMAIL_PASSWORD=your_app_password

Frontend (.env)

REACT_APP_API_URL=http://localhost:5000/api

✨ Key Features

Admin Features

✅ Multi-step contest creation ✅ 3 question types: MCQ, Input, Coding ✅ Dynamic prize pool setup ✅ QR code & receipt upload (Cloudinary) ✅ Registration approval workflow ✅ View all contests with filters

User Features

✅ Browse upcoming contests ✅ Free/Paid registration ✅ QR code scanner for payments ✅ Contest interface with timer ✅ Leaderboard & results ✅ Code execution via Judge0


📡 API Endpoints

Auth

  • POST /api/auth/signup - Admin signup
  • POST /api/auth/login - Admin login

Contests

  • POST /api/contests - Create contest
  • GET /api/contests - Get all contests
  • POST /api/contests/add-question - Add question

Registrations

  • POST /api/registrations - Register user
  • GET /api/registrations/list/all - Get all registrations (admin)
  • PATCH /api/registrations/:id/approve - Approve (admin)
  • PATCH /api/registrations/:id/reject - Reject (admin)

Submissions

  • POST /api/submissions - Submit answer
  • GET /api/submissions/:contestId/leaderboard - Get leaderboard

🎯 Workflow

  1. Admin signs up & creates contest
  2. Admin uploads QR code (for paid contests)
  3. Admin adds questions (MCQ/Input/Coding)
  4. User registers for contest
  5. For paid: scans QR, uploads receipt
  6. Admin approves registration
  7. User joins contest when live
  8. Answers evaluated → Leaderboard generated

📚 Technologies

  • React, Node.js, Express, MongoDB
  • Cloudinary, Judge0, Nodemailer
  • Tailwind CSS, Axios

🚀 Deployment Ready

All code is production-ready with:

  • Error handling
  • Input validation
  • JWT authentication
  • Role-based access control
  • Cloud storage integration
  • Email notifications

Built with ❤️ for Campus Programming Contests

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages