A Amicci é uma companhia que conecta indústrias à varejistas para criação de projetos de desenvolvimento de produtos de marca-própria. Para que esse processo ocorra, é necessário um sistema para gerenciamento de projetos.
No modelo de negócio da Amicci, em um mesmo projeto, indústria e varejista podem negociar, desenvolver e produzir N produtos, também chamados de SKUs.
Os SKUs podem ter diversas categorias: alimentos, pet, mercearia seca, etc.
As etapas padrão dos projetos de marca própria são:
- Especificação do(s) produto(s) desejados para fabricação no projeto
- Responsável: varejista
- Seleção da indústria que realizará o projeto e fabricação dos produtos.
- Responsável: varejista
- Formalização dos acordos feitos entre varejo e indústria após negociação de valores e quantidades.
- Responsáveis: indústria e varejista
- Desenvolvimento do(s) produto(s)
- Definição de identidade da marca, design, dados regulatórios e impressão
- Responsáveis: indústria e varejista
- Produção
- Fabricação e entrega do produto para o varejista
- Responsável: indústria
O candidato receberá:
- Documentação
- Descrição do problema de negócio
- Requisitos técnicos
- Critérios de avaliação
- Especificação da API (arquivo YAML)
- Dados de Exemplo
- Arquivo JSON com dados de exemplo para importação
- Django ou Fast-API
- PostgreSQL
- React 18+
- TypeScript
- SCSS para estilização
- Next
- Docker e docker-compose
- Testes unitários
Como varejista
Quero criar e editar projetos
Para gerenciar informações de projetos
Critérios de Aceitação:
- Formulário com validação de campos
- Seleção de fornecedor e categoria
- Feedback visual de sucesso/erro
- Garantir que a interface seja responsiva
Como varejista
Quero visualizar e filtrar meus projetos na plataforma
Para acompanhamento das informações e status dos projetos
Critérios de Aceitação:
- Exibir lista de projetos com informações principais (nome, varejista, responsável, categoria)
- Permitir filtrar por categoria e indústria
- Implementar paginação para resultados
- Garantir que a interface seja responsiva
- Configuração do Projeto
- Criar e configurar um novo projeto
- Configurar Docker e docker-compose (opcional)
- Implementar sistema de autenticação (JWT)
- Modelagem de Dados
- Implementar os modelos necessários baseados na especificação
- Criar relacionamentos apropriados entre entidades
- Implementar validações de negócio
- Implementação da API
- Desenvolver endpoints para gerenciamento de briefings
- Implementar filtros e ordenação
- Garantir segurança e validação de dados
- Testes
- Implementar testes unitários e de integração
- Configuração do Projeto
- Criar e configurar um projeto React com TypeScript
- Configurar sistema de estilização com SCSS
- Implementar estrutura de roteamento
- Arquitetura de Estado
- Implementar gerenciamento de estado (Context API, Redux ou similar)
- Configurar integração com a API do back-end
- Componentes e UI
- Desenvolver componentes para listagem e formulário de briefings
- Implementar filtros e pesquisa
- Garantir responsividade e acessibilidade básica
- Testes
- Implementar testes unitários para componentes
Para candidatos que concluírem as tarefas básicas e desejarem demonstrar habilidades avançadas:
- Back-end
- Implementar cache para otimizar consultas frequentes
- Implementar política de rate-limit
- Criar um endpoint para relatórios agregados simples
- Implementar versionamento da API
- Front-end
- Lazy Loading e Divisão de Código
- Renderização de Listas com Virtualização
- Renovação Automática de Tokens
- Cobertura de Testes Automatizados (mínimo de 80%)
- Criar componente de visualização de dados (gráfico ou tabela dinâmica)
- Implementar tratamento avançado de erros e retry de requisições
- Organização do código e separação de responsabilidades
- Padrões de projeto e boas práticas
- Decisões técnicas e trade-offs (documentados)
- Diagrama da Arquitetura do Sistema
- Legibilidade e manutenibilidade
- Testes automatizados
- Tratamento de erros e edge cases
- Implementação completa dos requisitos
- Performance e otimizações
- Experiência do usuário
- Domínio das tecnologias
- Implementação de autenticação e segurança
- Uso avançado de recursos das frameworks
- Implemente o back-end e front-end conforme especificado
- Documente decisões técnicas e arquiteturais
- Inclua instruções claras para execução do projeto
- Envie o link do seu repositório até o prazo estipulado