A To Do List é uma aplicação web desenvolvida com Next.js e Express.js para ajudar os usuários a organizar e gerenciar suas tarefas diárias de forma colaborativa. Os membros podem criar, editar e excluir suas próprias tarefas, além de visualizar as tarefas de outros membros, permitindo um acompanhamento eficiente e em grupo.
- Node.js instalado
- MySQL instalado e em execução
- OpenSSL para gerar chaves de autenticação
-
Instale as dependências do projeto:
npm install
Execute este comando tanto na pasta raiz quanto na pasta
server
. -
Configure o banco de dados: Na pasta
server
, execute os comandos:npx prisma migrate dev --name teste-local npx prisma generate
-
Gere uma chave de autenticação:
openssl rand -base64 32
-
Crie o arquivo
.env
na raiz do projeto com as seguintes variáveis:NEXT_PUBLIC_API_URL=http://localhost:3001 NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_SECRET=chave_gerada
-
Crie o arquivo
.env
na pastaserver
com as seguintes variáveis:DATABASE_URL=mysql://usuario:senha@host:porta/bancodedados ORIGIN=http://localhost:3000
-
Inicie a aplicação:
- No terminal, na pasta raiz:
npm run dev
- No terminal, na pasta
server
:npm run server
- No terminal, na pasta raiz:
O projeto é dividido em três partes principais:
- Front-end: Localizado na pasta raiz.
- Back-end: Localizado na pasta
server
. - Banco de Dados: Arquivos do Prisma na pasta
prisma
dentro deserver
.
Essa separação facilita o deploy na Vercel, pois exige a criação de dois projetos: um para o front-end e outro para o back-end.
O front-end utiliza Next.js e está estruturado na pasta App
. Os principais diretórios são:
- API (Autenticação): Implementada com NextAuth para garantir a segurança dos dados.
- UI (Componentes): Contém todos os componentes client-side.
- Rotas: Armazena os componentes principais de cada página.
O back-end segue um padrão similar ao Model-View-Controller (MVC), com as seguintes pastas:
- Controllers: Manipulação dos dados para cada rota da API.
- Models: Definições e restrições dos dados.
- Routes: Endpoints da API.
O arquivo principal, index.js
, gerencia as rotas, regras de CORS e inicialização do servidor.
A aplicação usa Prisma ORM e MySQL para gerenciar o banco de dados. Ele contém duas tabelas principais:
- Tarefa: Possui colunas como
id
(UUID),nome
(5-50 caracteres),descrição
(opcional, até 140 caracteres),finalizada
(indica se a tarefa foi concluída),prioridade
(baixa, média ou alta) edata de término
. - Membro: Contém
id
(UUID),email
(único),nome
(mínimo de 5 caracteres) esenha
(mínimo de 3 caracteres).
As tarefas finalizadas não podem ser editadas, mas podem ser excluídas.