logo
icon

LOJ

LOJ - LeLe Online Judge, modern competitive programming platform

template cover
Dideploy0 kali
Penerbitaiwandiannaodelele
Dibuat2026-06-21
Tag
WebDatabase

LOJ — LeLe Online Judge

LOJ is a modern online judge platform built with Next.js 16. It supports programming problem solving, contests, training tracks, an AI teaching assistant, and multi-engine code execution evaluation.

Features

  • Problem System — Create and manage programming problems with multiple test cases, self-test samples, and BlockNote rich text editing
  • Contest System — ACM / OI scoring modes, real-time rankings, independent problem copies
  • Training Tracks — Themed problem sets for progressive learning paths
  • AI Assistant — Integrated AI chat with problem-context-aware programming guidance
  • Multi-Engine Judging — Pluggable evaluation engines: OneCompiler (default), Judge0, Runoob
  • Code Editor — Monaco Editor (VS Code engine) with multi-language syntax highlighting
  • User System — NextAuth authentication, JWT sessions, role-based access control
  • Admin Panel — Full management for users, problems, contests, training, settings, storage
  • Storage Backends — Local filesystem / S3-compatible object storage
  • Security Hardening — Built-in rate limiting, permission validation, IP spoofing protection, SSRF protection

Services

This template deploys two services:

  1. postgresql — PostgreSQL 18 database for persistent storage
  2. loj-web — The LOJ application server built as a Docker image from ghcr.io/aiwandiannaodelele/loj

Tech Stack

TechnologyPurpose
Next.js 16React framework (App Router)
Tailwind CSS v4Styling
shadcn/uiUI component library
Prisma 7ORM / Database
PostgreSQL 18Database
NextAuth v5Authentication (credentials + JWT)
Monaco EditorCode editor
BlockNoteRich text editor
OneCompiler / Judge0Judging engines

Environment Variables

The following variables are pre-configured for you:

  • DB_PROVIDER — Set to postgresql
  • DATABASE_URL — Automatically linked to the PostgreSQL service via ${POSTGRES_CONNECTION_STRING}
  • NEXTAUTH_SECRET — JWT signing secret (auto-generated)

Getting Started

After deployment, visit your service URL. The first run will automatically initialize the database schema.

To set up OAuth login (GitHub/Google), add the following environment variables in the service settings:

  • AUTH_GITHUB_ID
  • AUTH_GITHUB_SECRET
  • AUTH_GOOGLE_ID
  • AUTH_GOOGLE_SECRET

Source Code

Updates

This template uses the latest image tag from ghcr.io. To update, rebuild the Docker image via GitHub Actions and trigger a redeploy in the Zeabur Dashboard.