Organizuj aktywności
Zawody, kursy, laboratoria, warsztaty i treningi — z jednym spójnym modelem organizacji.
AlgoJudge to otwartoźródłowe oprogramowanie self-hosted do organizacji zawodów i kursów programistycznych z automatycznym ocenianiem przesłanych rozwiązań.
Bazowo webowa platforma łączy organizację aktywności, publikowanie zadań i automatyczną ocenę rozwiązań. Instytucje i zespoły mogą uruchomić własną instalację.
Zawody, kursy, laboratoria, warsztaty i treningi — z jednym spójnym modelem organizacji.
Treści, załączniki, terminy, limity, punktacja oraz polityki zgłoszeń zarządzane razem.
Kolejkowanie, izolowane wykonanie, testy, punkty i czytelne werdykty.
Zaprojektowany dla różnych aktywności i różnych sposobów oceniania.
Client dobiera renderer, Runner dobiera handler oceniania, a Server zachowuje wspólną kopertę danych. Dzięki temu rozszerzenie może powstać na obrzeżach systemu bez wiązania rdzenia ze szczegółami zadania.
Server utrzymuje trwały stan i zlecenia. Kod trafia do wymiennego Runnera, który działa w odseparowanym środowisku i odsyła wynik.
Manager konfiguruje zawody lub kurs.
Publikuje treść, pliki, limity i punktację.
Uczestnik poznaje wymagania i format.
Kod oraz metadane trafiają do Servera.
Server zapisuje zgłoszenie i kolejkuje pracę.
Runner pobiera zlecenie, izoluje wykonanie i testuje.
Status i werdykt wracają do aplikacji na żywo.
Każdy komponent ma jasno określoną odpowiedzialność. Server koordynuje i przechowuje dane, ale nigdy nie kompiluje ani nie uruchamia kodu.
Interfejs i renderery
Dane i koordynacja
Tożsamość i dostęp
Bezpieczne wykonanie
Nie zna semantyki konkretnego typu zadania.
Może działać w innej sieci, także za NAT-em.
Różne Runnery mogą obsługiwać różne typy zadań.
Wspólny rdzeń wspiera odmienne scenariusze organizacyjne, a rozszerzalność pozostawia miejsce na nowe modele oceniania.
Rundy, terminy, zgłoszenia, rankingi, punktacja i wyniki aktualizowane na żywo.
Serie zadań, wiele prób, prywatne wyniki i szczegółowa informacja zwrotna.
Szybkie aktywności i konta krótkoterminowe z wygasaniem dostępu.
Wyspecjalizowane Runnery, dodatkowe handlery i renderery — bez zmian w centralnym Serverze.
Client, Server, Runner, External-Runner i Ops są publiczne, a każdy z tych komponentów ma wydanie v0.1.0. Przejrzyj ich kod, zgłoś problem albo pomóż rozwijać platformę.
Webowy interfejs uczestników i managerów oraz warstwa rendererów.
Centralne API, trwały stan, uprawnienia, zlecenia i wyniki.
Wykonanie, izolacja i ocena kodu w wyspecjalizowanym środowisku.
Przekazuje rozwiązania do zewnętrznych systemów oceniających i zwraca ich werdykty bez lokalnego wykonywania kodu.
Produkcyjny stos Compose oraz skrypty do instalowania, aktualizowania i tworzenia kopii zapasowych wdrożenia self-hosted.
Publiczne repozytoria, dyskusje i wspólne miejsce rozwoju projektu.
Komponenty AlgoJudge są wersjonowane niezależnie. Ich pierwsze wydania zaczynają się od 0.1.0 i razem zapewniają kompletny przepływ self-hosted.
Client, Server, Runner, External-Runner i Ops zachowują własne historie wydań.
Kompletny przepływ od konfiguracji aktywności do automatycznie ocenionego wyniku.
Dalsze kierunki możliwe dzięki modularnej architekturze.
Zobacz architekturę, przejrzyj kod i pomóż kształtować platformę, która nie zamyka nowych pomysłów w jednym modelu oceniania.