O Notiway é uma API Rest cujo seu objetivo principal é o envio de notificações via Whatsapp.
Aqui você encontra a API completa com todos recursos para gestão dos clientes na Notiway, além da própria estrutura de rotas para envio de Notificações para o Whasapp.
Para o envio das notificações, esta API necessida enviar requisições HTTP para um servidor rodando o WPPConnect.
Este projeto foi criado como forma de estudo de ferramentas e conceitos e não possui careter comercial.
- CRUD de clients, consumers, users e senders;
- Deve ser possível um usuário realizar a autenticação;
- Recuperação de senha com token via e-mail;
- Listagem de clients, consumers, users e senders;
- Envio de mensagem de texto, imagem, audio, localização, contato, link, gifs e figurinhas através do Whatsapp;
- Agendamento de envio das mensagens via Whatsapp;
- Retentativa de envio no caso de erros;
- CRUD de agendamento de mensagens;
- Envio de e-mails para novos cadastros;
- Comunicação via webhook com o WPPConnect e também para o front-end para atualização do QR-code de conexão com o Whatsapp;
- Sistema de refresh token no controle de autenticação de usuários;
- Documentar envio de mensages; (Documentação disponivel na rota / da api)
- Documentar rotas de gestão da API.
Para executar o projeto, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git, Node.js. Além disto é bom ter um editor para trabalhar com o código como VSCode. Também é necessário inicializar o WPPConnect e passar via arquivo .env a URL de conexão e a secret do servidor. (documentação do WppConnect)
# Clone o repositório
$ git clone git@github.com:eduhaag/notiway.git
# Acesse a página do projeto
$ cd notiway
# Instale as dependências
$ npm install
# Rode o projeto
$ npm run dev
# O servidor front-end será inicializado na porta 3333. Enviar requisições para http://localhost:5173.
- Node;
- Typescript;
- Vite - Para agilizar o processo de criação e configuração do projeto;
- Eslint - Utilitário de linting;
- Babel - Transpilador Javascript;
- Axios - Realiza a comunicação com o backend por meio de requisições HTTP;
- Fastify - Um framework para arquitetura de servidores com Node;
- Primas - Um ORM para estruturação de conexão com o banco de dados;
- Sentry - Monitoramento de erros em produção;
- Agenda.js - Uma biblioteca para agendamento de tarefas e organização de filas;
- Bcryptjs - Utilizada na encriptação de senhas e geração de tokens;
- DayJs - Uma biblioteca para manipulação de datas;
- Handlebars - Linguagem de modelagem para criação de e-mails transacionais;
- MongoDB - Banco de dados NoSQL utilizado na orquestração de filas e agendamentos;
- NodeMailer - Modulo para envio de e-mails;
- Socker.io - Utilizado na comunicação via web socket;
- Zod - Biblioteca para validação esquema de dados recebidos nas requisições da API;
- Vitest - Biblioteca para testes automatizados. (No projeto foi utilizado em testes unitários e e2e);
- Supertest - Permite enviar requisições a API nos testes e2e;
Veja o arquivo package.json
Utilitários
- Editor: Visual Studio Code;
- Documentação: Redoc.
- Faça um fork do projeto.
- Crie uma nova branch com as suas alterações:
git checkout -b my-feature
- Salve as alterações e crie uma mensagem de commit contando o que você fez:
git commit -m "feature: My new feature"
- Envie as suas alterações:
git push origin my-feature
Este projeto está sobe a licença MIT.