# Module Documentation Migration Plan

Migrate ~18,000 lines of module-specific documentation from top-level `docs/` into each module's `docs/` folder (source of truth), following the standard defined in [Module Documentation](../development/module-documentation.md).

## Current State

- 20 modules each have `docs/index.md` (overview page)
- Only `prospecting` has additional docs (`database.md`, `scoring.md`, `research-findings.md`)
- ~38 files across `docs/` are specific to a single module's internals but live in top-level directories
- 2 files are empty stubs (`product-management.md`, `csv-import.md`)

## Migration Rules

1. **Move** the file into `app/modules/{name}/docs/` with a clear name
2. **Update** the symlink-based `docs/modules/{name}/` nav in `mkdocs.yml`
3. **Leave a redirect stub** in the original location (one-line with a link to the new path) so existing bookmarks still work
4. **Update cross-references** in other docs that link to the moved file
5. **Run `mkdocs build --strict`** after each phase to catch broken links

## Phase 1 — Tenancy (largest module, 12 models, 19 API routes)

**Files to migrate:**

| Source | Target | New Name |
|--------|--------|----------|
| `docs/architecture/tenancy-module-migration.md` (286 lines) | `app/modules/tenancy/docs/migration.md` | Migration plan & entity breakdown |
| `docs/backend/store-rbac.md` (844 lines) | `app/modules/tenancy/docs/rbac.md` | Store RBAC system |
| `docs/guides/user-management.md` (377 lines) | `app/modules/tenancy/docs/user-management.md` | User & team management guide |
| `docs/features/store-onboarding.md` (191 lines) | `app/modules/tenancy/docs/onboarding.md` | Store onboarding wizard |

**New files to create:**

| File | Content |
|------|---------|
| `app/modules/tenancy/docs/data-model.md` | Entity diagram: Platform → Merchant → Store → AdminUser, domains, email verification |

**Expected result:** 6 docs in `app/modules/tenancy/docs/` (index + 5)

---

## Phase 2 — Billing (subscriptions, tiers, Stripe, scheduled tasks)

**Files to migrate:**

| Source | Target | New Name |
|--------|--------|----------|
| `docs/features/subscription-billing.md` (631 lines) | `app/modules/billing/docs/subscription-system.md` | Subscription architecture |
| `docs/guides/subscription-tier-management.md` (135 lines) | `app/modules/billing/docs/tier-management.md` | Tier management guide |
| `docs/implementation/subscription-workflow-plan.md` (454 lines) | `app/modules/billing/docs/subscription-workflow.md` | Subscription lifecycle |
| `docs/implementation/feature-gating-system.md` (434 lines) | `app/modules/billing/docs/feature-gating.md` | Feature provider pattern |
| `docs/deployment/stripe-integration.md` (617 lines) | `app/modules/billing/docs/stripe-integration.md` | Stripe setup & webhooks |

**New files to create:**

| File | Content |
|------|---------|
| `app/modules/billing/docs/data-model.md` | Schema: Subscription, MerchantSubscription, TierFeatureLimit |

**Expected result:** 7 docs in `app/modules/billing/docs/` (index + 6)

---

## Phase 3 — Loyalty (anti-fraud, wallet integration, scoring)

**Files to migrate:**

| Source | Target | New Name |
|--------|--------|----------|
| `docs/features/user-journeys/loyalty.md` (794 lines) | `app/modules/loyalty/docs/user-journeys.md` | User journey flows |
| `docs/proposals/loyalty-program-analysis.md` (387 lines) | `app/modules/loyalty/docs/program-analysis.md` | Business analysis |
| `docs/proposals/loyalty-phase2-interfaces-plan.md` (670 lines) | `app/modules/loyalty/docs/ui-design.md` | Admin/store interface design |

**New files to create:**

| File | Content |
|------|---------|
| `app/modules/loyalty/docs/data-model.md` | Schema: LoyaltyProgram, LoyaltyCard, LoyaltyTransaction, StaffPin, AppleDeviceRegistration |
| `app/modules/loyalty/docs/business-logic.md` | Anti-fraud system, cooldown, daily limits, lockout, wallet sync |

**Expected result:** 6 docs in `app/modules/loyalty/docs/` (index + 5)

---

## Phase 4 — Marketplace (Letzshop sync, import jobs)

**Files to migrate:**

| Source | Target | New Name |
|--------|--------|----------|
| `docs/architecture/marketplace-integration.md` (1345 lines) | `app/modules/marketplace/docs/architecture.md` | Integration architecture |
| `docs/guides/marketplace-integration.md` (808 lines) | `app/modules/marketplace/docs/integration-guide.md` | User guide |
| `docs/guides/letzshop-marketplace-api.md` (322 lines) | `app/modules/marketplace/docs/api.md` | Letzshop API reference |
| `docs/guides/letzshop-order-integration.md` (839 lines) | `app/modules/marketplace/docs/order-integration.md` | Order import/sync |
| `docs/guides/letzshop-admin-management.md` (261 lines) | `app/modules/marketplace/docs/admin-guide.md` | Admin portal guide |
| `docs/implementation/letzshop-order-import-improvements.md` (601 lines) | `app/modules/marketplace/docs/import-improvements.md` | GraphQL & field mapping |
| `docs/implementation/letzshop-jobs-improvements.md` (716 lines) | `app/modules/marketplace/docs/job-queue.md` | Job queue improvements |

**New files to create:**

| File | Content |
|------|---------|
| `app/modules/marketplace/docs/data-model.md` | Schema: Letzshop, MarketplaceProduct, MarketplaceProductTranslation, MarketplaceImportJob |

**Expected result:** 9 docs in `app/modules/marketplace/docs/` (index + 8)

---

## Phase 5 — Orders (lifecycle, fulfillment, invoicing)

**Files to migrate:**

| Source | Target | New Name |
|--------|--------|----------|
| `docs/architecture/customer-orders-architecture.md` (345 lines) | `app/modules/orders/docs/architecture.md` | Customer-orders architecture |
| `docs/implementation/unified-order-view.md` (275 lines) | `app/modules/orders/docs/unified-order-view.md` | Unified order schema |
| `docs/implementation/order-item-exceptions.md` (288 lines) | `app/modules/orders/docs/exceptions.md` | Order item exception system |
| `docs/implementation/oms-feature-plan.md` (662 lines) | `app/modules/orders/docs/oms-features.md` | OMS feature plan |
| `docs/implementation/vat-invoice-feature.md` (734 lines) | `app/modules/orders/docs/vat-invoicing.md` | VAT invoice specification |
| `docs/implementation/stock-management-integration.md` (371 lines) | `app/modules/orders/docs/stock-integration.md` | Order-inventory integration |

**New files to create:**

| File | Content |
|------|---------|
| `app/modules/orders/docs/data-model.md` | Schema: Order, Invoice, OrderItemException |

**Expected result:** 8 docs in `app/modules/orders/docs/` (index + 7)

---

## Phase 6 — Messaging & CMS (email system spans both)

The email system touches both modules. Migration decision:

| Topic | Module | Rationale |
|-------|--------|-----------|
| Email templates (content, rendering) | **cms** | Templates are content, managed via CMS admin |
| Email delivery (providers, sending) | **messaging** | Provider config, SMTP, delivery tracking |
| Email settings (provider config) | **messaging** | Provider selection, credentials, test sending |
| Notifications (admin alerts) | **messaging** | Part of notification center |

### Messaging

**Files to migrate:**

