# Packages — Modular Monolith

**Workflow:** [`docs/WORKFLOW.md`](../docs/WORKFLOW.md) · **Sprint ativa:** [`docs/sprints/SPRINT_003_CONVERSATIONS.md`](../docs/sprints/SPRINT_003_CONVERSATIONS.md)

---

# Sprint 001 — Core Platform (agora)

Fundação usada por **todos** os módulos. Sem regra imobiliária.

```text
packages/
├── Core/              # Kernel, contratos base
├── Authentication/    # Login, sessão
├── Users/             # Corretores, admins
├── Tenancy/           # Multi-imobiliária
└── Shared/            # Tipos compartilhados
```

Cada package:

```text
src/
├── Domain/
├── Application/
├── Infrastructure/
└── Support/
```

Namespace: `ImovelZapAi\{Package}\...` · Autoload: `backend/composer.json`

Detalhe: [`docs/architecture/PACKAGE_STRUCTURE.md`](../docs/architecture/PACKAGE_STRUCTURE.md)

---

# Sprint 003 — Conversations (em andamento)

**Conversation Engine V1:** `Contact`, `Conversation`, `Message` — sem Lead.

```text
packages/
├── Properties/        # ✅ Sprint 002 — catálogo
└── Conversations/     # ⏳ Sprint 003 — núcleo conversacional + WhatsApp
```

Ver [`Conversations/README.md`](Conversations/README.md).

---

# Pós Sprint 003 — Domínio produto (roadmap)

Conversation-first ([`docs/PRODUCT_MODEL.md`](../docs/PRODUCT_MODEL.md)):

```text
packages/
├── Conversations/     # Contact, Conversation, Message (V1)
├── Properties/        # catálogo
├── visits/
├── deals/
├── search/
├── notifications/
└── ai/
```

Lead / People como domínio separado — **somente após interesse real** (sprint futuro).
