Sistema completo de CRM para gerenciamento de eventos Legendários, desenvolvido em Go com arquitetura limpa.
- 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
- Go 1.21+
- Docker & Docker Compose
- PostgreSQL (se não usar Docker)
- Clone o repositório
git clone <repository-url>
cd go-simple-api- Execute o script de setup
./scripts/setup.sh- Inicie o servidor
go run main.goOu use Docker Compose:
docker-compose upApós iniciar o servidor, acesse:
- Swagger UI: http://localhost:8080/docs/
- Health Check: http://localhost:8080/health
Email: admin@legendarios.com
Password: admin123
├── 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
- Login/Logout: Autenticação JWT
- Gestão de Usuários: Criar admins (superadmin only)
- Perfil: Visualizar dados do usuário
- CRUD Completo: Criar, listar, atualizar, deletar eventos
- Validações: Datas e dados obrigatórios
- Relacionamentos: Com senderistas e legendários
- Importação: Lote de participantes (mock)
- Kanban: 4 status do fluxo
pre_cadastroanálise_médicaaprovacao_medicaconcluido
- WhatsApp: Envio de formulário médico
- Aprovação Médica: Controle manual
- Importação: Lote de voluntários (mock)
- Kanban: 4 status do fluxo
pre_selecaoem_pagamentolivespronto_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
- Sistema Mockado: Simula envio de mensagens
- Mensagens Personalizadas: Templates para cada situação
- Log Completo: Todas as mensagens são logadas
POST /auth/login # Login
GET /auth/profile # Perfil do usuário
POST /auth/admin # Criar admin (superadmin only)
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)
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
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
POST /webhooks/whatsapp # Enviar mensagem customizada
GET /health # Health check
Todas as rotas protegidas requerem header de autorização:
Authorization: Bearer <jwt-token>
- hakuna: Acesso básico
- superadmin: Acesso completo
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
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=debugdocker-compose updocker build -t legendarios-crm .
docker run -p 8080:8080 legendarios-crmSistema de logs estruturados com níveis:
- DEBUG: Desenvolvimento detalhado
- INFO: Informações gerais
- WARN: Avisos
- ERROR: Erros
# Executar testes
go test ./...
# Com coverage
go test -cover ./...- 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
- Fork o projeto
- Crie uma branch para sua feature
- Commit suas mudanças
- Push para a branch
- Abra um Pull Request
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para detalhes.
Para dúvidas ou problemas:
- Verifique a documentação da API em
/docs - Consulte os logs da aplicação
- Abra uma issue no repositório
Desenvolvido com ❤️ para a comunidade Legendários