- Primeiro clona o projeto
- Instalar as dependencias do projeto rodando o comando a seguir:
npm run install
# or
yarn install
- Subir um container docker rodando o comando a seguir:
npm run infra
# or
yarn infra
- Subir a servidor API e servidor WEB rodando o comando a seguir:
npm run dev
# or
yarn dev
-
Cadastro de Usuário. O usuário deve ser capaz de se cadastrar com e-mail e senha. Implementar validação básica para e-mail e senha.
-
Autenticação. Implementar login e logout de usuários utilizando JWT (JSON Web Token). Apenas usuários autenticados devem ter acesso às funcionalidades de gerenciamento de tarefas.
-
Gerenciamento de Tarefas. Listar todas as tarefas do usuário autenticado. Adicionar novas tarefas com um título e uma descrição. Marcar tarefas como concluídas. Editar o título e a descrição de uma tarefa. Excluir uma tarefa.
-
Interface de Usuário. A interface deve ser intuitiva e responsiva. Implementar a interface utilizando React. Utilizar hooks do React para gerenciar estado e efeitos colaterais.
-
Backend com Node.js: Utilizar Express.js ou NestJS para criar uma API RESTful. Conectar o backend a um banco de dados (Mysql ou SQLite). Implementar autenticação e autorização utilizando JWT.
-
Frontend com React: O frontend deve consumir a API criada no backend. Implementar gerenciamento de estado utilizando React (ou Context API). Implementar rotas com React Router (opcional, mas recomendado).
-
Testes (Opcional): Implementar testes básicos para o backend (unitários e/ou de integração) e frontend.
-
Deploy: (Opcional): Fazer o deploy da aplicação em uma plataforma de sua escolha (Heroku, Vercel, etc.).
-
Escolha de bibliotecas e tecnologias:
- Vite: Por oferecer uma experiência de configuração. Ele é pré-configurado com as melhores práticas e opções de desenvolvimento, para não peder muito tempo com config e também não ter um servidor pesado e robusto sem a necessidade desse projeto.
- React: Por ter mais conhecimento nessa bibliotecas e por saber que eu teria a necessidate de manipular vários estados na aplicação para assim poder rederizar os dados de acordo com os filtros;
- Zustand: Para gerenciamento de estado no React.
- React Router DOM: para realizar roteamento e para permite a passagem de parâmetros para suas rotas, o que facilita a criação de URLs dinâmicas e a recuperação desses parâmetros dentro dos componentes correspondentes.
- NodeJS com Express: Para lidar com as requisições e trabalhar com endpoints diferentes conseguirndo manipular os dados que são retornado para o aplicação front end.