Informatii generale
- Categorie: Web
- Judetul: București
- Surse: GitHub - xmc-dev/xmc: The competitive programming engine
- Homepage: https://x.xmc.fun
Descriere
XMC - XMC Manages Contests
XMC este o platforma online pentru organizarea si desfasurarea concursurilor de natura algoritmica, si pentru pregatirea elevilor cu probleme de informatica. Site-ul tine concursuri, sau arhive cu probleme, iar utilizatorii trimit solutii care sunt apoi evaluate automat pe baza mai multor teste. Utilizatorul poate apoi sa vada punctajul final al solutiei, ce a gresit si cate resurse a folosit programul solutie. De asemenea, continutul este structurat intr-un wiki in care paginile pot contine continut dinamic. Acestea pot prezenta enunturi pentru probleme, anunturi sau lectii. Platforma dispune de un evaluator automat, sistem de wiki pages si API REST pentru boti sau clienti alternativi si este impartita in mai multe servicii, in stilul microserviciilor, permitand scalarea platformei.
Avantajele arhitecturii pot aduce sporuri de performanta si scalabilitate. De exemplu, putem sa folosim un cluster de Raspberry Pi-uri in care fiecare sistem executa o instanta a evaluatorului. API-ul rest permite crearea de integrari cu alte servicii sau sisteme.
Tehnologii
Backendul este scris in totalitate in Go si foloseste libraria Micro pentru a usura implementarea arhitecturii cu microservicii.
Frontend-ul este un Single Page App bazat pe Preact si Redux. De asemenea, frontendul este complet decuplat de codul backendului si comunica strict prin API-ul REST.
Stack-ul complet:
Backend:
Go
Postgresql
Redis - pentru gestionarea token-urilor de acces
Git
Isolate - pentru a izola solutiile in curs de evaluare cu ajutorul Linux Containers
Consul - service discovery pentru servicii
Traefik - reverse proxy
Minio - folosit doar atunci cand nu este preferata folosirea serviciului Amazon S3.
Frontend:
Node.js - pentru compilarea frontendului
Yarn - pentru frontend, administreaza pachetele
Monaco Editor - folosit pentru editorul de pagini, vizualizatorul de cod etc
Preact - alternativa React pentru browsere moderne
Redux
Semantic UI
Webpack, Babel, Eslint
Cerinte sistem
Sistem bazat pe Linux < 4.15 cu suport pentru Linux Containers.
Realizatori
Tudor Roman
- Scoala: Colegiul National I.L. Caragiale
- Clasa: 9
- Judet: București
- Oras: București
Ciprian Ionescu
- Scoala: Colegiul Național “Grigore Moisil”
- Clasa: 9
- Judet: București
- Oras: București