Skip to content

Repository files navigation

MujCode 🚀

MujCode is a comprehensive, full-stack educational and Applicant Tracking System (ATS) platform tailored for universities. It bridges the gap between students, faculty, and hiring companies in a single, high-performance platform.

MujCode Banner

✨ Key Features

🎓 For Students

  • Assignments & Case Studies: View and submit code, videos, and written assignments.
  • Online Compiler: Built-in code editor (Monaco) with a secure execution queue.
  • Placement ATS: View active placement drives, apply to jobs, and track application status.
  • Real-time Notifications: Get instantly notified about grades, new assignments, and placement updates.

👨‍🏫 For Faculty

  • Course Management: Manage sections, branches, and student lists.
  • Grading & Submissions: Review student submissions, grade them, and provide detailed feedback.
  • Live Classroom: Real-time engagement with students.

🏢 For Companies (ATS)

  • Drive Management: Create and manage placement drives with eligibility criteria (CGPA, backlogs).
  • Candidate Tracking: View applicants, shortlist candidates, and process hiring workflows.

🛠️ Tech Stack

  • Frontend: React 18, Vite, Tailwind CSS, Radix UI, Monaco Editor.
  • Backend: Node.js (ESM), Custom High-Concurrency Router, Socket.IO.
  • Code Execution Engine: Self-Hosted Judge0 CE (v1.13.1) sandbox with asynchronous job tracking.
  • Database:
    • JSON File DB (Primary): Blazing fast, in-memory DB with atomic disk flushing.
    • MongoDB (Optional): Used for advanced ATS & Company Drive management.
    • Redis: Manages cache, WebSockets, and Judge0 execution queue.
  • Infrastructure: Docker, Docker Compose, GitHub Actions, AWS (ECR/EKS), Helm.

⚙️ Code Execution Architecture (Judge0 CE)

MujCode uses Judge0 CE (v1.13.1) as its sole sandboxed code-execution engine. Arbitrary user code is never executed directly on the main application server.

Frontend (Browser)
   │  [User clicks Run / Submit in Monaco Editor]
   ▼
Backend API (MujCode Server)
   │  [Rate limiting, input size guards, hidden test-case server-side protection]
   ▼
Judge0 API Gateway (Internal Docker Network)
   │  [Submissions created asynchronously with Base64 payloads]
   ▼
Judge0 Redis Queue & PostgreSQL
   │  [Decoupled queue of pending compilation jobs]
   ▼
Judge0 Workers (`isolate` Linux cgroup v1 sandbox)
   │  [Sandboxed compilation and execution with strict CPU & memory caps]
   ▼
Backend CodeExecutionService
   │  [Controlled polling, verdict & error normalization, score computation]
   ▼
Frontend UI
      [Real-time status updates: Accepted, Wrong Answer, Compilation Error, Runtime Error]

Detailed setup and production hardening guidelines are available in the Judge0 Deployment Guide.


🚀 Getting Started (Local Development)

Prerequisites

  • Node.js (v20+)
  • Docker & Docker Compose (optional but recommended)

1. Using Docker (Recommended)

The easiest way to get the entire stack (Frontend, Backend, Redis, MongoDB) running locally.

# 1. Clone the repository
git clone https://github.com/CSrajput-ux/mujcode-.git
cd mujcode-

# 2. Setup Environment Variables
cp backend/.env.example backend/.env
# Edit backend/.env and set a secure TOKEN_SECRET

# 3. Start the core services (Frontend + Backend)
docker compose up --build -d

# 4. (Optional) Start with ATS features (starts MongoDB)
docker compose --profile ats up --build -d

2. Manual Setup (Without Docker)

Backend Setup:

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

Frontend Setup:

cd frontend
npm install
npm run dev

🏗️ Architecture & Deployment

MujCode is designed with production-oriented architecture and scalability in mind

  • Multi-Stage Docker Builds: Optimized images for fast pulling and minimal footprint.
  • CI/CD Pipeline: Fully automated via GitHub Actions.
    • Runs Type Checks & Builds on PRs.
    • Pushes images to AWS ECR.
    • Deploys automatically to AWS EKS via Helm (deploy-staging & deploy-production).
  • Resilience: Unhandled exceptions and rejections are gracefully caught, flushing in-memory data to disk before shutdown to prevent data loss.

📂 Project Structure

mujcode/
├── backend/               # Node.js Backend Server
│   ├── src/
│   │   ├── data/          # JSON Database Storage
│   │   ├── modules/       # ATS and Domain Modules
│   │   ├── routes/        # API Endpoints
│   │   └── lib/           # Core Engine (Router, Storage, Auth)
│   └── compiler/          # Code Execution Engine
├── frontend/              # React/Vite Frontend App
│   ├── src/
│   │   ├── app/pages/     # Dashboards (Student, Faculty, Company)
│   │   └── components/    # Reusable UI Components
├── helm/                  # Kubernetes Helm Charts
├── terraform/             # IaC for AWS Infrastructure
└── .github/workflows/     # CI/CD Pipelines

🤝 Contributing

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

📝 License

Distributed under the MIT License. See LICENSE for more information.

About

Scalable university ecosystem for students, faculty, and recruiters.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages