LeetCode-like coding challenge platform with a code submission testing sandbox built around Docker. Called DeceitCode because it has anti-LLM prompts all over it that would hopefully reduce cheating with LLM-based tools. The frontend (React + Monaco) provides a workspace and submit/run flows. The backend (Node + Express + TypeScript + MongoDB) serves problems, auth, and judges submissions via a remote sandbox service (Go, Docker, gVisor).
This project uses a service from my separate repo for the RemoteCodeSandbox. See: https://github.com/joshL1215/RemoteCodeSandbox
- Node.js 22.x (or compatible) and npm
- Docker & docker-compose (recommended for Mongo)
- Git
-
Clone repository
git clone <this-repo-url> cd DeceitCode -
Start MongoDB
- With Docker Compose (my recommendation):
docker compose up -d
- With Docker Compose (my recommendation):
-
Run RemoteCodeSandbox
git clone https://github.com/joshL1215/RemoteCodeSandbox cd RemoteCodeSandbox go run cmd/api/main.go -
Configure server environment
- Create server/.env with at minimum:
- MONGO_URI (e.g. mongodb://localhost:27017/deceitcode)
- SANDBOX_URL (pointing to RemoteCodeSandbox instance that you ran)
- APP_ORIGIN (frontend origin)
- JWT_SECRET
- JWT_REFRESH_SECRET
- Example:
MONGO_URI=mongodb://localhost:27017/deceitcode SANDBOX_URL=http://localhost:3000/sandbox APP_ORIGIN=http://localhost:5173 JWT_SECRET=your_jwt_secret JWT_REFRESH_SECRET=your_refresh_secret
- Create server/.env with at minimum:
-
Install & run backend
cd server npm ci npm run dev- Server defaults to http://localhost:5000 (see server/src/server.ts)
-
Seed problems (optional)
cd server npm run seed -
Install & run frontend
cd client npm ci npm run dev- Open the Vite URL printed in terminal (default: http://localhost:5173). The frontend will call the backend at the server origin configured (APP_ORIGIN/CORS).


