Bem-vindo ao TaskFlow, um mini gerenciador de tarefas. A aplicação permite que usuários se cadastrem, façam login e gerenciem suas tarefas diárias de forma simples e eficiente.


Autenticação de Usuários: Sistema completo de Cadastro e Login com segurança via JSON Web Tokens (JWT).
Gerenciamento de Tarefas (CRUD):
Criar novas tarefas com título, descrição e status.
Listar todas as tarefas vinculadas ao usuário logado.
Atualizar o título, descrição e status de tarefas existentes.
Excluir tarefas que não são mais necessárias.
Segurança: Rotas do backend e frontend protegidas, garantindo que apenas usuários autenticados possam acessar e manipular seus próprios dados.
Validação de Formulários: Validação robusta em tempo real no frontend para garantir a integridade dos dados inseridos.
Este projeto foi construído utilizando uma stack moderna e robusta, focada em performance e boas práticas de desenvolvimento.
Backend Node.js com Express para a criação da API REST.
TypeScript para tipagem estática e segurança no código.
MySQL como banco de dados relacional.
Sequelize com sequelize-typescript como ORM para modelagem e manipulação do banco de dados.
JSON Web Token (JWT) para o fluxo de autenticação.
Bcrypt.js para hashing seguro de senhas.
Frontend Next.js como framework React para renderização e roteamento.
TypeScript para componentes e lógica tipada.
TailwindCSS para estilização rápida e responsiva.
React Hook Form para gerenciamento de formulários.
Zod para validação de esquemas de formulário.
Axios para consumo da API REST do backend.
React Context API para gerenciamento de estado global de autenticação.
Antes de começar, você vai precisar ter instalado em sua máquina:
Node.js (versão 18.x ou superior)
NPM ou Yarn
Um cliente MySQL (como o MySQL Workbench) ou Docker para rodar uma instância do MySQL.
Navegue para a pasta do backend Instale as dependências Crie uma cópia do arquivo de exemplo de variáveis de ambiente Abra o arquivo .env e preencha com suas credenciais do banco de dados MySQL. Você precisará criar um banco de dados com o nome que definir em DB_NAME. Exemplo do arquivo .env: Execute as Migrations do Banco de Dados: npx sequelize-cli db:migrate
npm install Crie o arquivo de ambiente local (não precisa de .env.example) e adicione a URL da sua API backend
Dentro da pasta /backend: npm run dev
Dentro da pasta /frontend: npm run dev OBS: o caminho para acessar é este: http://localhost:3000/auth/login conforme o git merge (os arquivos originais)