| Source | Target | New Name |
|--------|--------|----------|
| `docs/implementation/messaging-system.md` (243 lines) | `app/modules/messaging/docs/architecture.md` | Messaging architecture |
| `docs/implementation/admin-notification-system.md` (187 lines) | `app/modules/messaging/docs/notifications.md` | Notification system |
| `docs/features/email-system.md` (331 lines) | `app/modules/messaging/docs/email-system.md` | Email delivery system |
| `docs/guides/email-settings.md` (254 lines) | `app/modules/messaging/docs/email-settings.md` | Provider configuration |
| `docs/implementation/email-settings.md` (exists) | `app/modules/messaging/docs/email-settings-impl.md` | Email settings implementation |

**Expected result:** 6 docs in `app/modules/messaging/docs/` (index + 5)

### CMS

**Files to migrate:**

| Source | Target | New Name |
|--------|--------|----------|
| `docs/features/content-management-system.md` (604 lines) | `app/modules/cms/docs/architecture.md` | CMS architecture |
| `docs/features/cms-implementation-guide.md` (414 lines) | `app/modules/cms/docs/implementation.md` | Implementation checklist |
| `docs/implementation/email-templates-architecture.md` (458 lines) | `app/modules/cms/docs/email-templates.md` | Email template system |
| `docs/guides/email-templates.md` (287 lines) | `app/modules/cms/docs/email-templates-guide.md` | Template customisation guide |
| `docs/guides/media-library.md` (182 lines) | `app/modules/cms/docs/media-library.md` | Media library guide |

**New files to create:**

| File | Content |
|------|---------|
| `app/modules/cms/docs/data-model.md` | Schema: ContentPage, Media, StoreTheme |

**Expected result:** 7 docs in `app/modules/cms/docs/` (index + 6)

---

## Phase 7 — Medium modules (catalog, inventory, hosting, prospecting)

### Catalog

| Source | Target |
|--------|--------|
| `docs/architecture/product-architecture.md` (291 lines) | `app/modules/catalog/docs/architecture.md` |
| `docs/guides/product-management.md` (empty) | Delete |
| `docs/guides/csv-import.md` (empty) | Delete |

Create: `app/modules/catalog/docs/data-model.md`

### Inventory

| Source | Target |
|--------|--------|
| `docs/guides/inventory-management.md` (366 lines) | `app/modules/inventory/docs/user-guide.md` |

Create: `app/modules/inventory/docs/data-model.md`

### Hosting

| Source | Target |
|--------|--------|
| `docs/features/user-journeys/hosting.md` (502 lines) | `app/modules/hosting/docs/user-journeys.md` |

### Prospecting

| Source | Target |
|--------|--------|
| `docs/features/user-journeys/prospecting.md` (435 lines) | `app/modules/prospecting/docs/user-journeys.md` |

---

## Phase 8 — Cleanup & verification

1. Remove empty redirect stubs that are older than one release cycle
2. Verify all `mkdocs.yml` nav entries point to valid files
3. Run `mkdocs build --strict` — zero warnings
4. Update `docs/development/module-documentation.md` if conventions evolved
5. Audit: every complex module should have at least `index.md` + `data-model.md`

---

## Summary

| Phase | Module(s) | Files Migrated | Files Created | Total Lines |
|-------|-----------|---------------|---------------|-------------|
| 1 | Tenancy | 4 | 1 | ~1,698 |
| 2 | Billing | 5 | 1 | ~2,271 |
| 3 | Loyalty | 3 | 2 | ~1,851 |
| 4 | Marketplace | 7 | 1 | ~4,892 |
| 5 | Orders | 6 | 1 | ~2,675 |
| 6 | Messaging + CMS | 10 | 1 | ~2,960 |
| 7 | Catalog + Inventory + Hosting + Prospecting | 3 + 2 delete | 2 | ~1,594 |
| 8 | Cleanup | — | — | — |
| **Total** | **10 modules** | **38 migrated** | **9 created** | **~17,941** |

## Execution Notes

- Each phase is independent and can be done in a single session
- Always run `mkdocs build --strict` after each phase
- Update the `mkdocs.yml` Modules nav section to include new docs
- Leave redirect stubs so external links don't break immediately
- Cross-references between modules should use relative paths from `docs/modules/`
