Bem-vindo(a) ao teste para a vaga de Desenvolvedor Full Stack Pleno! Aqui você poderá demonstrar suas habilidades técnicas e seu conhecimento no desenvolvimento de aplicações integradas.
O objetivo é criar uma aplicação para gestão de produtos. A solução deverá incluir:
- Uma API RESTful em C# para gerenciar o cadastro e operações de produtos.
- Uma interface web em React que permita interações com a API.
A solução deve refletir boas práticas de desenvolvimento e design.
-
CRUD de Produtos:
- Implementar as operações de criação (POST), leitura (GET - individual e lista), atualização (PUT) e exclusão (DELETE) para produtos.
- O DELETE deve ser apenas lógico, ou seja, os produtos excluídos não devem ser removidos do banco de dados, mas sim marcados como inativos (ex.: campo
isDeleted).
-
Relacionamento entre Tabelas:
- Estruturar as tabelas com os seguintes relacionamentos:
- Categoria do Produto:
- Uma tabela de categorias que contenha campos como
id,nomeedescricao. Cada produto deve estar associado a uma categoria. - Os dados de categorias devem ser previamente populados na inicialização do banco. Por exemplo: "Eletrônicos", "Móveis", "Alimentos".
- Uma tabela de categorias que contenha campos como
- Fornecedor:
- Uma tabela de fornecedores que contenha campos como
id,nome,cnpj,telefoneeendereco. Cada produto pode estar associado a um ou mais fornecedores. - Os dados de fornecedores também devem ser previamente populados na inicialização do banco com dados fictícios, mas plausíveis.
- Uma tabela de fornecedores que contenha campos como
- Categoria do Produto:
- Estruturar as tabelas com os seguintes relacionamentos:
-
Autenticação:
- Adicionar um mecanismo de autenticação básico (JWT, por exemplo) para proteger os endpoints da API.
-
Banco de Dados:
- Utilize um banco relacional (MySQL, SQL Server, Informix).
-
Listagem de Produtos:
- Exibir os produtos cadastrados em uma tabela responsiva, incluindo informações de categoria e fornecedores.
-
Cadastro e Edição de Produtos:
- Formulário para criar e editar produtos, com opção de selecionar a categoria e fornecedores.
-
Validações:
- Implementar validação básica dos campos no frontend.
-
Exclusão de Produtos:
- Possibilidade de excluir um produto da listagem.
- Documentação: Documentar a API utilizando Swagger ou similar.
- Testes Automatizados:
- Backend: testes unitários e/ou de integração utilizando xUnit.
- Frontend: testes unitários ou de interface com Jest.
- Design: Melhorar a interface com boas práticas de UX/UI.
- Desempenho: Implementar cache para melhorar a performance de requisições no backend.
- Backend: C#, .NET Core / .NET 6+
- Frontend: React com TypeScript
- Banco de Dados: Relacional (MySQL, SQL Server, Informix)
- Bancos de dados não relacionais
- Frameworks de backend que não sejam em C#
- Bibliotecas que implementem diretamente o CRUD
- Fork do Repositório: Faça um fork deste repositório para sua conta do GitHub.
- Branch: Crie uma branch com o nome
teste/[SEU NOME](por exemplo:teste/joao-silva). - Pull Request: Ao finalizar, faça um pull request com a sua branch.
- Documentação: Inclua no
README.mddo repositório:- Como configurar e rodar o projeto
- Tecnologias utilizadas
- Decisões de design
- Qualidade do código e organização do projeto
- Implementação de boas práticas (design patterns, SOLID, etc.)
- Alinhamento com os requisitos solicitados
- Documentação clara
Boa sorte! Estamos animados para conhecer seu trabalho.
