Olá, candidato! Se você chegou até aqui, é porque demonstrou interesse em fazer parte do nosso time. Preparamos um desafio para entendermos um pouco mais sobre suas habilidades como desenvolvedor NodeJS.
Nesse desafio há duas etapas, umas de Frontend e outra de Backend. Se você não é Fullstack, execute somente a parte que diz respeito à sua proeficiência.
Desenvolver uma aplicação frontend para gerenciar um sistema de gerenciamento de ingressos e locais de eventos com acesso de catracas de reconhecimento facial.
- Os locais terão diferentes entradas/portões e o acesso às catracas diferem pelo tipo de ingresso.
- Os eventos deverão estar sempre associados a um local.
- Eventos deverão ter data e horário de início e fim.
- Um local não pode receber mais de um evento no mesmo horário, assim como um evento não ocorre em 2 locais ao mesmo tempo.
- Tecnologia: Utilize ReactJS ou NextJS para desenvolver a aplicação.
- Estado: Gerencie o estado da aplicação da maneira que desejar (Redux, Context API, MobX ...)
- Rotas: Implemente a navegação entre as páginas utilizando react-router ou a navegação nativa do NextJS .
- Estilos: Utilize uma biblioteca de design system (ex: Material-UI, Ant Design, Chakra UI) ou CSS puro. É importante que a aplicação seja responsiva.
- Formulários: Valide os formulários antes de enviar os dados para o backend, utilize máscaras para os campos que o uso será relevante.
- Testes unitários utilizando, por exemplo, Jest e React Testing Library.
- Animações de transição entre páginas ou para interações específicas.
- Uso de um linter (como ESLint) e formatador de código (como Prettier).
- Implementação de funcionalidades adicionais como busca, filtros e ordenação.
- Deploy da aplicação (pode usar Vercel, Netlify, etc.)
- Faça um fork deste repositório para sua conta pessoal do GitHub.
- Commit e push suas mudanças para o seu fork.
- Envie um e-mail para [[email protected]] e [[email protected]] com o link do repositório.
- Estrutura do código e organização.
- Uso das tecnologias propostas.
- Implementação dos requisitos.
- Tratamento de erros.
- Funcionalidades extras (diferenciais).
- Nest.js com TypeScript
- PostgreSQL
- Prisma ORM
- Configurar um projeto usando Nest.js e TypeScript.
- Configurar um banco de dados PostgreSQL (Local).
- Utilizar o Prisma como ORM.
- Com base nas telas propostas no Figma abaixo, modele o banco de dados utilizando a ferramenta que preferir.
- Lembre de adicionar ao seu repositório o link ou imagem da modelagem.
- Implemente validações para garantir a integridade dos dados.
- Responda com mensagens de erro claras e status HTTP apropriados.
- Testes unitários e/ou de integração.
- Documentação com Swagger.
- Paginação nos endpoints.
- Registro de logs.
- Dockerização da aplicação.
- Uso de um linter (como ESLint) e formatador de código (como Prettier).
- Faça um fork deste repositório para sua conta pessoal do GitHub.
- Commit e push suas mudanças para o seu fork.
- Envie um e-mail para [[email protected]] e [[email protected]] com o link do repositório.
- Estrutura do código e organização.
- Uso adequado das ferramentas e tecnologias.
- Implementação dos requisitos e regras de negócio.
- Design e usabilidade.
- Funcionalidades extras (diferenciais).