Skip to content

A required challenge for full-stack developer job applicants at this EdTech.

License

Notifications You must be signed in to change notification settings

Plataforma-Amais/FullStack-challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

Plataforma A+ - Desafio FullStack

Estamos à procura de full-stack Developers para fazerem parte do nosso time e contribuírem com a transformação digital das escolas.

Quem somos

A Plataforma A+ é uma EdTech que une um grupo de engenheiros de softwares, designers, analistas e professores apaixonados em gerar inovação para transformar e potencializar a capacidade de aprendizagem do ser humano.

Siga-nos no Linkedin.

Acompanhe nossas vagas no Linkedin.


Desafio

Desenvolver uma aplicação WEB ou APP, para controlar Alunos e Professores em suas Turmas, referentes às séries do Ensino Fundamental, em uma Escola Pública.

  • A aplicação deve apresentar uma lista de Escolas Públicas:
    • Deve permitir adicionar, modificar e excluir Escolas.
    • Cada Escola deve possuir um Diretor responsável.
  • As Turmas devem ser disponibilizadas ao acessar detalhes de uma Escola:
    • Deve permitir adicionar, modificar e excluir Turmas.
    • Cada Turma possui um Professor associado a ela.
      • Um Professor poderá estar associado a mais de uma Turma.
        • Deve permitir que o Diretor possa adicionar e excluir Professores em uma Turma.
    • Ao entrar nos detalhes da Turma, os alunos e professores relacionados devem ser exibidos.
      • Alunos devem ser adicionados ou excluídos das Turmas.
  • Os Alunos possuem informações mínimas que devem estar contidas em seus cadastros, como:
    • Nome do Aluno
    • Nomes dos Responsáveis
    • Contatos
  • Os Professores devem ser capazes de adicionar observações sobre a Turma e sobre determinado Aluno.
  • A solução deve possibilitar buscar com base em alguma informação, de escolha livre, contida nas entidades.

Recomendações

  • Módulos de frontend e backend devem ser desenvolvidos de forma separada.
  • O backend pode ser feito utilizando uma das seguintes linguagens: Javascript, Typescript, Python ou C#, nesta ordem de preferência.
  • O frontend poderá ser desenvolvido com JavaScript, Typescript, Dart (No caso de um app Flutter como frontend) ou qualquer framework/ferramenta que suporte ou utilize essas tecnologias.
  • Para camada de persistência, utilize NoSQL como o MongoDB ou um SGBD relacional como o PostgreSQL. A modelagem de documentos ou entidades é livre e de acordo com o escolhido e utilizado pela sua solução.
  • O que for submetido, mesmo que incompleto, deve funcionar.

Instruções

  1. Faça o Fork deste repositório;
  2. Nomeie o projeto da seguinte maneira: fullstack-challenge-nome-sobrenome;
  3. Ao concluir o desafio, publique em seu próprio repositório, com acesso público habilitado e envie o link para os e-mails alex.souza@plataformaamais.com.br e/ou bruno.souza@plataformaamais.com.br.

Considerações gerais

  • Utilize as melhores práticas que você conhece.
  • Utilize ferramentas visuais como desenhos, fluxos e diagramas para explicar sua solução, sem muita formalidade, apenas para passar uma idéia geral e/ou explicar pontos interessantes.
  • As opções de tecnologias são baseadas no que utilizamos para desenvolver soluções hoje. Porém, na Plataforma A+, o foco no resultado é muito valorizado, por isso não se sinta limitado e caso tenha implementações fora dos opcionais oferecidos de tecnologias e ferramentas, foque em responder o desafio com o que conhece.
  • Caso não termine o desafio, utilizaremos o que entregou como base para a conversa.
  • Lembre-se que iremos analisar seu desafio e terá a chance de explicar sua estratégia para pessoas de tecnologia.
  • Teremos uma conversa agradável e objetiva, onde falaremos sobre tech, com base neste desafio.

Critérios de avaliação

  • Organização.
  • Manutenibilidade.
  • Legibilidade, limpeza, clareza do código​.
  • Resultado funcional.
  • Flexibilidade da aplicação:​ Parametrização, agnóstico ao ambiente, escalabilidade, etc.
  • Segurança​.
  • Documentação objetiva.
  • Cobertura de código.
  • Escolhas técnicas e suas justificativas.
  • Histórico de commits​.

Diferenciais

  • Utilizar layout responsivo.
  • Boas práticas de UX na solução.
  • Backend dockerizado.
  • Documentação.
  • Testes unitários e de integração.
  • Uso de TDD.
  • Uso de patterns.
  • Abordagem para desenvolvimento de software.

Boa sorte!