Este repositório contém um projeto de Lista de Tarefas (Todo List) projetado para ser utilizado em entrevistas técnicas para candidatos a posições junior de desenvolvimento front-end com foco em React. O objetivo deste teste é avaliar as habilidades práticas do candidato em resolver problemas de codificação em um ambiente colaborativo de pair programming.
Durante a entrevista (cerca de 50 minutos), você será solicitado(a) a trabalhar em diversas tarefas relacionadas ao código fornecido. A interação é fundamental, e o entrevistador estará presente para guiá-lo(a) pelo processo, oferecendo ajuda conforme necessário.
- Node.js 18+
Necessário para executar o projeto. Disponível em https://nodejs.org/. - Visual Studio Code (VS Code)
Recomendado como editor de código. Disponível em https://code.visualstudio.com/. - Gerenciador de Pacotes
Pode ser Yarn, PNPM ou NPM. Escolha o que preferir para instalar as dependências do projeto.
Antes da entrevista, configure o ambiente de desenvolvimento em sua máquina:
git clone [email protected]:globocom/todo-list-app.git
cd todo-list-app
yarn install
Para executar o projeto em modo web (via Expo for Web):
-
Domínio de GIT
- Clonar o repositório e instalar as dependências necessárias.
-
Estado Local (useState)
- Criar um estado local para armazenar a lista de tarefas.
-
Adicionar Tarefa
- Implementar funcionalidade para adicionar uma nova tarefa.
-
Validação de Tarefa
- Não permitir adicionar uma tarefa vazia ou contendo apenas espaços.
-
Alternar Estado de Conclusão
- Marcar uma tarefa como concluída ou pendente.
-
Deletar Tarefa
- Permitir que o usuário delete uma tarefa da lista.
-
Desabilitar Botão
- Desabilitar o botão "Adicionar" quando não houver valor no campo de input.
Esta aplicação carrega e salva a lista de tarefas no Local Storage do navegador, garantindo que as tarefas persistam mesmo após recarregar a página.
- Carregar
- Quando a aplicação inicia, o hook de tarefas (useTask) lê as tarefas salvas no Local Storage.
- Salvar
- Sempre que o estado de tarefas (tasks) é atualizado, o hook salva a nova lista no Local Storage.
Para compartilhar a lista de tarefas e funções de manipulação (adicionar, alternar, deletar) entre diferentes componentes, foi criado um Context (TaskProvider
). Dessa forma:
- TaskProvider envolve a aplicação, provendo
tasks
,addTask
,toggleTask
edeleteTask
. - useTasksContext acessa o contexto, retornando o estado atual e as funções de CRUD.
Este projeto conta com testes que validam as principais funcionalidades:
addTask
toggleTask
deleteTask
Local Storage
(carregar e salvar)Context
(distribuição de estado)
Para executar os testes:
yarn test
Leia atentamente as mensagens de erro, pois elas podem indicar problemas de configuração de ambiente (por exemplo, ausência de mocks para localStorage
).
- React
- Expo
- React Native Web
- Git
- TypeScript (opcional/fortemente recomendado)
- Leia atentamente cada tarefa e cada mensagem de erro.
- Faça perguntas sempre que algo não estiver claro.
- Use a documentação oficial das tecnologias envolvidas como referência.
- O objetivo é avaliar sua capacidade de resolver problemas, suas habilidades de comunicação e colaboração (pair programming).
Boa sorte! Estamos ansiosos para ver suas habilidades em ação.