Skip to content

MarlosAugusto/whatsApp-reminders

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WhatsApp Reminders

Sistema simples de lembretes via WhatsApp para Linux que permite criar e receber notificações automáticas através do WhatsApp Web.

⚙️ TODO:

🏗️ Versão Refatorada com SOLID

🚀 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

Systemd do Usuário com Zenity - Funciona Perfeitamente!

Status: ✅ Problema 100% resolvido! Systemd do usuário + QR Code funcionam nativamente

Solução final implementada:

  • 🎯 Serviço do usuário: systemctl --user ao 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.sh configura tudo automaticamente
  • 📊 Monitoramento fácil: journalctl --user para 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 →


📋 Pré-requisitos

  • Node.js (versão 16 ou superior)
  • npm ou yarn
  • Linux (Ubuntu/Debian recomendado)
  • Zenity (para notificações gráficas)

🚀 Instalação

Instalação Automática (RECOMENDADO)

git clone https://github.com/MarlosAugusto/whatsApp-reminders.git
cd whatsApp-reminders
./install.sh

O 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

Detalhes do Script install.sh

🔍 Ver funcionamento detalhado do instalador

O script install.sh é um instalador automatizado inteligente que configura todo o ambiente em uma única execução:

🎯 Funcionalidades Principais:

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)

🚀 Vantagens Técnicas:

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

🔧 Funcionamento Interno:

# 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..."

💡 Por que é Necessário?

  1. Reduz Complexidade: 9 passos manuais → 1 comando
  2. Previne Erros: Build esquecido, permissões incorretas
  3. Multi-Plataforma: Ubuntu, Debian, CentOS, RHEL
  4. Experiência Profissional: Setup enterprise-grade
  5. 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! 🎉

�🛠️ Instalação Manual

Clique para ver instalação manual
  1. Clone o repositório:
git clone https://github.com/MarlosAugusto/whatsApp-reminders.git
cd whatsApp-reminders
  1. Instale as dependências:
npm install
  1. Compile o projeto:
npm run build
  1. Configure as variáveis de ambiente:
cp .env.example .env
# Edite o arquivo .env com suas configurações
  1. Torne os scripts executáveis:
chmod +x *.sh
chmod +x setup-*.sh

⚙️ Configuração

Arquivo .env

Configure 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:

  1. Execute a aplicação
  2. Envie uma mensagem no grupo desejado
  3. O ID será exibido no console

📱 Como usar

Iniciando a aplicação

npm start

ou usando o script:

./start-whatsapp-reminder.sh

Na primeira execução, será necessário escanear o QR Code para conectar ao WhatsApp Web.

Criando lembretes

Envie mensagens no grupo/chat configurado usando os seguintes formatos:

1. Lembrete para data específica

lembrete: 25/12/2024 09:00 Feliz Natal!

2. Lembrete semanal

lembrete: toda segunda-feira 08:00 Reunião de equipe
lembrete: todo sábado 10:00 Limpeza da casa

3. Lembrete mensal (todo dia X do mês)

lembrete: todo dia 15 14:00 Pagamento da fatura

4. Lembrete diário

lembrete: diario 07:00 Tomar vitamina

5. Lembretes adiáveis

Adicione - adiavel ao final de qualquer lembrete:

lembrete: diario 20:00 Estudar inglês - adiavel

Tipos de notificação

  • 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)

🤖 Automação Completa

Este projeto oferece automação total desde instalação até configuração de produção:

🎯 Fluxo Automatizado Completo

# 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!

🔧 Ecossistema de Scripts Inteligentes

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)

💡 Características da Automação

  • 🛡️ 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

📈 Benefícios vs Configuração Manual

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! 🚀

🔧 Scripts disponíveis

📦 Scripts NPM

  • npm start: Inicia versão original (desenvolvimento)
  • npm run start:refactored: Inicia versão refatorada (desenvolvimento)
  • npm run build: Compila TypeScript para produção
  • npm run start:prod: Executa versão compilada (produção)
  • npm run prod: Build + Start em um comando

🚀 Scripts de Configuração Inteligente

  • ./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)

🔬 Tecnologias dos Scripts:

  • 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

🛠️ Scripts Utilitários

  • ./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)

📁 Estrutura de arquivos

  • whatsapp-reminder.ts: Aplicação principal
  • notify.sh: Script de notificações
  • start-whatsapp-reminder.sh: Script de inicialização
  • reminders-*.json: Arquivos de armazenamento dos lembretes
  • whatsapp-reminder.png: QR Code gerado para login

🔄 Inicialização automática no Linux

🚀 Configuração Automática (RECOMENDADO)

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)

📋 Métodos Disponíveis

1. Systemd Service do Usuário (Recomendado - QR Code funciona!)

./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

2. Crontab (Universal)

./setup-crontab.sh
  • ✅ Simples e funciona em qualquer Linux
  • ✅ Não depende de systemd
  • ✅ Ideal para sistemas minimalistas

3. Desktop Autostart (Interface gráfica)

./setup-desktop-autostart.sh
  • ✅ Gerenciável via GUI do sistema
  • ✅ Suporta GNOME, KDE, XFCE, MATE
  • ✅ Ideal para desktops pessoais

🔧 Comandos Úteis - Systemd do Usuário

# 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-iniciar

🔧 Configuração Manual (se necessário)

Clique para ver configuração manual

Systemd do Usuário 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.target
systemctl --user daemon-reload
systemctl --user enable whatsapp-reminders
systemctl --user start whatsapp-reminders

Crontab Manual:

crontab -e
# Adicione: @reboot cd /caminho/projeto && npm run prod

🔍 Logs e monitoramento

Para visualizar logs em tempo real:

tail -f log.txt

Para verificar se a aplicação está rodando:

pgrep -f "whatsapp-reminder.ts"

🛠️ Solução de problemas

Systemd com Zenity - Funciona Automaticamente!

Status: ✅ Problema resolvido! Systemd agora suporta QR Code nativamente

Solução implementada:

  • 🔧 Configuração otimizada: DISPLAY e XAUTHORITY no serviço
  • 🎯 Auto-detecção: Script notify.sh detecta 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!

🔧 Outros Problemas Comuns

  1. QR Code não aparece (modo desenvolvimento): Verifique se o Zenity está instalado
  2. Notificações não funcionam: Verifique permissões dos scripts (chmod +x *.sh)
  3. Aplicação não inicia: Verifique se todas as dependências estão instaladas
  4. Lembretes não são criados: Verifique se está enviando no formato correto
  5. Serviço systemd falha: Execute sudo journalctl -u whatsapp-reminders -f para ver logs
  6. Build necessário: Execute npm run build antes de usar versão compilada

📄 Licença

ISC License

About

whatsApp reminders

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors