Desafio para vaga de frontend react na MaisTodos
Criar uma aplicação web que exiba uma lista de produtos e permita ao usuário adicionar, editar e excluir produtos, além de adicionar produtos ao carrinho de compras e realizar pagamentos.
- Deixe o código em inglês;
- Use Git;
- Procure fazer
micro commits
que são muitos commits com menos código isso nos ajuda a compreender a sua lógica; - Pergunte-nos sobre qualquer dúvida que venha a surgir durante o desenvolvimento;
- Documente detalhadamente quaisquer referencias/ferramentas que você pesquisar;
- Crie um repositório público e nos passe o link para acompanharmos o desenvolvimento;
- A aplicação deve ser desenvolvida usando React.
- A aplicação deve usar uma biblioteca de gerenciamento de estado, como o Zustand.
- A aplicação deve usar uma biblioteca de roteamento, como o React Router.
- A aplicação deve usar uma biblioteca de gerenciamento de formulários, como o Formik ou o React Hook Form.
- A aplicação deve usar uma biblioteca de validação de formulários, como o React-hook-form.
- A aplicação deve usar o React-Query para compartilhar dados entre componentes via cache, hidratar os dados, controle de estados com querys, loading, refetch, invalidQueries
- A aplicação deve ter pelo menos um teste unitário para cada componente.
- A aplicação deve ter uma API para obter e atualizar dados de produtos.
- A aplicação deve usar uma biblioteca para realizar pagamentos, como o Stripe.
- Crie um novo projeto React usando o create-react-app.
- Adicione as bibliotecas necessárias para gerenciamento de estado, roteamento, gerenciamento de formulários e validação de formulários.
- Crie um componente de lista de produtos que exibe uma lista de produtos armazenados em uma API.
- Adicione funcionalidade para adicionar, editar e excluir produtos.
- Crie um componente de carrinho de compras que exibe os produtos adicionados e permite ao usuário finalizar a compra.
- Implemente a funcionalidade de pagamento usando a biblioteca Stripe.
- Crie pelo menos um teste unitário para cada componente.