Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Legendários CRM API

Sistema completo de CRM para gerenciamento de eventos Legendários, desenvolvido em Go com arquitetura limpa.

📋 Características

  • Arquitetura Limpa: Separação clara entre camadas de domínio, casos de uso, infraestrutura e interface
  • Framework Web: Go Fiber para alta performance
  • ORM: GORM para interação com banco de dados
  • Banco de Dados: PostgreSQL
  • Autenticação: JWT para administradores
  • Webhooks: Sistema de notificações WhatsApp (mockado)
  • Documentação: Swagger/OpenAPI
  • Logs: Estruturados com Zap
  • Docker: Containerização completa

🚀 Início Rápido

Pré-requisitos

  • Go 1.21+
  • Docker & Docker Compose
  • PostgreSQL (se não usar Docker)

Instalação

  1. Clone o repositório
git clone <repository-url>
cd go-simple-api
  1. Execute o script de setup
./scripts/setup.sh
  1. Inicie o servidor
go run main.go

Ou use Docker Compose:

docker-compose up

📚 Documentação da API

Após iniciar o servidor, acesse:

Credenciais Padrão

Email: admin@legendarios.com
Password: admin123

🏗️ Arquitetura

├── cmd/
│   └── server/          # Ponto de entrada da aplicação
├── internal/
│   ├── domain/
│   │   ├── entities/    # Entidades do domínio
│   │   └── repositories/ # Interfaces dos repositórios
│   ├── usecase/         # Casos de uso (regras de negócio)
│   ├── infrastructure/
│   │   ├── database/    # Configuração do banco
│   │   ├── repository/  # Implementações dos repositórios
│   │   └── webservice/  # Serviços externos (WhatsApp)
│   └── interface/
│       └── http/
│           ├── handlers/ # Handlers HTTP
│           └── middleware/ # Middlewares
├── pkg/
│   ├── logger/          # Sistema de logs
│   └── utils/           # Utilitários
├── configs/             # Configurações
├── docs/                # Documentação
└── scripts/             # Scripts de setup e deploy

🎯 Funcionalidades

👨‍💼 Administradores

  • Login/Logout: Autenticação JWT
  • Gestão de Usuários: Criar admins (superadmin only)
  • Perfil: Visualizar dados do usuário

🎪 Eventos

  • CRUD Completo: Criar, listar, atualizar, deletar eventos
  • Validações: Datas e dados obrigatórios
  • Relacionamentos: Com senderistas e legendários

🏃‍♂️ Senderistas (Participantes)

  • Importação: Lote de participantes (mock)
  • Kanban: 4 status do fluxo
    • pre_cadastro
    • análise_médica
    • aprovacao_medica
    • concluido
  • WhatsApp: Envio de formulário médico
  • Aprovação Médica: Controle manual

🦸‍♂️ Legendários (Voluntários)

  • Importação: Lote de voluntários (mock)
  • Kanban: 4 status do fluxo
    • pre_selecao
    • em_pagamento
    • lives
    • pronto_a_servir
  • Áreas de Atuação: Múltiplas áreas por voluntário
    • Logística, ADM, Eventos, Segurança, Hakuna, DOC, Voz
  • WhatsApp: Aprovação do pastor e esposa
  • Pagamento: Sistema mockado
  • Lives: Acesso após pagamento

📱 Webhooks/WhatsApp

  • Sistema Mockado: Simula envio de mensagens
  • Mensagens Personalizadas: Templates para cada situação
  • Log Completo: Todas as mensagens são logadas

🔌 API Endpoints

Autenticação

POST /auth/login           # Login
GET  /auth/profile         # Perfil do usuário
POST /auth/admin           # Criar admin (superadmin only)

Eventos

GET    /events             # Listar eventos
POST   /events             # Criar evento (superadmin only)
GET    /events/:id         # Obter evento
PUT    /events/:id         # Atualizar evento (superadmin only)
DELETE /events/:id         # Deletar evento (superadmin only)

Senderistas

POST /events/:eventId/senderistas/import    # Importar senderistas
GET  /events/:eventId/senderistas           # Listar por evento
PUT  /senderistas/:id/status                # Atualizar status (Kanban)
POST /senderistas/:id/webhook/form          # Enviar formulário médico
PUT  /senderistas/:id/medical-approval      # Aprovação médica

Legendários

POST /events/:eventId/legendarios/import    # Importar legendários
GET  /events/:eventId/legendarios           # Listar por evento
PUT  /legendarios/:id/status                # Atualizar status (Kanban)
PUT  /legendarios/:id/areas                 # Definir áreas
POST /legendarios/:id/webhook/pastor        # Enviar para pastor
POST /legendarios/:id/webhook/esposa        # Enviar para esposa
POST /legendarios/:id/payment               # Processar pagamento

Webhooks

POST /webhooks/whatsapp    # Enviar mensagem customizada
GET  /health               # Health check

🔒 Autenticação

Todas as rotas protegidas requerem header de autorização:

Authorization: Bearer <jwt-token>

Níveis de Acesso

  • hakuna: Acesso básico
  • superadmin: Acesso completo

🗄️ Banco de Dados

Entidades Principais

AdminUser

  • ID, Email, Password (hash), Role
  • Roles: hakuna, superadmin

Event

  • ID, Name, StartDate, EndDate, Location

Senderista

  • ID, EventID, FullName, PhoneNumber
  • Status, MedicalFormLink, ApprovedByDoctor

Legendario

  • ID, EventID, FullName, PhoneNumber
  • Areas (JSONB), PastorApproval, EsposaFormResposta
  • PaymentStatus, Status

🔧 Configuração

Arquivo .env:

# Database
DB_HOST=localhost
DB_PORT=5432
DB_NAME=legendarios_crm
DB_USER=postgres
DB_PASSWORD=password

# Server
PORT=8080

# JWT
JWT_SECRET=your-secret-key
JWT_EXPIRES_IN=24h

# WhatsApp (Mock)
WHATSAPP_API_URL=https://api.whatsapp.com/send
WHATSAPP_API_TOKEN=mock-token

# Logs
LOG_LEVEL=debug

🐳 Docker

Development

docker-compose up

Production Build

docker build -t legendarios-crm .
docker run -p 8080:8080 legendarios-crm

📝 Logs

Sistema de logs estruturados com níveis:

  • DEBUG: Desenvolvimento detalhado
  • INFO: Informações gerais
  • WARN: Avisos
  • ERROR: Erros

🧪 Testes

# Executar testes
go test ./...

# Com coverage
go test -cover ./...

📦 Dependências Principais

  • gofiber/fiber/v2: Framework web
  • gorm.io/gorm: ORM
  • gorm.io/driver/postgres: Driver PostgreSQL
  • golang-jwt/jwt/v5: JWT
  • google/uuid: UUIDs
  • go.uber.org/zap: Logs estruturados
  • golang.org/x/crypto: Criptografia

🤝 Contribuição

  1. Fork o projeto
  2. Crie uma branch para sua feature
  3. Commit suas mudanças
  4. Push para a branch
  5. Abra um Pull Request

📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para detalhes.

🆘 Suporte

Para dúvidas ou problemas:

  1. Verifique a documentação da API em /docs
  2. Consulte os logs da aplicação
  3. Abra uma issue no repositório

Desenvolvido com ❤️ para a comunidade Legendários

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages