KOLOS — Estratégia de Desenvolvimento & Priorização
🧭 Contexto
Guia de implementação sequencial para a arquitetura Modular Monolith, definindo dependências e ordem de criação dos módulos.
🎯 Objetivo
Definir a ordem exata de criação dos módulos para evitar bloqueios técnicos. A regra é clara: módulos de alto nível dependem de módulos de baixo nível.
Visão Macro: O Caminho Crítico
- Fundação (Kernel): O que todo mundo usa.
- Atores & Palco (Identity, Player, Venue): Quem joga e onde joga.
- Motor de Tempo (Booking): A lógica de agenda (o coração).
- Motor Financeiro (Finance): A viabilidade do negócio.
- Camada de Jogo (Competition, Academy): O produto final.
- Gamificação & Varejo (Ranking, Commerce): O engajamento.
Onda 1: A Fundação (Infraestrutura Lógica)
1.1 Módulo Shared (Kernel Compartilhado)
- Tipo: Kernel / Infrastructure
- Dependências: Nenhuma
- O que criar:
- Value Objects: Email, CPF, Money, TimeSlot
- Abstract Classes: BaseAction, BaseDTO, BaseModel (com UUID traits)
- Interfaces: contratos genéricos
- Motivo claro: todos os módulos dependem de Money e TimeSlot. Sem isso, haverá duplicação e inconsistência.
1.2 Módulo Identity (Autenticação & ACL)
- Tipo: Generic Subdomain
- Dependências: Shared
- O que criar:
- Models: User
- Auth: Login, Registro, Reset de Senha (Fortify/Breeze ou nativo)
- ACL (Spatie): Roles (super_admin, venue_owner, player, staff) e Permissions
- Motivo claro: todo ator nasce de um User com permissão definida.
Onda 2: Os Ativos (Quem e Onde)
2.1 Módulo Venue (O Palco)
- Tipo: Core Domain
- Dependências: Identity (Dono da Arena)
- O que criar:
- CRUD de Arenas: Nome, Endereço, Configs (Horário de Abertura)
- CRUD de Quadras (Courts): Tipo de piso, Coberta/Descoberta
- Motivo claro: sem quadra não existe booking.
2.2 Módulo Player (O Avatar)
- Tipo: Core Domain
- Dependências: Identity (Usuário vinculado)
- O que criar:
- Perfil: Foto, Altura, Lateralidade (Destro/Canhoto)
- Play Card (Base): estrutura de stats
- Motivo claro: sem jogadores não existe partida.
Onda 3: O Motor (Tempo e Dinheiro)
3.1 Módulo Booking (A Agenda)
- Tipo: Core Domain
- Dependências: Venue (Quadras), Player (Quem reserva)
- O que criar:
- Lógica de Slots: validação de disponibilidade
- Tipos de Reserva: DAY_USE, BOOKING e MAINTENANCE
- Conflict Solver: impedir double booking
- Motivo claro: funcionalidade principal do MVP.
3.2 Módulo Finance (O Cofre)
- Tipo: Generic Subdomain
- Dependências: Booking (Origem da cobrança), Player (Quem paga)
- O que criar:
- Wallet: Saldo do usuário
- Transaction: Registro de movimentação
- Split Payment: divisão do valor do booking
- Motivo claro: booking gera dívida e precisa ser liquidada.
Onda 4: O Jogo (Competição e Ensino)
4.1 Módulo Competition (Torneios)
- Tipo: Core Domain
- Dependências: Booking (bloqueio), Finance (inscrições), Player (atletas)
- O que criar:
- Torneios: CRUD de evento
- Venue Takeover: bloqueios massivos na agenda
- Chaves: geração de brackets
- Motivo claro: torneio é um super-usuário da agenda.
4.2 Módulo Academy (Aulas)
- Tipo: Supporting Subdomain
- Dependências: Booking (recorrência), Player (alunos/coach)
- O que criar:
- Turmas: vínculo Coach + horário
- Recorrência: geração automática de bookings
- Motivo claro: aulas são bookings recorrentes.
Onda 5: A Glória (Engajamento)
5.1 Módulo Ranking
- Tipo: Supporting Subdomain
- Dependências: Competition (resultados), Booking (amistosos LADDER_MATCH)
- O que criar:
- Pontuação: algoritmo de pontos por vitória
- Temporadas: reset anual
- Motivo claro: ranking depende do histórico de jogos.
5.2 Módulo Commerce
- Tipo: Generic Subdomain
- Dependências: Finance (pagamentos)
- O que criar:
- POS: venda de produtos
- Aluguel: controle de raquetes
- Motivo claro: add-on de receita, não bloqueia o core.
Resumo Visual de Dependências
[Shared]
│
▼
[Identity] ──┐
│ │
▼ ▼
[Venue] [Player]
│ │
└────┬────┘
│
▼
[Booking] ◀──┐
│ │
▼ │
[Finance] │
│ │
▼ │
[Competition] ─┘
│
▼
[Ranking]
Definição de Pronto (DoD) do MVP
Para lançar a versão 1.0.0-alpha, concluir até o final da Onda 3:
- Onda 1 + 2 + 3 = arena cadastra quadras, cadastra clientes, agenda jogos e recebe dinheiro.
- Onda 4 + 5 = diferencial competitivo (Torneios e Ranking).
Recomendação: comece pela estrutura de pastas em src/Modules e implementação do Shared Kernel.