KOLOS — Estratégia de Desenvolvimento & Priorização
Documentação KOLOS

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.