Skip to content

Tapeline/Dockingjudge

Repository files navigation

Dockingjudge

⚠ WIP, MVP



Demo

View full demo

View full demo

Deployment

(you may want to replace the domain name in files with you own)

docker build -t dockingjudge-unit JudgeUnit
docker compose up -d rabbitmq    # for some reason rabbitmq sometimes does not start properly. I am investigating this issue
docker compose up -d --build

also replace example sensitive information in .env (like SECRET_KEY).

You can consult docs for more info.

Dev env

If you want to deploy locally, without a domain, then you need to deploy frontend separately:

  1. $ cd Frontend
    $ npm install --legacy-peer-deps
    $ npm run dev -- --host --port 3000
  2. # api_gateway_nginx.conf
    
    # proxy_pass http://frontend.service:3000;
    proxy_pass http://host.docker.internal:3000;

Structure

Dockingjudge consists of several services:

(formalised arch definition located in dockingjudge.aisle)

Planned

First round

  • More security on judgelet
    • run judgelet as non-root
    • (maybe) introduce bubblewrap
  • Add more compilers (at least cpp)
  • Add tests
    • judgelet
    • judge svc
    • solution svc
    • contest svc
    • account svc
    • e2e
  • Lint and test in CI
    • judgelet
    • judge svc
    • solution svc
    • contest svc
    • account svc
    • e2e
  • Move config to config files
    • judgelet
    • solution svc
    • contest svc
    • account svc
  • Add metrics
    • contest svc
    • account svc
  • tidy up in docker-compose.yml
  • deploy from ghcr.io

Second round

  • Make frontend locally deployable in container
  • Massive frontend rework
  • Add contest timer
  • Add profile pictures
  • Get rid of pydantic in application layer (bruh)

Third round

  • Migrate from RMQ to NATS
  • Consider using inbox pattern with judgeservice
  • Add tracing
    • judge svc
    • solution svc
    • contest svc
    • account svc
  • Load testing
  • Refactor Gherkin tests

Fourth round

  • Add messages
  • add DL (disk limit) verdict returned when sandbox occupies too much disk space
  • Public/private contests

Bugs

  • registration 400 "a server error occurred". Add more informative error message.
  • standings are messed up

Docs

  • Describe each service separately
    • judgelet
    • judge svc
    • solution svc
    • contest svc
    • account svc
  • Add openapi to docs

About

WIP programming contest management system

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published