Skip to content

Desenvolvimento de uma API para cálculo de média, cadastro de gabaritos e provas.

Notifications You must be signed in to change notification settings

GiuliaMarcela/challenge-school

Repository files navigation

Challenge School Alf

GitHub Actions status GitHub top language GitHub language count Repository size GitHub last commit Repository issues

Em janeiro de 2021, fiz parte de um processo seletivo quando eu tinha 3 meses de conhecimento em programação. Foi um grande desafio, tive inúmeros impactos e dificuldades para desenvolver o projeto, e por muito tempo, achei que não conseguiria fazer a parte mais básica. Continuei a passar nas etapas do processo, entreguei o projeto, mas não recebi resposta nenhuma sobre a vaga (depois descobri que acontece muito).

Entretanto, a minha primeira entrega não me agradou muito (aliás, nem sei se funcionava). Portanto, desafiei-me quase 2 anos depois a refazer o projeto com o meu conhecimento atual.

Pode encontrar o código da minha primeira versão aqui.

Conteúdo

  1. Sobre
  2. Requisitos obrigatórios
    1. Restrições
  3. Tecnologias e ferramentas utilizadas
  4. Como rodar
    1. Localmente
    2. Utilizando o docker
  5. Casos de Uso
  6. Autores

Sobre

A escola Alf aplica provas de múltipla escolha para os alunos. A nota aluno na prova é determinada pela média ponderada das questões com os pesos de cada questão. Cada questão correta soma 1 ponto multiplicada pelo peso e cada questão errada 0. A nota final é a média aritmética das notas de todas as provas.

Requisitos obrigatórios

Criar uma API restful, utilizando a linguagem java ou python.

  • Cadastrar o gabarito de cada prova
  • Cadastrar as respostas de cada aluno para cada prova
  • Verificar a nota final de cada aluno
  • Listar alunos aprovados

Restrições

  • A nota da prova é sempre maior que 0 e menor que 10
  • A quantidade máxima de alunos é 100
  • O peso de cada questão é sempre um inteiro maior que 0
  • Os alunos aprovados tem média de notas maior do que 7
  • A entrada e saída de dados deverá ser em JSON

Tecnologias e ferramentas utilizadas

  • Java
  • Spring Framework
  • Docker
  • GitHub Actions
  • Sonar Lint
  • Gradle
  • Mockito
  • Mapstruct
  • Lombok
  • H2 Database
  • Postgres

Casos de uso

Como rodar

Localmente

  1. Clone o repositório
  2. No terminal (da sua preferência), vá até à pasta do projeto.
      cd challenge-school/
  3. Abra o arquivo application.yaml e altere a linha 6, para test.
  4. No seu terminal, execute o comando:
    ./gradlew clean build
  5. Após ele terminar de executar o build da aplicação, execute o comando:
      java -jar build/libs/school-0.0.1-SNAPSHOT.jar

No Docker

Requisitos

  • PostgreSQL instalado

Docker compose

  1. Clone o repositório
  2. No terminal (da sua preferência), vá até à pasta do projeto.
      cd challenge-school/
  3. Execute o comando:
       ./gradlew clean build
       docker compose up -d

Makefile

Isso automatizará todo o processo anterior.

  1. Abrir terminal na pasta raiz do projeto
  2. Rodar o comando
   make run

Autores


Giulia Marcela
Sou natural de Petrópolis, Rio de Janeiro. Mas atualmente moro em Blumenau, Santa Catarina. No ano de 2020, fiz parte do Programa de Residência de Software, do Serratec. Uma imersão full stack, desde algoritmos ao desenvolvimento de aplicativos mobile.