Sistema para avaliar códigos de forma automatizada.
  • TypeScript 94.5%
  • Dockerfile 3.2%
  • CSS 2.2%
  • JavaScript 0.1%
Find a file
2025-06-15 11:31:40 -04:00
backend Trazendo mudanças que deveriam ficar idependente de como vai fazer a autenticação ainda 2025-06-15 11:24:46 -04:00
frontend Mudanças que estavam sem fazer commit, experimentos com layout e flexbox 2025-06-11 21:50:22 -04:00
.gitignore Corrigido erros typescript, ainda faltar remover todos os tipos any 2024-06-17 20:25:55 -04:00
.gitlab-ci.yml Experimentando com orientação a objetos e reutilização de código, refatorado backend 2025-03-02 14:38:27 -04:00
README.md Adicionado Linguagens Java, Python e Portguol, padrão enviar entrada como argumentos do programa 2023-11-26 18:40:26 -04:00

Avaliador

Sistema para avaliar códigos de forma automatizada.

Como funciona

A ideia central é executar códigos e comparar a saída da execução com o que é esperado a ser produzido, para vários pares entrada-saída preparados anteriormente.

Já que só precisa executar o código e ver a saída que produz, o funcionamento é praticamente o mesmo para qualquer linguagem de programação. E considerando também as questões de segurança que podem surgir, este sistema utilizará containers Docker para executar os códigos.

Docker

Por utilizar Docker, o ambiente será controlado e isolado, permitindo algum nível de segurança neste sistema. As imagens serão construídas de forma a que dentro do container seja um usuário comum a executar o código. Além disso é possível limitar uso de CPU e Memória, além de instituir um tempo máximo (timeout) de execução caso ocorra uma situação de programa que nunca finaliza sua execução.

Arquitetura

O sistema é dividido nas seguintes partes:

  • Banco de dados: MongoDB

    • Usuários
    • Exercícios e seus pares entrada-saída
    • Avaliação de um código: status e feedback
  • Backend: API NodeJS

    • Cadastrar Exercícios com pares entrada-saída de execução
    • Gerenciar avaliação do código (Rota que agenda, obtêm status, etc... da avaliação de um código específico)
  • Frontend: Site NextJS

    • Autenticar como usuário
    • Listar códigos enviados em cada exercício e seus feedbacks
    • Enviar código para ser avaliado em exercício específico

apt-get install build-essential