- O sistema deve permitir que o usuário cadastre uma conta.
- O sistema deve permitir que o usuário realize login em sua conta.
- O sistema deve permitir que o usuário realize a criação de salas de estudo.
- O sistema deve permitir que o dono da sala exclua sua sala.
- O sistema deve permitir que colaboradores da sala convidem usuários para sua sala através de email ou nome de usuário.
- O sistema deve permitir que membros de uma sala saiam da sala.
- O sistema deve permitir que administradores da sala atribuam cargos para os membros da sala.
- O sistema deve permitir que colaboradores da sala removam membros da sala.
- O sistema deve permitir que colaboradores cadastrem exercícios na sala.
- O sistema deve permitir que colaboradores da sala criem novas categorias para os exercícios.
- O sistema deve permitir que o criador do exercício especifique casos de teste durante a criação do exercício.
- O sistema deve permitir que o criador do exercício cadastre soluções para o exercício.
- O sistema deve verificar as soluções cadastradas pelo criador do exercício com base nos casos de teste especificados por ele, informando-o sobre as discrepâncias encontradas.
- O sistema deve informar ao criador do exercício os erros contidos na solução cadastrada por ele, detalhando o tipo e localização do erro.
- O sistema deve permitir que o criador do exercício especifique dicas sobre o exercício.
- O sistema deve permitir que o criador do exercício defina a pontuação base do exercício.
- O sistema deve manter um registro de quem resolveu cada exercício.
- O sistema deve permitir a exclusão dos exercicios. que o criador do exercício e os administradores da sala excluam exercícios.
- O sistema deve permitir que o criador do exercício e os administradores da sala tornem o exercício invisível para usuários básicos.
- O sistema deve permitir que o criador do exercício e os administradores da sala editem os exercícios.
- O sistema deve permitir que o usuário entre nas salas às quais ele é membro.
- O sistema deve apresentar a lista de exercícios disponíveis para resolução na sala.
- O sistema deve permitir que o usuário veja a lista de membros da sala, indicando aqueles que estão online.
- O sistema deve permitir que o usuário filtre (dinamicamente) a lista de membros da sala.
- O sistema deve permitir que o usuário filtre a lista de exercícios.
- O sistema deve permitir que o usuário ordene a lista de exercícios.
- O sistema deve apresentar todos os detalhes do exercício ao ser selecionado pelo usuário.
- O sistema deve permitir que o usuário escolha uma linguagem ao iniciar a resolução do exercício.
- O sistema deve permitir que o usuário altere a linguagem durante o desenvolvimento da solução.
- O sistema deve permitir que o usuário solicite a visualização de dicas sobre o exercício, sob a pena de uma redução na pontuação do exercício.
- O sistema deve verificar a integridade léxica, sintática e semântica da solução do usuário e informá-lo sobre o resultado do processo.
- O sistema deve testar a consistência da solução do usuário em relação aos casos de teste cadastrados pelo criador do exercício, informando-o quais passaram e quais falharam.
- O sistema deve pontuar o usuário assim que uma solução correta for submetida, apresentando a ele a quantidade de pontos obtidos e seu progresso de nível.
- O sistema deve oferecer uma dica ao usuário ao realizar uma submissão incorreta, informando-o sobre o custo associado.
- O sistema deve apresentar ao usuário as soluções de referência cadastradas pelo criador do exercício ao término do mesmo.
- O sistema deve permitir que o usuário visualize as soluções de outros membros da sala ao completar um exercício.
- O sistema deve permitir que usuários que completaram exercícios opinem sobre as soluções dos mesmos através de um comentário e uma avaliação opcional, sendo ela positiva ou negativa.
- O sistema deve permitir que usuários respondam aos comentários das soluções.
- O sistema deve permitir que usuários sigam outros. Tais usuários terão prioridade na listagem de soluções.