Skip to content

UNIFAGOC/ProcessoSeletivo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 

Repository files navigation

Processo Seletivo (#3)

Olá,

Inicialmente, gostaria de agradecer muito pela vontade de fazer parte da equipe da UNIFAGOC. Nós somos um centro universitário referência na zona da mata mineira. Nós, do Departamento de Tecnologia da Informação, desenvolvemos e mantemos os sistemas pertinentes à atividade da instituição. Temos como clientes os colaboradores do centro universitário, parceiros externos e, principalmente, nossos alunos.

A idéia dessa avaliação é nos permitir identificar melhor as habilidades dos candidatos à vaga de desenvolvedor fullstack. Esse desafio deve ser feito por você. Qualquer dúvida técnica relacionada ao teste, entre em contato com o avaliador.

A entrega deve ser feita por meio de um repositório publico aqui no github. Não se esqueça de criar um arquivo README.md na raiz de seu projeto com as instruções para utilização do seu projeto. Seguiremos extritamente essas instruções, por isso, tente deixar o mais claro e específico possível. Atente-se para o período de execução de seu teste. Ele estará explícito no email enviado por nossa equipe de Recursos Humanos.

Vida de Programador

(FONTE: Vida de Programador. Disponível em: https://vidadeprogramador.com.br/wp-content/uploads/2011/10/tirinha319.png)

Nosso principal objetivo com essa avaliação é observar não só o estado atual da sua maturidade como desenvolvedor, mas também o quanto você pode crescer e como podemos ajudar você a conseguir isso. Por isso, lembre-se: Foque em entregar o máximo de pontos possível. Mesmo que não consiga completar tudo, envie o ponto em que chegar. Sabemos que a prova é muito grande, e é proposital!

Não deixe de nos mostrar seu trabalho!


Pré-Enem dos Amigos

Um de nossos alunos quer, junto à amigos, crirar um cursinho pré-ENEM para ajudar os membros da comunidade dele a ingressarem na vida acadêmica. Nós, de pronto, apoiamos a ideia. Para ajudar na gestão do curso, nos propomos a desenvolver um pequeno sistema de cadastro dos alunos, horários das aulas e dos professores voluntário para as aulas. Nossa equipe já esta trabalhando em outras partes do sistema. Sua tarefa será desenvolver esse primeiro módulo: o cadastro de alunos, professores e turmas.

Para isso precisamos que os seguintes pontos sejam contemplados:

  • De início, é preciso que exista ao menos um professor-administrador registrado no sistema para que os demais cadastros possam ser gerados.
  • Cada aluno e professor precisam tem um perfíl de usuário único.
  • Sendo um professor-administrador, é preciso que eu consiga cadastrar um novo aluno no sistema. Para isso, registrtarei obrigatoriamente:
    • Nome oficial
    • Nome social
    • Data de Nascimento
      • O aluno precisa ter mais de 16 anos completos.
    • Identificação de gênero
      • Homem.
      • Mulher.
      • Ambos.
      • Nenhum.
      • Prefiriu não informar.
    • Número do CPF
    • CEP
    Opcionalmente registrarei:
    • Auto declaração de cor:
      • Afrodescendente
      • Indígena
      • Amarelo
      • Negro
      • Branco
      • Preto
      • Pardo
    • Observações textuais.
  • Sendo um professor-administrador, é preciso que eu consiga cadastrar um novo professor no sistema. Para isso, registrtarei obrigatoriamente:
    • É Administrador?
      • Campo booleano
      • Por padrão, marcado como falso
    • Nome oficial
    • Nome social
    • Data de Nascimento
      • O aluno precisa ter mais de 16 anos completos.
    • Identificação de gênero
      • Homem.
      • Mulher.
      • Ambos.
      • Nenhum.
      • Prefiriu não informar.
    • Número do CPF
    • CEP
    • Graduação:
      • Graduand@
      • Graduad@
      • Especialista
      • Mestrand@
      • Mestre
      • Doutorand@
      • Doutor(a)
      • Pós-Doutorand@
      • Pós-Doutor(a)
    • Disciplina: (pode ser mais de uma)
      • Biologia
      • Química
      • Física
      • História
      • Geografia
      • Filosofia
      • Sociologia
      • Língua Portuguesa
      • Literatura
      • Língua Inglesa
      • Língua Espanhola
      • Artes
      • Educação Física
      • Tecnologias da Informação e Comunicação
      • Matemática
      • Redação
    Opcionalmente registrarei:
    • Disponibilidade de horários para aula
      • Tipo de dado abstrato que representa a disponibilidade de horários de aula do professor durante cada um dos dias da semana. Sinta-se livre para propor a sua estrutura.
    • Email
      • Precisa ser válido
    • Telefone
      • Precisa ser válido
    • É WhatsApp?
      • Campo booleano
      • Por padrão, marcado como falso
  • Sendo um professor-administrador, é preciso que eu consiga cadastrar um novo horário de aula no sistema. Para isso, registrtarei obrigatoriamente:
    • Data Início das Aulas
    • Data Término das Aulas
    • Horário Início das Aulas
    • Horário Término das Aulas
    • Dias da Semana das Aulas
    • Professor
    • Disciplina
    • Vagas da turma
    • Horário ativo?
      • Campo booleano
      • Por padrão, marcado como falso
  • Sendo um professor-administrador, é preciso que eu consiga vincular professores aos horários de aula, respeitando:
    • Um professor não pode dar aula em dois horários que se sobreponham.
    • Um professor não pode dar aula em mais que quatro horas por dia.
    • Um professor não pode das aula em mais de duas disciplinas por dia.
  • Sendo um professor-administrador, é preciso que eu consiga vincular alunos aos horários de aula.
  • Sendo um professor, é preciso que eu consiga visualizar, assim que acessar o sistema, uma listagem com todos os horários de aula vinculados à mim, com o dia da semana, horário de início, horário de término e disciplina.
  • Sendo um professor, é preciso que eu consiga visualizar, assim que eu clicar sobre um horário, uma listagem com todos os alunos.
  • Sendo um aluno, é preciso que eu consiga visualizar, assim que eu acessar o sistema, uma listagem com todos os horários de aula vinculados à mim, com o dia da semana, horário de início, horário de término e disciplina.
  • Sendo um aluno, é preciso que eu consiga visualizar, assim que eu clicar sobre um horário, as informações do professor daquele horário, sendo nome social, graduação, telefone (caso cadastrado) e se é WhatsApp (caso cadastrado).

  • Entregas

    Você precisará desenvolver o sistema em 3 partes: Backend, API REST, e Frontend. Para cada uma das partes, são requeridas algumas características, mas não se limite somente a elas. Mostre o máximo de features efetivamente funcionais que conseguir!

    BACKEND

    O núcleo funcional do nosso sistema deverá ser desenvolvido em PHP 7+, considerando todas as boas práticas de desenvolvimento que achar importantes e em especial se atentando ao máximo as PHP Standard Recommendations (PSR). Esse backend deverá ser capaz de representar, modelar e tratar todos os dados envolvidos no sistema. É nele que as regras de negócios precisam estar implementadas e validadas. Os dados precisarão ser armazenados e recuperados de um banco de dados MySQL 5.5+ (indicamos a utilização da versão 5.7 por sua estabilidade). Atente-se à modelagem desse banco. Muitas vezes, um bom modelo de dados auxilia demais na implementação dos códigos.

    API REST

    Toda a comunicação do aplicativo com suas diferentes instâncias precisará ser feita sob uma API REST privada. Os métodos precisarão representar a criticidade das informações e a segurança dos dados. Observer que para cada método existem operações conceitualmente já definidas.

    FRONTEND

    A interface de visualização das informações precisará ser desenvolvida com tecnologias Javascript, CSS3 e HTML5. Indicamos fortemente a utilização do framework Vue.js e/ou Quasar. Utilizamos esses dois nos nossos produtos e a implementação com eles será um diferencial, porém, bons códigos serão sempre bem avaliados, sejam em qual estrutura for.


    Não precisa reinventar a roda

    Recomendamos fortemente a utilização de frameworks para cada uma das partes entregáveis para acelerar seu desenvolvimento. Fique a vontade para usar o que tem mais familiaridade. Nós, aqui, utilizamos frequentemente em nossos projetos para a UNIFAGOC e particulares Laravel, Slim, Lumen, Vue.js, React.js, Meteor.js, Sail entre outros.


    Pontos de Avaliação

    Nossa avaliação será bastante ampla. Não se preocupe em entregar todos os pontos perfeitos. Precisamos, primeiro, de entregas. Foque em blocos que você consegue desenvolver do início ao fim.

    Iremos nos pautar pelos seguintes pontos:

    • Arquivo README.md com as instruções para execução do sistema
    • Legibilidade, facilide para modificação, eficiência e reusabilidade do código
    • Orientação a Objetos
    • Testes Automatizados (diferencial)
    • Clean Code (diferencial)
    • Object Calisthenics (diferencial)
    • Princípios SOLID (diferencial)

    Material de Apoio

    Para qualquer dúvida, pode entrar em contato com nossa equipe pelo chat em http://comvoce.unifagoc.edu.br/.

    Os links abaixo são apenas material para apoio aos seus estudos. Não se limite à eles. Explore as possibilidades e expanções dos conceitos.

    • PHP Standard Recommendations - clique aqui
    • Clean Code: Boas práticas para escrever códigos impecáveis - clique aqui
    • Object Calisthenics - clique aqui
    • O que é SOLID: O guia completo para você entender os 5 princícipos da POO - clique aqui
    • Entenda o que é Rest API e a importância dela para o site da sua empresa - clique aqui

    About

    Processo seletivo em andamento.

    Resources

    Stars

    0 stars

    Watchers

    2 watching

    Forks

    Contributors