Sistema simples de lembretes via WhatsApp para Linux que permite criar e receber notificações automáticas através do WhatsApp Web.
⚙️ TODO:
🚀 Nova versão profissional disponível! Esta aplicação foi completamente refatorada seguindo os princípios SOLID e Design Patterns:
- ✅ 5 Princípios SOLID implementados
- ✅ 4 Design Patterns aplicados
Status: ✅ Problema 100% resolvido! Systemd do usuário + QR Code funcionam nativamente
Solução final implementada:
- 🎯 Serviço do usuário:
systemctl --userao invés de serviço do sistema - 📱 QR Code via Zenity: Funciona automaticamente sem configuração especial
- 🔔 Notificações nativas: Acesso completo ao display gráfico
- 🚀 Script otimizado:
setup-systemd-user.shconfigura tudo automaticamente - 📊 Monitoramento fácil:
journalctl --userpara logs
Vantagens da versão do usuário:
- ✅ GUI completa: Zenity, notificações, QR Code funcionam
- ✅ Sem DISPLAY/XAUTHORITY: Configuração simplificada
- ✅ Sessão do usuário: Roda no contexto correto
- ✅ Mais seguro: Não precisa de privilégios root
Resultado: QR Code aparece automaticamente na primeira execução - funciona como deveria!, Factory, DI)
- ✅ Arquitetura modular e testável
- ✅ Bibliotecas atualizadas (whatsapp-web.js v1.34.1)
- ✅ Performance otimizada e mais estável
📖 Ver documentação completa da refatoração →
- Node.js (versão 16 ou superior)
- npm ou yarn
- Linux (Ubuntu/Debian recomendado)
- Zenity (para notificações gráficas)
git clone https://github.com/MarlosAugusto/whatsApp-reminders.git
cd whatsApp-reminders
./install.shO script install.sh fará automaticamente:
- ✅ Verificação de dependências (Node.js, Zenity)
- ✅ Instalação de pacotes npm
- ✅ Build do projeto para produção
- ✅ Configuração de permissões
- ✅ Criação do arquivo .env
🔍 Ver funcionamento detalhado do instalador
O script install.sh é um instalador automatizado inteligente que configura todo o ambiente em uma única execução:
1. Verificações de Segurança
- ✅ Fail-fast: Para execução se houver erro
- ✅ Validação de diretório: Confirma se está no projeto correto
- ✅ Verificação de ambiente: Garante que é um projeto válido
2. Gestão Inteligente de Dependências
- 🔍 Node.js: Detecta automaticamente + instruções por distribuição
- 🤖 Zenity: Instalação automática em Ubuntu/Debian e CentOS/RHEL
⚠️ Fallback graceful: Instruções manuais se não conseguir instalar
3. Build e Configuração Automática
- 📦 npm install: Instala todas as dependências
- 🔨 npm run build: Compila para produção (pasta dist/)
- 🔐 Permissões: Torna todos os scripts executáveis
- 📄 .env: Criação inteligente (usa .env.example ou cria básico)
| Característica | Instalação Manual | Script install.sh |
|---|---|---|
| Tempo | ~10-15 minutos | ⚡ ~2-3 minutos |
| Erros | Comuns (build esquecido) | 🛡️ Prevenidos |
| Suporte multi-distro | Manual por sistema | ✅ Automático |
| Idempotência | Não garantida | ✅ Executável múltiplas vezes |
| Feedback | Limitado | 📊 Detalhado com emojis |
# 1. Verificações de segurança
set -e # Para se houver erro
[ -f "package.json" ] || exit 1
# 2. Dependências do sistema
command -v node || (echo "Instale Node.js" && exit 1)
command -v zenity || auto-install-zenity
# 3. Configuração do projeto
npm install # Dependências
npm run build # Compilação
chmod +x *.sh # Permissões
create-env-if-needed # Configuração
# 4. Guidance final
echo "Próximos passos..."- Reduz Complexidade: 9 passos manuais → 1 comando
- Previne Erros: Build esquecido, permissões incorretas
- Multi-Plataforma: Ubuntu, Debian, CentOS, RHEL
- Experiência Profissional: Setup enterprise-grade
- Onboarding Rápido: Novos usuários funcionais em minutos
Resultado: Transforma instalação manual e propensa a erros em experiência automatizada e confiável! 🎉
Clique para ver instalação manual
- Clone o repositório:
git clone https://github.com/MarlosAugusto/whatsApp-reminders.git
cd whatsApp-reminders- Instale as dependências:
npm install- Compile o projeto:
npm run build- Configure as variáveis de ambiente:
cp .env.example .env
# Edite o arquivo .env com suas configurações- Torne os scripts executáveis:
chmod +x *.sh
chmod +x setup-*.shConfigure o arquivo .env com as seguintes variáveis:
# ID do grupo do WhatsApp (opcional)
GROUP_ID="1122345568879987898@g.us"
# Número para alertas especiais (opcional)
ALERT_NUMBER="5511999999999@c.us"Para obter o GROUP_ID:
- Execute a aplicação
- Envie uma mensagem no grupo desejado
- O ID será exibido no console
npm startou usando o script:
./start-whatsapp-reminder.shNa primeira execução, será necessário escanear o QR Code para conectar ao WhatsApp Web.
Envie mensagens no grupo/chat configurado usando os seguintes formatos:
lembrete: 25/12/2024 09:00 Feliz Natal!
lembrete: toda segunda-feira 08:00 Reunião de equipe
lembrete: todo sábado 10:00 Limpeza da casa
lembrete: todo dia 15 14:00 Pagamento da fatura
lembrete: diario 07:00 Tomar vitamina
Adicione - adiavel ao final de qualquer lembrete:
lembrete: diario 20:00 Estudar inglês - adiavel
- Lembretes normais: Exibem uma notificação com botão "OK"
- Lembretes adiáveis: Exibem botões "OK" e "Adiar"
- Alertas especiais: Notificações de atenção (enviadas pelo número configurado em ALERT_NUMBER)
Este projeto oferece automação total desde instalação até configuração de produção:
# 1. Instalação completa automatizada
git clone https://github.com/MarlosAugusto/whatsApp-reminders.git
cd whatsApp-reminders
./install.sh # ✅ Tudo configurado automaticamente
# 2. Configuração de inicialização automática
./setup-autostart.sh # ✅ Menu interativo - systemd funciona 100%!
# 3. Funcionamento automático
# ✅ QR Code aparece automaticamente na primeira execução
# ✅ Notificações funcionam via Zenity sempre
# ✅ Sem necessidade de scripts especiais!| Script | Função | Inteligência |
|---|---|---|
./install.sh |
Instalação completa | ✅ Multi-distro, detecção automática |
./setup-autostart.sh |
Menu de autostart | ✅ Interface interativa, status |
./setup-systemd.sh |
Serviço systemd | ✅ Paths dinâmicos, auto-config |
./setup-crontab.sh |
Crontab automático | ✅ Backup, anti-duplicação |
./setup-desktop-autostart.sh |
GUI desktop | ✅ Multi-DE (GNOME/KDE/XFCE) |
- 🛡️ Idempotente: Pode executar múltiplas vezes sem problemas
- 🔍 Auto-detecção: Paths, usuário, distribuição Linux
- 📊 Feedback rico: Status, próximos passos, troubleshooting
- 🌐 Multi-plataforma: Ubuntu, Debian, CentOS, RHEL
⚠️ Fail-safe: Validações e rollback em caso de erro
| Aspecto | Manual | Automatizado |
|---|---|---|
| Tempo setup | ~30-45 min | ⚡ ~5 min |
| Probabilidade erro | Alta | 🛡️ Muito baixa |
| Conhecimento técnico | Alto | 📚 Mínimo |
| Suporte multi-distro | Manual | ✅ Automático |
| Manutenibilidade | Difícil | 🔄 Simples |
Resultado: De projeto que requer conhecimento técnico para setup complexo → Aplicação enterprise-ready com instalação one-click! 🚀
npm start: Inicia versão original (desenvolvimento)npm run start:refactored: Inicia versão refatorada (desenvolvimento)npm run build: Compila TypeScript para produçãonpm run start:prod: Executa versão compilada (produção)npm run prod: Build + Start em um comando
./install.sh: Instalador completo (dependências + build + config)./setup-autostart.sh: Menu interativo para configurar inicialização./setup-systemd-user.sh: Serviço systemd do usuário (QR Code + notificações funcionam!)./setup-crontab.sh: Crontab automático (backup + anti-duplicação)./setup-desktop-autostart.sh: Autostart desktop (multi-DE support)
- Auto-detecção: Usuário atual, paths do Node.js, distribuição Linux
- Validação robusta: Verificação de dependências e estado atual
- Backup automático: Preserva configurações existentes
- Multi-plataforma: Ubuntu, Debian, CentOS, RHEL, GNOME, KDE, XFCE
- Rollback seguro: Desfaz mudanças em caso de erro
./install.sh: Instalação completa (tudo em um comando)./start-whatsapp-reminder.sh: Script legado de inicialização./notify.sh: Script de notificações (compatível com systemd e modo interativo)
whatsapp-reminder.ts: Aplicação principalnotify.sh: Script de notificaçõesstart-whatsapp-reminder.sh: Script de inicializaçãoreminders-*.json: Arquivos de armazenamento dos lembreteswhatsapp-reminder.png: QR Code gerado para login
Use nossos scripts de configuração automática:
# Script mestre com menu interativo
./setup-autostart.sh
# Ou configure diretamente um método específico:
./setup-systemd-user.sh # Systemd Service do Usuário (QR Code funciona!)
./setup-crontab.sh # Crontab (universal)
./setup-desktop-autostart.sh # Desktop GUI (pessoal)./setup-systemd-user.sh- ✅ QR Code via Zenity funciona perfeitamente
- ✅ Controle completo via
systemctl --user - ✅ Logs estruturados com
journalctl --user - ✅ Restart automático em falhas
- ✅ Acesso completo ao display gráfico
- ✅ Melhor para produção e desenvolvimento
./setup-crontab.sh- ✅ Simples e funciona em qualquer Linux
- ✅ Não depende de systemd
- ✅ Ideal para sistemas minimalistas
./setup-desktop-autostart.sh- ✅ Gerenciável via GUI do sistema
- ✅ Suporta GNOME, KDE, XFCE, MATE
- ✅ Ideal para desktops pessoais
# Gerenciar serviço do usuário
systemctl --user status whatsapp-reminders # Ver status
systemctl --user stop whatsapp-reminders # Parar serviço
systemctl --user start whatsapp-reminders # Iniciar serviço
systemctl --user restart whatsapp-reminders # Reiniciar serviço
# Ver logs em tempo real
journalctl --user -u whatsapp-reminders -f
# Habilitar/desabilitar
systemctl --user enable whatsapp-reminders # Auto-iniciar
systemctl --user disable whatsapp-reminders # Não auto-iniciarClique para ver configuração manual
mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/whatsapp-reminders.service[Unit]
Description=WhatsApp Reminders Service (User Service)
After=graphical-session.target
[Service]
Type=simple
WorkingDirectory=/caminho/para/whatsApp-reminders
ExecStart=/usr/bin/node /caminho/para/whatsApp-reminders/dist/main-refactored.js
Restart=always
RestartSec=10
Environment=NODE_ENV=production
[Install]
WantedBy=default.targetsystemctl --user daemon-reload
systemctl --user enable whatsapp-reminders
systemctl --user start whatsapp-reminderscrontab -e
# Adicione: @reboot cd /caminho/projeto && npm run prodPara visualizar logs em tempo real:
tail -f log.txtPara verificar se a aplicação está rodando:
pgrep -f "whatsapp-reminder.ts"Status: ✅ Problema resolvido! Systemd agora suporta QR Code nativamente
Solução implementada:
- 🔧 Configuração otimizada:
DISPLAYeXAUTHORITYno serviço - 🎯 Auto-detecção: Script
notify.shdetecta display automaticamente - 📱 QR Code funciona: Zenity exibe normalmente mesmo no systemd
- � Notificações consistentes: Mesmo sistema sempre
Resultado: Não precisa mais fazer nada especial - funciona automaticamente!
- QR Code não aparece (modo desenvolvimento): Verifique se o Zenity está instalado
- Notificações não funcionam: Verifique permissões dos scripts (
chmod +x *.sh) - Aplicação não inicia: Verifique se todas as dependências estão instaladas
- Lembretes não são criados: Verifique se está enviando no formato correto
- Serviço systemd falha: Execute
sudo journalctl -u whatsapp-reminders -fpara ver logs - Build necessário: Execute
npm run buildantes de usar versão compilada
ISC License