- 🎒 Sobre o Projeto
- ⚙ Funcionalidades e Modelos
- 🛠 Tecnologias e Ferramentas
- 💻 Como Rodar Localmente
- 🎡 Exemplo de Uso
- 👤 Desenvolvedor
O ToDu System
é um software desenvolvido para fixação dos meus conhecimentos em desenvolvimento de API's.
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.
🌟Documentação Completa do Sistema
O sistema cumpre:
💡 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
-
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
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
!
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
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
🔥 Saída no console sobre as operações agendadas
:
🌙 Exemplo de uma requisição bem sucedida no Insominia
:
- @GustavoAndrad - Programador e Analista