O To-do List é uma aplicação completa para gerenciamento de tarefas que implementa o conceito de Persistência Poliglota, utilizando diferentes bancos de dados para atender a diferentes necessidades da aplicação. O objetivo é fornecer uma lista de tarefas eficiente, segura e organizada, onde cada usuÔrio possui seu próprio histórico e personalização, separados de forma lógica no backend.
A aplicação utiliza uma abordagem de Micro-serviços de Banco de Dados:
PostgreSQL (SQL Relacional): Utilizado para o gerenciamento de UsuĆ”rios e Autenticação (Auth), aproveitando a seguranƧa e integridade referencial de um banco de dados relacional para dados crĆticos.
MongoDB (NoSQL Orientado a Documentos): Utilizado para o armazenamento das Tarefas (Tasks), usufruindo da flexibilidade do modelo de documentos para as tarefas que são menos estruturadas.
Front-end (Aplicação Cliente)
Adicionar Tarefa: Cria novas tarefas na lista.
Concluir Tarefa: Marca uma tarefa como concluĆda (visual com text-decoration: line-through).
Deletar Tarefa: Remove a tarefa da lista.
Persistência Local (TemporÔria): O front-end puro (HTML/CSS/JS) utiliza o LocalStorage para manter o estado das tarefas na sessão do usuÔrio.
Registro de UsuÔrio: Criação de conta no PostgreSQL com senha criptografada (bcryptjs).
Login de UsuÔrio: Autenticação e emissão de Token JWT para acesso seguro.
Criação de Tarefa: Rota protegida por JWT que salva novas tarefas no MongoDB, associadas ao userId do usuÔrio autenticado.
Listagem de Tarefas: Rota protegida que busca todas as tarefas do usuƔrio no MongoDB.
| Componente | Tecnologia | Modulo
| :ā | :ā | :ā |
| Front-end | HTML5, CSS3, JavaScript | Aplicação cliente Pura com persistência em (localStorage
) |
| Back-end | Node.js, Express | Servidor API |
| Autenticação | JWT, bcryptjs | Geração de token e hash de senha |
| DB (UsuƔrios/Auth) | PostgreSQL | ORM: Sequelize |
| DB (Tarefas/Tasks) | MongoDB | ODM: Mongoose |
ā
Siga estas instruƧƵes para configurar e rodar o projeto localmente.
Node.js (LTS recomendado)
NPM ou Yarn
Um servidor PostgreSQL rodando (com um banco de dados configurado).
Um servidor MongoDB rodando (local ou nuvem como Atlas).
1 - Clone o repositório:
git clone [(https://github.com/FaelAlvezzz/To-do-list)](cd To-do-list)
2 - Instale as dependĆŖncias do Back-end:
npm install
# ou
yarn install
3 - Configuração do .env: Crie um arquivo chamado .env na raiz do projeto e configure as variÔveis de ambiente necessÔrias para a conexão com os dois bancos de dados e o JWT:
```Snippet de código # Servidor PORT=5000
# JWT
JWT_SECRET=sua_chave_secreta_aqui
# Configuração do PostgreSQL (UsuÔrios)
DB_HOST=localhost
DB_USER=postgres_user
DB_PASSWORD=postgres_password
DB_NAME=todo_list_db
# Configuração do MongoDB (Tarefas)
MONGO_URI=mongodb://localhost:27017/todo-tasks ```
1 - Inicie o servidor Node.js:
npm start
# ou
node server.js
Você verÔ as mensagens de conexão bem-sucedida para PostgreSQL e MongoDB.
2 - Acesse o Front-end: Abra o arquivo index.html em seu navegador web para a interface da lista de tarefas.
Contribuições são bem-vindas! Se você deseja adicionar funcionalidades como filtros de tarefas, edição de itens, ou otimizar a conexão de banco de dados, sinta-se à vontade para abrir uma Issue ou um Pull Request.
1- FaƧa um Fork do projeto.
2- Crie uma branch para sua Feature (git checkout -b feature/minha-feature).
3- FaƧa o Commit das suas alteraƧƵes (git commit -m āfeat: Adiciona nova funcionalidade Xā).
4- FaƧa o Push para a Branch (git push origin feature/minha-feature).
5- Abra um Pull Request.
āļø Contato Rafael Alves - [FaelAlvezzz@gmail.com]
Link do Projeto: https://github.com/FaelAlvezzz/To-do-list