$ show acm309/PutongOJ
PutongOJ is a full-stack online judge platform built as a pnpm monorepo with TypeScript across the stack. The backend is a Koa 3 server using MongoDB (Mongoose) and Redis, with a separate judger component that executes submissions in a privileged Docker sandbox via go-judge. The frontend is a Vue 3 application using PrimeVue, Pinia, and Vue Router; it provides problem CRUD, testcase management, contest ranklists/status, course management, discussions, and account settings. A shared package (@putong-oj/shared) contains Zod schemas and enums used by both server and client. Although primarily an application, it includes a data migration subsystem and a documented testcase data format, giving it a minor data-engineering flavor.
The LLM identified 1 files worth highlighting for reuse:
Defines a MigrationTask interface and a registry of MongoDB migrations that evolve a legacy schema to ObjectId references. Each migration has a key, description, and run function; migrations are idempotent-ish and log affected counts. The pattern is reusable for any MongoDB-backed application needing versioned, repeatable data migrations, though some migrations create tombstone problems or ghost users and should be reviewed before rerunning.