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 backend em NodeJS.
Desenvolver uma API para gerenciar um sistema de tarefas e projetos, permitindo que usuários criem projetos e associem tarefas a eles.
- Somente o criador do projeto pode adicionar ou remover membros.
- Tarefas só podem ser criadas por membros do projeto ao qual a tarefa pertence.
- Um usuário só pode ser adicionado a um projeto se ele já estiver registrado na plataforma.
- Tarefas concluídas não podem ser editadas.
- As tarefas precisam ter tags
- Node.js com TypeScript
- PostgreSQL
- Prisma ORM
- Configurar um projeto usando Node.js e TypeScript.
- Configurar um banco de dados PostgreSQL (Local).
- Utilizar o Prisma como ORM.
- ID: ID gerado automaticamente.
- Nome: Texto.
- Email: Texto, único.
- Senha: Texto, encriptada.
- ID: ID gerado automaticamente.
- Nome: Texto.
- Descrição: Texto.
- Membros: Lista de usuários associados ao projeto.
- ID: ID gerado automaticamente.
- Título: Texto, máximo de 255 caracteres.
- Descrição: Texto.
- Data de criação: Data e hora, gerada automaticamente.
- Status: Enum (Pendente, Em andamento, Concluída).
- Projeto: Referência ao projeto ao qual pertence.
- ID: ID gerado automaticamente.
- Título: Texto.
- Tarefa: Referência a tarefa ao qual pertence.
- 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 [arthur.olga@khipo.com.br] 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).
Boa sorte com o desafio! Estamos ansiosos para ver sua solução.