Appearance
Decaelo — Roadmap
Visão do Produto
Sistema SaaS de gestão para igrejas com multi-tenancy (banco de dados isolado por subdomínio). Modelo freemium com planos escalonados por número de membros e funcionalidades premium.
Stack
- Backend: Laravel 13, PHP 8.4, MariaDB, Redis (predis)
- Frontend: Vue 3, Inertia.js, PrimeVue 4 (unstyled + PT preset), Tailwind CSS v4
- Multi-tenancy: stancl/tenancy (multi-database, subdomínios)
- Pacotes: Spatie Permission, Spatie MediaLibrary, Spatie PDF, Laravel Auditing, Laravel Fortify, Laravel Reverb, Laravel Scout, Laravel Socialite
- Mobile (futuro): NativePHP / Capacitor para Android/iOS
- Infra: Docker, Nginx, WSL2
Fases Concluídas
Fase 0 — Fundação Arquitetural ✅
- Estrutura DDD (Domain/Church, Domain/User, Domain/Shared, Domain/Member)
- Multi-tenancy com stancl/tenancy (multi-database, subdomínios)
- PrimeVue 4 unstyled + Tailwind CSS v4
- ULID como identificador público (nunca expõe IDs)
- L5-Swagger configurado
- Models unguarded globalmente, validação via Form Requests
Fase 1 — Autenticação, Usuários e Permissões ✅
- User model no banco do tenant (isolamento total)
- Fortify (login, registro, 2FA, reset password, email verification)
- Spatie Permission (7 roles, 19 permissions)
- CRUD de Usuários e Roles com policies
- Middleware EnsureProfileCompleted
- Auditoria via laravel-auditing
Fase 2 — Estrutura Eclesiástica ✅
- ChurchProfile, Congregation, ChurchOfficial, Address (polimórfico)
- Tabelas de referência: IgrejaFuncao, IgrejaCargo, IgrejaSituacao, IgrejaModoAdmissao
- Dados compartilhados: Profissao, Escolaridade, TelefoneTipo, Pais, Uf
- CRUD completo com Actions, Events, Policies
- Frontend: 7 páginas + 4 componentes reutilizáveis
Fase 2.5 — Design System & UI Polish ✅
- Paleta: navy sidebar (#1a1f36), gold accent (#c9942e), slate content (#f8fafc)
- Tipografia: Plus Jakarta Sans (app), Bricolage Grotesque + Figtree (landing)
- PrimeVue PT preset global (primevue-pt.ts)
- Locale pt-BR configurado globalmente
- Landing page SaaS na central (igreja.test)
- Tenant welcome page com identidade da igreja
- Auth pages com split layout (navy + formulário)
- SESSION_DRIVER=cookie, predis para Redis
- Border radius 12px, DataTable com paginação centralizada
Fase 3 — Gestão de Membros ✅
- Member model separado do User (abordagem hybrid)
- Dados eclesiásticos inline (situação, função, cargo, modo admissão, congregação)
- MemberPhone (hasMany com TelefoneTipo)
- Address polimórfico reutilizado
- Cônjuge (self-referência), responsável para menores
- 5 Actions, 4 Events, MemberPolicy
- CRUD completo com filtros server-side
- 4 páginas Vue (Index DataTable, Create/Edit forms, Show profile)
- MemberSeeder com 25 membros fake
- 290 testes passando
Fases Concluídas (cont.)
Fase 4 — Planos, Limites e Feature Flags ✅
- Plan model no banco central (Semente/Crescimento/Expansão)
- Tenant helpers: hasFeature(), memberLimit(), isAtMemberLimit()
- Limit checks, CheckFeature middleware, UpgradeModal
- Admin panel central em /admin/tenants
Fase 5A — Fundação Financeira ✅
- Transaction model com status workflow (pendente→efetivada/cancelada)
- TransactionCategory, BankAccount, formas de pagamento
- 4 Actions, TransactionPolicy, 3 Controllers, 8 páginas Vue
- Sidebar agrupada: Secretaria, Igreja, Financeiro
Fase 6A — Grupos e Células ✅
- GroupType, Group, GroupMember, GroupActivity models
- 8 events, 8 actions, GroupPolicy com lider ownership
- CRUD completo + sidebar "Grupos"
Fase 6B — Escalas de Voluntários ✅
- GroupPosition, Schedule, ScheduleItem models
- Detecção de conflitos entre grupos
- Calendário mensal grid + schedule dialog
- Dashboard "Minhas Escalas"
Fase 7A — Eventos e Inscrições ✅
- EventType, Event, EventRegistration models + 3 enums
- Público-alvo por evento (membros, usuários, público)
- Aprovação opcional, lista de espera automática
- Integração financeira por plano (finance_integration feature flag)
- Página pública de inscrição para visitantes
- 108 testes específicos
Fase 8 — Patrimônio ✅
- AssetType, Asset, AssetMovement models + 3 enums
- Movimentações: transferência, manutenção, baixa
- Foto via Spatie Media + UuidFileNamer
- Rota /media multi-tenant para servir arquivos
- 84 testes específicos
Fase 10 — Secretaria Digital ✅
- Certificado de Batismo + Cartas (recomendação, transferência, desligamento)
- PDFs via Spatie Laravel PDF + Gotenberg
- DocumentLog com download permanente
- Templates Blade formais com logo da igreja
- 35 testes específicos
Fase 7B — Check-in Kids ✅
- Checkin model com QR code (chillerlan/php-qrcode)
- Check-out com validação de responsáveis autorizados
- Etiqueta PDF via Gotenberg (planos pagos — kids_print_label)
- Dual-mode: membro + visitante
- Nova role: voluntario-kids
- Feature flags: kids_checkin, kids_print_label
Fase 12A — Scout + Typesense (Busca Full-Text) ✅
- TenantSearchable trait com collections isoladas por tenant
- Member, Transaction, Event com toSearchableArray e schemas Typesense
- Controllers com busca Scout + fallback Eloquent
- Typesense como servico Docker
- Artisan command app:reindex-search
- Feature flag: full_text_search (Crescimento, Expansao)
Fase 9 — Comunicação e Notificações ✅
- Domain/Communication com 6 models, 5 enums, 15+ actions
- Notificações in-app (database + mail) com preferências por membro/canal/categoria
- Sino de notificação no header com contagem em tempo real (Echo + Reverb)
- Mural de pedidos de oração com moderação, "Estou orando", broadcasting real-time
- Aniversariantes: widget no dashboard (semana), job diário para líderes
- E-mail em massa: 5 templates, wizard 4 steps, filtros de audiência, batch via Bus::batch()
- Feature trial: extra_features com expiração, painel admin central, job de limpeza
- 8 novas permissions, 4 feature flags (notifications, prayer_wall, birthday_alerts, mass_email)
- ~104 novos testes
Fase 12B — Importação de Membros (CSV/Excel) ✅
- Upload CSV/XLSX com mapeamento de colunas e preview
- Deduplicação por CPF (prioritário) ou nome+sobrenome (fallback)
- Resolução de referências por nome (situação, congregação, cargo, etc.)
- Template de planilha modelo para download
- Importações grandes via queue (>50 linhas)
- Permissão: member.import (admin-igreja, secretário)
Próximas Fases
Fase 11 — App White Label
Objetivo: App personalizado para cada igreja.
- NativePHP / Capacitor para Android e iOS
- Identidade visual da igreja (logo, cores)
- Taxa de setup + mensalidade extra
- Build automatizado via CI/CD
Fase 12 — Integrações e Ecossistema
Objetivo: Expandir o ecossistema.
- Socialite (login social Google/Facebook)
- API pública para integrações de terceiros
- Conciliação bancária
Fase 13A — Painel Central SaaS ✅
- Autenticação admin com guard dedicado (AdminUser model)
- Dashboard central com KPIs (tenants, membros, atividade)
- CRUD de Tenants com onboarding completo (banco + seeds + admin user)
- CRUD de Planos com gestão de features
- Suspensão/reativação de tenants
- Impersonação para suporte (signed URLs + banner)
- Middleware de tracking de atividade
- Gestão de features inline na página do tenant (grant/revoke/trial)
13B — Billing e Comercial (posterior):
- Gestão de assinaturas e billing (Laravel Cashier)
- Histórico de pagamentos e inadimplência
- Upgrade/downgrade de planos
13C — Auditoria e Operações (posterior):
- Logs de atividade centralizados
- Suporte a convenções/denominações (painel consolidado multi-igreja)
- Marketplace de conteúdo (livros, artigos)
Backlog — Melhorias e Pendências
Itens identificados durante o desenvolvimento que ficaram para implementação futura.
Comunicação & Notificações
- Notificar autor ao aprovar pedido de oração — enviar notificação in-app ao membro que postou ("Seu pedido de oração foi aprovado") quando moderador aprovar
- E-mail automático de boas-vindas — ao cadastrar novo membro com user/email, disparar automaticamente via evento
MemberCreated→ listener → notification. Permitir reenvio manual no menu de e-mails em massa - Barra de busca global (Spotlight/Command Palette) — busca cross-model unificada no header, combina Member + Transaction + Event em uma interface única com atalho de teclado
- Push notifications (Firebase) — notificações push via browser/mobile. Adiado para quando houver app mobile (Fase 11)
- SMS/WhatsApp — sistema de créditos pré-pagos com integração de provedor externo (Twilio/etc)
- Testar broadcasting end-to-end — validar Reverb com Echo em ambiente de teste real (prayer wall real-time, notification bell)
Documentos & Relatórios
- Report Builder drag-n-drop — editor visual para montar templates de documentos personalizados por igreja. Campos dinâmicos vinculados aos dados do sistema (nome do membro, data de batismo, etc.). Cada igreja personaliza com sua identidade visual
Integrações (Fase 12 restante)
- API pública — endpoints REST para integrações de terceiros
- Socialite (login social) — Google/Facebook login. Adiado por complexidade com OAuth callbacks em multi-tenancy por subdomínio
- Conciliação bancária — integração com bancos/Open Finance para reconciliação automática
Infraestrutura & Qualidade
- 5 testes falhando em ReportTest — usam GET em rotas POST (bug pré-existente)
- Documentação de módulos faltantes — Groups, Assets, Events, Checkins, Documents não têm docs VitePress ainda
Princípios Técnicos
- ULID como identificador público (nunca expor IDs numéricos)
- Actions para lógica de negócio (não Services, exceto integrações externas)
- Models unguarded globalmente, validação via Form Requests
- Testes com SQLite in-memory (não MariaDB)
- PrimeVue unstyled com PT preset global (primevue-pt.ts)
- Faker pt_BR para seeders de desenvolvimento
- Auditoria em todos os models de domínio
- Feature flags por tenant para módulos premium