Skip to content

Documentação, Modelos e API de uma aplicação web para gerenciamento de tarefas. Desenvolvida com NodeJs, MySQL, Docker.

Notifications You must be signed in to change notification settings

GustavoAndrad/ToDu_System

Repository files navigation

ToDu System


📘 Sumário


🎒 Sobre o Projeto

O ToDu System é um software desenvolvido para fixação dos meus conhecimentos em desenvolvimento de API's.

Logotipo do Software

O sistema conta com suporte para manutenção de informações de Usuários e permite com que gerenciem suas Tarefas. Além disso, conta com Autenticação em Duas Etapas (entre outras medidas de segurança e criptografia de dados sensíveis) e com uma lógica de envio automatizado de e-mails para notificar os usuários sobre o prazo de suas tarefas e monitoração de seu estado. Um dos grandes diferenciais do sitema é lidar com qualquer fuso horário na manipulação das tarefas.


⚙ Funcionalidades e Modelos

🌟Documentação Completa do Sistema

O sistema cumpre:

Diagrama de Casos de Uso

Modelagem da Estrutura do Banco de Dados Relacional

💡 O dicionário de dados, regras de negócio, etc, podem ser consultados na Documentação Completa

Tendo o sistema rodando localmente, acesse a Documentação da API com Swagger em :

http://localhost:<PORTA>/docs

🛠 Tecnologias e Ferramentas

  • NodeJs + Express: Construção do servidor

  • MySQL: Banco de dados relacional

  • Knex: Consultas ao banco de dados

  • Docker: Ferramenta de DevOps para construir em 'conteiners'

  • UUID (Universally Unique IDentifier): Segurança em identificadores universalmente exclusivos

  • JWT (JSON Web Tokens): Autenticações com tokens

  • BCrypt: Armazenamento do salted hashes de informações sensíveis

  • Joi: Validação de entradas para operações com body

  • DateFNS: Comparação e Manipulação completa de datas

  • Swagger: Documentação da API

  • NodeMailer: Envio de e-mails de verificação e notificações

  • NodeSchedule: Agendamento de operações automatizadas

    • O que foi automatizado: O envio de emails para usuários quando o prazo das tarefas chega a uma distância pré-definida por ele, exclusão de tarefas concluídas cujo prazo já passou e controle do estado de tarefas para que ela seja marcada como atrasada se seu prazo passou.
  • NodeFetch: Consumir a a API do TimezoneDB para mapear todos os fusos horários

  • Path e FS: Caching local dos dados obtidos em consultas à API's externas para evitar processamento desnecessário


💻 Como rodar localmente

Clone o projeto :

git clone https://github.com/GustavoAndrad/ToDu_System.git

Entre no diretório do projeto :

cd ToDu_System

! Não esqueça de preparar as variáveis de ambiente definidas em .env.example !

🐳 Utilizando Docker :

Instale as dependências :

npm install

Construa os conteiners configurados :

docker-compose -p todu_project up --build -d

No prompt do conteiner todu_app, rode as migrations (redefinindo para usar CommonJS) :

npx knex migrate:latest --knexfile knexfile.cjs

🍣 Sem usar Docker :

Atenção às tecnologias aqui!

Instale as dependências:

npm install

Rode as migartions e rode manualmente (fora do conteiner) :

npx knex migrate:latest --knexfile knexfile.cjs

Rode o projeto :

npm run dev

🎡 Exemplo de Uso

🔥 Saída no console sobre as operações agendadas:

Log dos agendamentos

🌙 Exemplo de uma requisição bem sucedida no Insominia:

Rotas no insominia


👤 Desenvolvedor

About

Documentação, Modelos e API de uma aplicação web para gerenciamento de tarefas. Desenvolvida com NodeJs, MySQL, Docker.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published