Eko Monorepo Structure

Generated: February 7, 2026 (v15)

Generated file. Update via tooling; do not hand-edit.

eko/
├── .claude/
│   ├── agents/
│   │   ├── README.md
│   │   ├── admin-operator.md
│   │   ├── architect-steward.md
│   │   ├── ci-quality-gatekeeper.md
│   │   ├── cron-scheduler.md
│   │   ├── db-migration-operator.md
│   │   ├── diff-analyst.md
│   │   ├── docs-librarian.md
│   │   ├── observability-analyst.md
│   │   ├── platform-config-owner.md
│   │   ├── queue-sre.md
│   │   ├── release-manager.md
│   │   ├── render-engineer.md
│   │   ├── security-reviewer.md
│   │   ├── subscription-manager.md
│   │   ├── summarization-safety.md
│   │   ├── tracker-engineer.md
│   │   ├── use-case-note-writer.md
│   │   └── ux-page-card-designer.md
│   ├── hooks/
│   │   ├── auto-migrations-index.sh
│   │   ├── block-sensitive.sh
│   │   ├── changelog-check.sh
│   │   ├── plan-backup.sh
│   │   ├── pre-compact.sh
│   │   ├── prompt-guidance.sh
│   │   ├── session-context.sh
│   │   ├── subagent-quality.sh
│   │   └── verify-before-stop.sh
│   ├── plan-history/
│   │   └── .gitkeep
│   ├── rules/
│   │   ├── migrations-index.md
│   │   └── plan-governance.md
│   ├── skills/
│   │   ├── create-migration/SKILL.md
│   │   └── deploy/SKILL.md
│   ├── session-state.md
│   ├── settings.json
│   └── settings.local.json  # gitignored
├── .editorconfig
├── .env.example
├── .gitignore
├── .gitleaks.toml
├── .github/
│   ├── CODEOWNERS
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   └── workflows/
│       └── ci.yml
├── .husky/
│   ├── commit-msg
│   ├── pre-commit
│   └── pre-push
├── AGENTS.md
├── CHANGELOG.md
├── CLAUDE.md
├── CODEOWNERS
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── STACK.md
├── TODO.md
├── biome.json
├── components.json
├── docs-code-mapping.yml
├── package.json
├── tsconfig.base.json
├── turbo.json
├── vitest.workspace.ts
│
├── brand/                    # Centralized brand assets (synced to apps)
│   ├── avatars/
│   │   ├── default-brand.svg
│   │   └── default-page.svg
│   ├── fonts/
│   │   ├── red_hat_text/     # Primary font (variable + static weights)
│   │   └── sometype_mono/    # Monospace font (variable + static weights)
│   ├── icon/
│   │   ├── icon-dark-mode.svg
│   │   └── icon-light-mode.svg
│   ├── logo/
│   │   ├── logo-dark-mode.svg
│   │   ├── logo-dark-mode-vertical.svg
│   │   ├── logo-light-mode.svg
│   │   └── logo-light-mode-vertical.svg
│   └── raster/
│       ├── android-chrome-192.png
│       ├── android-chrome-512.png
│       ├── apple-touch-icon.png
│       ├── favicon-16.png
│       └── favicon-32.png
│
├── apps/
│   ├── admin/
│   │   ├── app/
│   │   │   ├── (dashboard)/
│   │   │   │   ├── audience/
│   │   │   │   │   ├── actions.ts
│   │   │   │   │   ├── audience-select.tsx
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── avatars/
│   │   │   │   │   ├── actions.ts
│   │   │   │   │   ├── avatar-upload-dialog.tsx
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── billing/
│   │   │   │   │   ├── customers/
│   │   │   │   │   │   ├── [id]/
│   │   │   │   │   │   │   ├── actions.ts
│   │   │   │   │   │   │   └── page.tsx
│   │   │   │   │   │   └── page.tsx
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── changes/
│   │   │   │   │   ├── [id]/
│   │   │   │   │   │   ├── actions.ts
│   │   │   │   │   │   └── page.tsx
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── content/
│   │   │   │   │   ├── actions.ts
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── diff-settings/
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── domains/
│   │   │   │   │   ├── actions.ts
│   │   │   │   │   ├── domain-actions.tsx
│   │   │   │   │   ├── pending/page.tsx
│   │   │   │   │   └── rejected/page.tsx
│   │   │   │   ├── feature-flags/
│   │   │   │   │   ├── actions.ts
│   │   │   │   │   ├── create-flag-form.tsx
│   │   │   │   │   ├── page.test.ts
│   │   │   │   │   ├── page.tsx
│   │   │   │   │   └── toggle-flag-button.tsx
│   │   │   │   ├── feeder-sources/
│   │   │   │   │   ├── actions.ts
│   │   │   │   │   ├── create-source-form.tsx
│   │   │   │   │   ├── page.tsx
│   │   │   │   │   └── source-actions.tsx
│   │   │   │   ├── media/
│   │   │   │   │   ├── actions.ts
│   │   │   │   │   ├── media-grid.tsx
│   │   │   │   │   ├── page.tsx
│   │   │   │   │   ├── types.ts
│   │   │   │   │   └── upload-dialog.tsx
│   │   │   │   ├── onboarding/
│   │   │   │   │   ├── actions.ts
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── queue/
│   │   │   │   │   ├── actions.ts
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── urls/
│   │   │   │   │   ├── [id]/
│   │   │   │   │   │   ├── actions.test.ts
│   │   │   │   │   │   ├── actions.ts
│   │   │   │   │   │   └── page.tsx
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── users/
│   │   │   │   │   ├── [id]/
│   │   │   │   │   │   ├── dashboard/page.tsx
│   │   │   │   │   │   ├── notifications/page.tsx
│   │   │   │   │   │   ├── page.tsx
│   │   │   │   │   │   ├── url-actions-dropdown.tsx
│   │   │   │   │   │   └── urls/
│   │   │   │   │   │       ├── actions.ts
│   │   │   │   │   │       └── add/
│   │   │   │   │   │           ├── add-url-form.tsx
│   │   │   │   │   │           └── page.tsx
│   │   │   │   │   ├── page.tsx
│   │   │   │   │   └── users-table.tsx
│   │   │   │   ├── layout.tsx
│   │   │   │   └── page.tsx
│   │   │   ├── actions/
│   │   │   │   ├── auth.test.ts
│   │   │   │   └── auth.ts
│   │   │   ├── api/
│   │   │   │   ├── email/
│   │   │   │   │   ├── test/route.ts
│   │   │   │   │   └── verify/route.ts
│   │   │   │   └── sentry-example-api/route.ts
│   │   │   ├── auth/
│   │   │   │   ├── callback/route.ts
│   │   │   │   └── confirm/route.ts
│   │   │   ├── forgot-password/page.tsx
│   │   │   ├── global-error.tsx
│   │   │   ├── globals.css
│   │   │   ├── layout.tsx
│   │   │   ├── login/page.tsx
│   │   │   ├── manifest.ts
│   │   │   ├── reset-password/page.tsx
│   │   │   ├── sentry-example-page/page.tsx
│   │   │   └── utils.test.ts
│   │   ├── components/
│   │   │   ├── admin-data-table.tsx
│   │   │   ├── admin-shell.tsx
│   │   │   ├── admin-sidebar-header.tsx
│   │   │   ├── admin-sidebar-user.tsx
│   │   │   ├── admin-sidebar.tsx
│   │   │   ├── admin-table/index.ts
│   │   │   ├── bulk-actions-bar.tsx
│   │   │   ├── editable-cell.tsx
│   │   │   ├── email-status-card.tsx
│   │   │   └── index.ts
│   │   ├── lib/
│   │   │   ├── supabase/server.ts
│   │   │   └── utils.ts
│   │   ├── styles/
│   │   │   └── auth-button.css
│   │   ├── instrumentation-client.ts
│   │   ├── instrumentation.ts
│   │   ├── package.json
│   │   ├── postcss.config.mjs
│   │   ├── proxy.ts
│   │   ├── sentry.edge.config.ts
│   │   ├── sentry.server.config.ts
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   │
│   ├── storybook/
│   │   ├── .storybook/
│   │   │   ├── main.ts
│   │   │   ├── manager.ts
│   │   │   └── preview.tsx
│   │   ├── app/
│   │   │   └── globals.css
│   │   ├── stories/
│   │   │   ├── ai/              # AI component stories (15 stories)
│   │   │   ├── blocks/          # Block pattern stories
│   │   │   ├── components/      # Component stories
│   │   │   ├── form/            # Form component stories (12 stories)
│   │   │   ├── foundations/     # Design foundation stories (6 stories)
│   │   │   ├── loading/         # Loading state stories (9 stories)
│   │   │   ├── patterns/        # UI pattern stories (4 stories)
│   │   │   ├── sacred/          # Sacred component stories (13 stories)
│   │   │   ├── tables/          # Table component stories
│   │   │   ├── AlertDialog.stories.tsx
│   │   │   ├── AppHeader.stories.tsx
│   │   │   ├── AppShell.stories.tsx
│   │   │   ├── AppSidebar.stories.tsx
│   │   │   ├── AppSidebarNav.stories.tsx
│   │   │   ├── Avatar.stories.tsx
│   │   │   ├── Badge.stories.tsx
│   │   │   ├── Button.stories.tsx
│   │   │   ├── Card.stories.tsx
│   │   │   ├── Checkbox.stories.tsx
│   │   │   ├── DashboardStats.stories.tsx
│   │   │   ├── Dialog.stories.tsx
│   │   │   ├── DropdownMenu.stories.tsx
│   │   │   ├── Input.stories.tsx
│   │   │   ├── Label.stories.tsx
│   │   │   ├── Popover.stories.tsx
│   │   │   ├── RadioGroup.stories.tsx
│   │   │   ├── Select.stories.tsx
│   │   │   ├── Separator.stories.tsx
│   │   │   ├── Sheet.stories.tsx
│   │   │   ├── Skeleton.stories.tsx
│   │   │   ├── Switch.stories.tsx
│   │   │   ├── Tabs.stories.tsx
│   │   │   ├── Textarea.stories.tsx
│   │   │   └── Tooltip.stories.tsx
│   │   ├── tests/
│   │   │   ├── datepicker-alignment.spec.ts
│   │   │   ├── focus-styling.spec.ts
│   │   │   ├── sidebar-collapse-animation.spec.ts
│   │   │   └── sidebar-diagnostic.spec.ts
│   │   ├── package.json
│   │   ├── playwright.config.ts
│   │   ├── postcss.config.mjs
│   │   └── tsconfig.json
│   │
│   ├── web/
│   │   ├── app/
│   │   │   ├── (authenticated)/
│   │   │   │   ├── account/
│   │   │   │   │   ├── billing/page.tsx
│   │   │   │   │   ├── notifications/
│   │   │   │   │   │   ├── notification-preferences-form.tsx
│   │   │   │   │   │   └── page.tsx
│   │   │   │   │   ├── page.tsx
│   │   │   │   │   ├── profile/
│   │   │   │   │   │   ├── page.tsx
│   │   │   │   │   │   └── profile-form.tsx
│   │   │   │   │   └── settings/
│   │   │   │   │       ├── page.tsx
│   │   │   │   │       └── settings-content.tsx
│   │   │   │   ├── dashboard/
│   │   │   │   │   ├── add/
│   │   │   │   │   │   ├── csv-upload-zone.tsx
│   │   │   │   │   │   ├── page.tsx
│   │   │   │   │   │   └── url-form-instance.tsx
│   │   │   │   │   ├── discover/
│   │   │   │   │   │   ├── brand-types/
│   │   │   │   │   │   │   ├── [id]/page.tsx
│   │   │   │   │   │   │   └── page.tsx
│   │   │   │   │   │   ├── page-types/
│   │   │   │   │   │   │   ├── [id]/page.tsx
│   │   │   │   │   │   │   └── page.tsx
│   │   │   │   │   │   ├── use-cases/
│   │   │   │   │   │   │   ├── [id]/page.tsx
│   │   │   │   │   │   │   └── page.tsx
│   │   │   │   │   │   └── page.tsx
│   │   │   │   │   ├── domains/
│   │   │   │   │   │   └── [id]/page.tsx
│   │   │   │   │   ├── page.tsx
│   │   │   │   │   ├── updates/
│   │   │   │   │   │   └── [updateId]/page.tsx
│   │   │   │   │   └── urls/
│   │   │   │   │       └── [id]/page.tsx
│   │   │   │   ├── domains/
│   │   │   │   │   ├── [id]/page.tsx
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── favorites/
│   │   │   │   │   ├── [folderId]/
│   │   │   │   │   │   ├── page.tsx
│   │   │   │   │   │   └── remove-button.tsx
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── library/
│   │   │   │   │   ├── [folderId]/
│   │   │   │   │   │   ├── delete-folder-dialog.tsx
│   │   │   │   │   │   ├── folder-controls.tsx
│   │   │   │   │   │   ├── folder-pagination.tsx
│   │   │   │   │   │   └── page.tsx
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── notifications/
│   │   │   │   │   ├── notifications-list.tsx
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── saved/
│   │   │   │   │   ├── brand-types/page.tsx
│   │   │   │   │   ├── page-types/page.tsx
│   │   │   │   │   ├── urls/
│   │   │   │   │   │   ├── page.tsx
│   │   │   │   │   │   └── saved-urls-client.tsx
│   │   │   │   │   └── use-cases/page.tsx
│   │   │   │   ├── url/
│   │   │   │   │   └── [id]/
│   │   │   │   │       ├── check-frequency-selector.tsx
│   │   │   │   │       ├── editable-url-details.tsx
│   │   │   │   │       └── page.tsx
│   │   │   │   └── layout.tsx
│   │   │   ├── (legal)/
│   │   │   │   ├── contact/page.tsx
│   │   │   │   ├── layout.tsx
│   │   │   │   ├── privacy/page.tsx
│   │   │   │   └── terms/page.tsx
│   │   │   ├── about/page.tsx
│   │   │   ├── actions/
│   │   │   │   ├── auth.ts
│   │   │   │   ├── favorites.ts
│   │   │   │   ├── folders.ts
│   │   │   │   └── saved-items.ts
│   │   │   ├── api/
│   │   │   │   ├── account/
│   │   │   │   │   ├── notifications/route.ts
│   │   │   │   │   └── profile/route.ts
│   │   │   │   ├── cron/
│   │   │   │   │   ├── account-anniversaries/route.ts
│   │   │   │   │   ├── daily-cost-report/route.ts
│   │   │   │   │   ├── daily-digest/route.ts
│   │   │   │   │   ├── monthly-usage-report/route.ts
│   │   │   │   │   ├── payment-escalation/route.ts
│   │   │   │   │   └── payment-reminders/route.ts
│   │   │   │   ├── discover/
│   │   │   │   │   ├── brand-types/
│   │   │   │   │   │   ├── [id]/brands/route.ts
│   │   │   │   │   │   └── route.ts
│   │   │   │   │   ├── page-types/
│   │   │   │   │   │   ├── [id]/urls/route.ts
│   │   │   │   │   │   └── route.ts
│   │   │   │   │   └── personas/
│   │   │   │   │       ├── [id]/use-cases/route.ts
│   │   │   │   │       └── route.ts
│   │   │   │   ├── docs/search/route.ts
│   │   │   │   ├── domains/
│   │   │   │   │   ├── [id]/route.ts
│   │   │   │   │   └── route.ts
│   │   │   │   ├── email/test/route.ts
│   │   │   │   ├── enqueue-due-urls/route.ts
│   │   │   │   ├── favorites/folders/
│   │   │   │   │   ├── [id]/
│   │   │   │   │   │   ├── route.ts
│   │   │   │   │   │   └── urls/route.ts
│   │   │   │   │   └── route.ts
│   │   │   │   ├── health/route.ts
│   │   │   │   ├── library/folders/
│   │   │   │   │   ├── [id]/
│   │   │   │   │   │   ├── route.ts
│   │   │   │   │   │   └── urls/route.ts
│   │   │   │   │   └── route.ts
│   │   │   │   ├── notifications/
│   │   │   │   │   ├── [id]/read/route.ts
│   │   │   │   │   ├── read-all/route.ts
│   │   │   │   │   └── route.ts
│   │   │   │   ├── saved-items/
│   │   │   │   │   ├── [id]/route.ts
│   │   │   │   │   └── route.ts
│   │   │   │   ├── sentry-example-api/route.ts
│   │   │   │   ├── stripe/
│   │   │   │   │   ├── checkout/route.ts
│   │   │   │   │   ├── portal/route.ts
│   │   │   │   │   └── webhooks/route.ts
│   │   │   │   ├── urls/
│   │   │   │   │   ├── [id]/route.ts
│   │   │   │   │   ├── route.ts
│   │   │   │   │   └── validate/route.ts
│   │   │   │   ├── v1/
│   │   │   │   │   ├── _lib/
│   │   │   │   │   │   ├── auth.ts
│   │   │   │   │   │   ├── pagination.ts
│   │   │   │   │   │   ├── rate-limit.ts
│   │   │   │   │   │   └── response.ts
│   │   │   │   │   ├── brands/
│   │   │   │   │   │   └── [brandId]/
│   │   │   │   │   │       ├── route.ts
│   │   │   │   │   │       └── urls/route.ts
│   │   │   │   │   ├── dashboard/updates/route.ts
│   │   │   │   │   ├── updates/[urlChangeEventId]/route.ts
│   │   │   │   │   └── urls/[urlId]/updates/route.ts
│   │   │   │   └── webhooks/twilio/route.ts
│   │   │   ├── auth/
│   │   │   │   ├── auth-code-error/page.tsx
│   │   │   │   ├── callback/route.ts
│   │   │   │   └── confirm/route.ts
│   │   │   ├── blog/page.tsx
│   │   │   ├── changelog/page.tsx
│   │   │   ├── docs/
│   │   │   │   ├── [category]/
│   │   │   │   │   ├── [article]/page.tsx
│   │   │   │   │   └── page.tsx
│   │   │   │   ├── docs-search-wrapper.tsx
│   │   │   │   ├── layout.tsx
│   │   │   │   └── page.tsx
│   │   │   ├── faq/page.tsx
│   │   │   ├── features/page.tsx
│   │   │   ├── forgot-password/page.tsx
│   │   │   ├── global-error.tsx
│   │   │   ├── globals.css
│   │   │   ├── layout.tsx
│   │   │   ├── login/page.tsx
│   │   │   ├── manifest.ts
│   │   │   ├── not-found.tsx
│   │   │   ├── page.tsx
│   │   │   ├── pricing/page.tsx
│   │   │   ├── reset-password/page.tsx
│   │   │   ├── sentry-example-page/page.tsx
│   │   │   ├── signup/page.tsx
│   │   │   ├── use-cases/page.tsx
│   │   │   └── verify-otp/page.tsx
│   │   ├── components/
│   │   │   ├── audience-tabs.tsx
│   │   │   ├── auth/
│   │   │   │   ├── auth-divider.tsx
│   │   │   │   ├── index.ts
│   │   │   │   └── social-login-buttons.tsx
│   │   │   ├── folder-dialogs.tsx
│   │   │   └── folder-provider.tsx
│   │   ├── lib/
│   │   │   ├── docs.ts
│   │   │   ├── sample-note-generator.ts
│   │   │   └── supabase/
│   │   │       ├── client.ts
│   │   │       └── server.ts
│   │   ├── tests/
│   │   │   ├── button-audit.spec.ts
│   │   │   ├── fixtures/auth.fixture.ts
│   │   │   ├── login.spec.ts
│   │   │   └── site-audit.spec.ts
│   │   ├── instrumentation-client.ts
│   │   ├── instrumentation.ts
│   │   ├── package.json
│   │   ├── playwright.config.ts
│   │   ├── postcss.config.mjs
│   │   ├── proxy.ts
│   │   ├── sentry.edge.config.ts
│   │   ├── sentry.server.config.ts
│   │   ├── tsconfig.json
│   │   ├── vercel.json
│   │   └── vitest.config.ts
│   │
│   ├── worker-sms/
│   │   ├── src/
│   │   │   ├── index.test.ts
│   │   │   ├── index.ts
│   │   │   ├── message-builder.ts
│   │   │   └── twilio-client.ts
│   │   ├── package.json
│   │   └── tsconfig.json
│   │
│   ├── worker-ingest/     # News ingestion worker (removed: worker-tracker, worker-render)
│   ├── worker-facts/      # Fact extraction worker
│   └── worker-validate/   # Fact validation worker
│
├── docs/
│   ├── README.md
│   ├── CONVENTIONS.md
│   ├── glossary.md
│   ├── eko-guide-draft-a.md
│   ├── schema-reference.md
│   ├── ui-component-inventory.md
│   ├── _templates/
│   │   ├── README.md
│   │   ├── INDEX.md
│   │   ├── architecture.md
│   │   ├── dev-guide.md
│   │   ├── feature-report.md
│   │   ├── fix-report.md
│   │   ├── product.md
│   │   ├── proposal.md
│   │   ├── runbook.md
│   │   └── spec.md
│   ├── archive/
│   │   ├── README.md
│   │   ├── eko-mvp-plan-original.md
│   │   └── meaningful-change.md
│   ├── architecture/
│   │   ├── README.md
│   │   ├── brand-library-schema.md
│   │   ├── decisions.md
│   │   ├── monorepo-structure.md
│   │   ├── overview.md
│   │   ├── schema-naming-contracts.md
│   │   └── tools.md
│   ├── assessments/
│   │   ├── README.md
│   │   ├── agents-system-fixes-summary.md
│   │   ├── agents-system-test-report.md
│   │   ├── ai-cost-feasibility-2026-01-08.md
│   │   ├── dependency-audit-2026-01-09.md
│   │   ├── mvp-scorecard-2026-01-09.md
│   │   ├── repo-assessment-2025-12-13-v1.md
│   │   ├── repo-assessment-2025-12-16-v2.md
│   │   ├── repo-assessment-2025-12-18-v3.md
│   │   ├── repo-assessment-2025-12-19-v4.md
│   │   ├── repo-assessment-2025-12-26-v5.md
│   │   ├── repo-assessment-2025-12-27-v6.md
│   │   ├── repo-assessment-2026-01-08-v7.md
│   │   ├── ui-ux-evaluation-report-v1.md
│   │   └── ui-ux-evaluation-report-v3.md
│   ├── challenges/                          # Feature challenge specs
│   │   ├── README.md
│   │   ├── TODO.md
│   │   ├── 01-app-shell-sidebar.md
│   │   ├── 02-my-library.md
│   │   ├── 03-add-url.md
│   │   ├── 04-favorites.md
│   │   ├── 05-save-for-later.md
│   │   ├── 06-page-updates.md
│   │   ├── 07-brands-tracking.md
│   │   ├── 08-discover-page-types.md
│   │   ├── 09-discover-brand-types.md
│   │   ├── 10-discover-use-cases.md
│   │   ├── 11-sms-notifications.md
│   │   ├── 12-onboarding.md
│   │   ├── 13-account-settings.md
│   │   ├── 14-eko-docs.md
│   │   ├── 15-public-pages.md
│   │   ├── 16-screenshot-capture.md
│   │   ├── 17-authentication-system.md
│   │   └── 18-public-pages-design-system.md
│   ├── changelog/
│   │   ├── README.md
│   │   └── MM-YYYY.md          # Monthly changelog files
│   ├── contracts/
│   │   ├── README.md
│   │   └── global-url-library.md
│   ├── design/
│   │   ├── README.md
│   │   ├── TODO.md
│   │   ├── 01-25-2026-tokens-css.md
│   │   ├── authority-resolution-order.md
│   │   ├── build-phase.md
│   │   ├── build-sequence-playbook.md
│   │   ├── design-system-manifesto.md
│   │   ├── eko-design-system-report-v1.md
│   │   ├── generated-prompts/README.md
│   │   ├── generator-prompt.md
│   │   ├── llm-system-prompt-admin.md
│   │   ├── llm-system-prompt-refactor.md
│   │   ├── llm-system-prompt-ui.md
│   │   ├── opening-prompt.md
│   │   ├── ui-enterprise/               # UI Enterprise design system (8 waves)
│   │   │   ├── README.md
│   │   │   ├── eko-ui-component-catalog.md
│   │   │   ├── PAGE-BUILDOUT-GUIDE.md
│   │   │   ├── TODO-UI.md
│   │   │   ├── WAVE-2-5-STATUS.md
│   │   │   ├── wave-0-ia/              # Information architecture (4 specs)
│   │   │   ├── wave-0-public-pages/    # Public page specs (9 phases)
│   │   │   ├── wave-1-foundation/      # Foundation tokens (16 specs)
│   │   │   ├── wave-2-forms/           # Form components (12 specs)
│   │   │   ├── wave-3-loading/         # Loading states (12 specs)
│   │   │   ├── wave-4-tables/          # Table components (12 specs)
│   │   │   ├── wave-5-integration/     # App integration (14 specs)
│   │   │   ├── wave-6-data/            # Data layer (14 specs)
│   │   │   ├── wave-7-media/           # Media components (1 spec)
│   │   │   └── wave-8-polish/          # Polish & motion (6 specs)
│   │   └── visual-authority-contract.md
│   ├── dev/
│   │   ├── README.md
│   │   ├── SETUP_ACCOUNT.md
│   │   ├── agent-versioning.md
│   │   ├── brand-library-master-plan.md
│   │   ├── database.md
│   │   ├── deployments.md
│   │   ├── drizzle.md
│   │   ├── local-development.md
│   │   ├── migration-coexistence.md
│   │   ├── observability.md
│   │   └── testing.md
│   ├── marketing/
│   │   └── features-document.md
│   ├── mvp-readiness/
│   │   ├── README.md
│   │   ├── deployment-manifest.md
│   │   └── service-inventory.md
│   ├── plans/
│   │   ├── README.md
│   │   ├── cost-optimization-proposal.md
│   │   ├── eko-mvp-plan.md
│   │   ├── gpt-to-claude-prompt-eko-mvp-plan.md
│   │   ├── llm-url-tracking-cost-comparison.md
│   │   ├── playwright-video-integration.md
│   │   └── public-site-rollout-requirements.md
│   ├── policies/
│   │   ├── README.md
│   │   ├── ai-safety.md
│   │   └── fair-use.md
│   ├── product/
│   │   ├── README.md
│   │   ├── FEATURES.md
│   │   ├── PRD.md
│   │   ├── page-summary-examples.md
│   │   ├── page-type-definitions.md
│   │   ├── tracking-suggestions/
│   │   │   ├── README.md
│   │   │   └── url-tracking-note-examples.md
│   │   ├── ui-element-registry.md
│   │   ├── use-case-index.md
│   │   ├── use-cases-hybrid.md
│   │   ├── use-cases-personal.md
│   │   ├── use-cases-work.md
│   │   ├── use-cases.md
│   │   ├── user-guide.md
│   │   └── v1-execution-contract.md
│   ├── projects/
│   │   ├── README.md
│   │   └── building-eko-pages/          # Page build specs (~90 pages)
│   │       ├── README.md
│   │       ├── INDEX.md
│   │       ├── proposed-eko-page-screen-list.md
│   │       ├── admin/                   # Admin page specs
│   │       ├── app/                     # App page specs
│   │       ├── auth/                    # Auth page specs
│   │       ├── onboarding/              # Onboarding page specs
│   │       ├── public/                  # Public page specs
│   │       └── test-docs/               # Test documentation
│   ├── proposals/
│   │   ├── README.md
│   │   ├── inline-diffs-proposal.md
│   │   ├── url-tracking-scale-proposal.md
│   │   ├── video-production-decisions.md
│   │   └── video-production-proposal.md
│   ├── reports/
│   │   ├── README.md
│   │   ├── sms-notification-system-completion.md
│   │   ├── analysis/                    # System analysis reports
│   │   ├── doc-health/                  # Documentation health reports
│   │   ├── features/                    # Feature completion reports (~40 reports)
│   │   └── fixes/                       # Bug fix reports
│   ├── rules/
│   │   ├── README.md
│   │   ├── changelog.md
│   │   ├── dependencies.md
│   │   ├── eko-gtd.md
│   │   ├── error-handling.md
│   │   ├── security.md
│   │   ├── styling.md
│   │   └── testing.md
│   ├── runbooks/
│   │   ├── README.md
│   │   ├── codebase-review-plan.md
│   │   ├── incident-playbook.md
│   │   ├── mvp-checklist.md
│   │   ├── mvp-master-runbook.md
│   │   ├── mvp-readiness.md
│   │   ├── pre-mvp-validation-1-system.md
│   │   ├── pre-mvp-validation-2-cost-stress.md
│   │   ├── pre-mvp-validation-3-early-users.md
│   │   ├── queue.md
│   │   ├── render.md
│   │   ├── scheduling.md
│   │   ├── summarization.md
│   │   ├── team-infrastructure.md
│   │   ├── team-pipeline.md
│   │   ├── team-schema.md
│   │   └── tracker.md
│   ├── specs/
│   │   ├── README.md
│   │   ├── TODO.md
│   │   ├── confidence-scoring.md
│   │   ├── meaningful-change.md
│   │   ├── mvp-constraints.md
│   │   ├── naming-contracts.md
│   │   ├── phase-a-core-app-functionality.md
│   │   ├── phase-b-admin-control-plane.md
│   │   ├── phase-c-notifications.md
│   │   ├── phase-d-public-pages-auth.md
│   │   ├── phase-e-design-system-rollout.md
│   │   ├── phase-f-stripe-billing.md
│   │   ├── phase-g-brand-library-seeding.md
│   │   ├── phase-h-app-shell-navigation.md
│   │   ├── phase-i-organization.md
│   │   ├── phase-j-discover-features.md
│   │   ├── phase-k-onboarding.md
│   │   ├── phase-l-public-site.md
│   │   ├── render-escalation.md
│   │   ├── service-levels.md
│   │   ├── summarization-safety.md
│   │   ├── url-normalization.md
│   │   ├── user-facing-controls.md
│   │   └── v1-business-rules.md
│   └── templates/
│       └── eko-gtd/                     # GTD methodology templates
│           ├── README.md
│           ├── challenge-full.md
│           ├── challenge-mini.md
│           ├── challenge-quick.md
│           ├── gtm-eko-gtd.md
│           ├── todo.md
│           └── understanding-eko-gtd.md
│
├── infra/
│   ├── Dockerfile.worker
│   └── fly.toml.example
│
├── packages/
│   ├── ai/
│   │   ├── src/
│   │   │   ├── classify-audience.ts
│   │   │   ├── classify-page-complexity.ts
│   │   │   ├── correlate-changes.ts
│   │   │   ├── cost-tracker.ts
│   │   │   ├── deep-analysis.ts
│   │   │   ├── index.test.ts
│   │   │   ├── index.ts
│   │   │   ├── mcp-client.ts
│   │   │   └── model-router.ts
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   │
│   ├── config/
│   │   ├── src/
│   │   │   ├── env-guard.test.ts
│   │   │   └── index.ts
│   │   ├── test/
│   │   │   └── fixtures/
│   │   │       ├── import-only.ts
│   │   │       ├── missing-load.ts
│   │   │       ├── sentry-disabled-with-dsn.ts
│   │   │       ├── sentry-enabled-no-dsn.ts
│   │   │       └── with-load.ts
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   │
│   ├── db/
│   │   ├── src/
│   │   │   ├── __tests__/
│   │   │   │   └── security/
│   │   │   │       ├── api-route-isolation.test.ts
│   │   │   │       ├── tenant-isolation.test.ts
│   │   │   │       └── test-helpers.ts
│   │   │   ├── drizzle/
│   │   │   │   ├── client.ts
│   │   │   │   ├── feature-flags.ts
│   │   │   │   ├── queries.ts
│   │   │   │   └── schema.ts
│   │   │   ├── cache.test.ts
│   │   │   ├── cache.ts
│   │   │   ├── client.ts
│   │   │   ├── generated-types.ts
│   │   │   ├── index.ts
│   │   │   ├── queries.digest.test.ts
│   │   │   ├── queries.feeder-sources.ts
│   │   │   ├── queries.ts
│   │   │   └── supabase.types.ts
│   │   ├── drizzle.config.ts
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   │
│   ├── email/
│   │   ├── src/
│   │   │   ├── templates/
│   │   │   │   ├── alerts/
│   │   │   │   │   ├── daily-cost-report.ts
│   │   │   │   │   └── provider-fallback-alert.ts
│   │   │   │   ├── billing/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── payment-failed-escalation.ts
│   │   │   │   │   ├── payment-failed.ts
│   │   │   │   │   ├── payment-received.ts
│   │   │   │   │   ├── payment-reminder.ts
│   │   │   │   │   ├── plan-info.ts
│   │   │   │   │   ├── subscription-change.ts
│   │   │   │   │   └── url-limit-warning.ts
│   │   │   │   ├── milestone/
│   │   │   │   │   ├── achievement.ts
│   │   │   │   │   └── index.ts
│   │   │   │   ├── usage/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── monthly-report.ts
│   │   │   │   ├── change-notification.ts
│   │   │   │   └── daily-digest.ts
│   │   │   ├── client.ts
│   │   │   ├── domains.ts
│   │   │   ├── index.test.ts
│   │   │   ├── index.ts
│   │   │   └── send.ts
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   │
│   ├── observability/
│   │   ├── src/
│   │   │   ├── index.test.ts
│   │   │   └── index.ts
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   │
│   ├── queue/
│   │   ├── src/
│   │   │   ├── index.test.ts
│   │   │   └── index.ts
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   │
│   ├── shared/
│   │   ├── src/
│   │   │   ├── __tests__/
│   │   │   │   ├── agents-selector.test.ts
│   │   │   │   ├── brand-types.test.ts
│   │   │   │   ├── entitlements.test.ts
│   │   │   │   ├── get-registrable-domain.test.ts
│   │   │   │   ├── smoke.test.ts
│   │   │   │   ├── url-normalization.test.ts
│   │   │   │   ├── url-verification.test.ts
│   │   │   │   └── utils-extended.test.ts
│   │   │   ├── agents/
│   │   │   │   ├── index.ts
│   │   │   │   ├── interfaces.ts
│   │   │   │   ├── parser.ts
│   │   │   │   ├── selector.ts
│   │   │   │   └── types.ts
│   │   │   ├── ui-registry/
│   │   │   │   └── ui-element-registry.json
│   │   │   ├── entitlements.ts
│   │   │   ├── index.ts
│   │   │   ├── schemas.ts
│   │   │   ├── types.ts
│   │   │   ├── url-normalization.ts
│   │   │   ├── url-verification.ts
│   │   │   └── utils.ts
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   │
│   ├── stripe/
│   │   ├── src/
│   │   │   ├── handlers/
│   │   │   │   ├── billing-notifications.ts
│   │   │   │   ├── checkout-completed.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── invoice-failed.ts
│   │   │   │   ├── invoice-paid.ts
│   │   │   │   ├── subscription-created.ts
│   │   │   │   ├── subscription-deleted.ts
│   │   │   │   ├── subscription-updated.ts
│   │   │   │   └── utils.ts
│   │   │   ├── admin.ts
│   │   │   ├── checkout.ts
│   │   │   ├── client.ts
│   │   │   ├── customer.ts
│   │   │   ├── index.test.ts
│   │   │   ├── index.ts
│   │   │   ├── portal.ts
│   │   │   └── webhooks.ts
│   │   ├── package.json
│   │   ├── tsconfig.json
│   │   └── vitest.config.ts
│   │
│   └── ui/
│       ├── src/
│       │   ├── __tests__/
│       │   │   └── setup.ts
│       │   ├── components/
│       │   │   ├── ai-elements/         # AI UI components (30+ components)
│       │   │   ├── billing/             # Billing UI components
│       │   │   ├── blocks/              # Block patterns
│       │   │   ├── data-table/          # Data table components
│       │   │   ├── docs/                # Documentation components
│       │   │   ├── form/                # Form components (10 components)
│       │   │   ├── layout/              # App layout components (20+ components)
│       │   │   ├── onboarding/          # Onboarding flow components
│       │   │   ├── pricing-efferd/      # Pricing components
│       │   │   ├── public/              # Public site components
│       │   │   │   ├── animation/       # Animation utilities
│       │   │   │   ├── layout/          # Public page layout
│       │   │   │   ├── navigation/      # Navigation components
│       │   │   │   ├── pages/           # Full page components
│       │   │   │   ├── sections/        # Page section components
│       │   │   │   └── visuals/         # Visual/decorative components
│       │   │   ├── sacred/              # Sacred UI components (20+ components)
│       │   │   ├── settings/            # Settings components
│       │   │   ├── sidebar-01/          # Sidebar variant
│       │   │   ├── sms/                 # SMS notification components
│       │   │   ├── video/               # Video components
│       │   │   ├── index.ts
│       │   │   └── ...                  # 200+ individual component files
│       │   ├── hooks/
│       │   │   ├── index.ts
│       │   │   └── use-mobile.ts
│       │   ├── lib/
│       │   │   ├── utils.test.ts
│       │   │   └── utils.ts
│       │   ├── styles/
│       │   │   ├── contrast-audit.test.ts
│       │   │   ├── icon-system.test.ts
│       │   │   ├── motion-audit.test.ts
│       │   │   ├── public-pages.test.ts
│       │   │   └── spacing.test.ts
│       │   ├── globals.css
│       │   └── index.ts
│       ├── styles/
│       │   ├── accessibility.css
│       │   ├── components.css
│       │   ├── focus.css
│       │   ├── icons.css
│       │   ├── motion.css
│       │   ├── spacing.css
│       │   ├── theme.css
│       │   └── tokens.css
│       ├── components.json
│       ├── package.json
│       ├── tsconfig.json
│       └── vitest.config.ts
│
├── supabase/
│   ├── config.toml
│   ├── migrations/
│   │   ├── 0001_init.sql
│   │   ├── 0002_renders.sql
│   │   ├── 0003_storage_renders_bucket.sql
│   │   ├── 0004_user_note_and_checked_day.sql
│   │   ├── 0005_brand_library_v1.sql
│   │   ├── 0006_v1_contracts.sql
│   │   ├── 0007_global-url-library-vnext.sql
│   │   ├── 0008_notification_dedupe_key.sql
│   │   ├── 0009_brand_sites_v1.sql
│   │   ├── 0010_brand_sites_not_null.sql
│   │   ├── 0011_seed_tracking.sql
│   │   ├── 0012_note_integration.sql
│   │   ├── 0013_page_type.sql
│   │   ├── 0014_page_type_extension.sql
│   │   ├── 0015_security_fixes.sql
│   │   ├── 0016_history_gating_optimization.sql
│   │   ├── 0017_performance_indexes.sql
│   │   ├── 0018_inline_diffs.sql
│   │   ├── 0019_urls_page_description.sql
│   │   ├── 0020_billing_extensions.sql
│   │   ├── 0021_url_types_extension.sql
│   │   ├── 0022_brand_library_seed_tracking.sql
│   │   ├── 0023_brand_url_type_extension.sql
│   │   ├── 0024_admin_view_security_invoker.sql
│   │   ├── 0025_function_search_path_fixes.sql
│   │   ├── 0026_rls_policy_role_restrictions.sql
│   │   ├── 0027_feeder_sources.sql
│   │   ├── 0028_user_folders.sql
│   │   ├── 0029_url_read_states.sql
│   │   ├── 0030_favorite_folders.sql
│   │   ├── 0031_saved_items.sql
│   │   ├── 0032_screenshot_captures.sql
│   │   ├── 0033_page_title_history.sql
│   │   ├── 0034_url_stats_view.sql
│   │   ├── 0035_page_type_metadata.sql
│   │   ├── 0036_brand_type_metadata.sql
│   │   ├── 0037_personas_and_use_cases.sql
│   │   ├── 0038_sms_notifications.sql
│   │   ├── 0039_page_type_metadata_extension.sql
│   │   ├── 0040_use_cases_comprehensive_seed.sql
│   │   ├── 0041_screen_avatars.sql
│   │   ├── 0042_system_notifications.sql
│   │   ├── 0043_summary_admin_override.sql
│   │   ├── 0044_add_use_case_audience.sql
│   │   ├── 0045_rename_brand_seeded_to_system_seeded.sql
│   │   ├── 0046_update_brand_seeded_rows.sql
│   │   ├── 0047_fix_single_product_enum.sql
│   │   ├── 0048_migrate_single_product_data.sql
│   │   ├── 0049_add_single_product_page_type.sql
│   │   ├── 0050_rename_brand_tables.sql
│   │   ├── 0051_consolidate_folders.sql
│   │   ├── 0052_consolidate_metadata.sql
│   │   ├── 0053_consolidate_notification_delivery.sql
│   │   ├── 0054_screenshot_captures_render_fields.sql
│   │   ├── 0055_notification_vnext_fk.sql
│   │   ├── 0056_screenshot_captures_vnext_fks.sql
│   │   ├── 0057_brand_categories.sql
│   │   ├── 0058_v1_table_backups.sql
│   │   ├── 0059_v1_cleanup_fks_and_columns.sql
│   │   ├── 0060_v1_drop_tables.sql
│   │   ├── 0061_rename_brand_sites_to_domains.sql
│   │   ├── 0062_add_domain_verification.sql
│   │   ├── 0063_link_domains_to_brands.sql
│   │   ├── 0064_rename_folder_urls.sql
│   │   ├── 0065_rename_brand_urls.sql
│   │   ├── 0066_add_audience_to_urls.sql
│   │   ├── 0067_update_domains_source_constraint.sql
│   │   ├── 0068_fix_urls_brand_id_fk.sql
│   │   ├── 0069_normalize_url_canonical_domains.sql
│   │   ├── 0070_vnext_folder_urls.sql
│   │   ├── 0071_add_next_steps_to_url_change_summaries.sql
│   │   ├── 0072_add_vnext_columns_orphaned_tables.sql
│   │   ├── 0073_backfill_vnext_columns.sql
│   │   ├── 0074_saved_items_integrity.sql
│   │   ├── 0075_section_dom_mappings_unique.sql
│   │   ├── 0076_rename_url_to_page_core.sql
│   │   ├── 0077_rename_url_to_page_dependent.sql
│   │   ├── 0078_rename_url_to_page_cleanup.sql
│   │   ├── 0079_ai_cost_tracking.sql
│   │   ├── 0080_page_complexity_cache.sql
│   │   ├── 0081_correlation_groups.sql
│   │   ├── 0082_deep_analysis.sql
│   │   └── 0087_index_page_change_events_fks.sql
│   ├── migrations-index.md
│   └── seed.sql
│
└── scripts/
    ├── lib/                              # Shared script utilities
    │   ├── batch-db.ts
    │   ├── brandfetch-client.ts
    │   ├── concurrency.ts
    │   ├── discovery-orchestrator.ts
    │   ├── feeder-sources.ts
    │   ├── pdl-category-mapper.ts
    │   ├── pdl-client.ts
    │   ├── personas.ts
    │   ├── platform-detection.ts
    │   ├── platform-patterns.ts
    │   ├── robots-parser.ts
    │   ├── sitemap-parser.ts
    │   ├── test-user-config.ts
    │   ├── test-user-seeder.ts
    │   └── url-patterns.ts
    ├── data/
    │   └── domain-seeding-table.tsv
    ├── fixtures/
    │   └── test-user-urls.json
    ├── add-urls-from-brands.ts
    ├── agents-ownership-fix.ts
    ├── agents-raci-matrix.ts
    ├── agents-routing-check.ts
    ├── assign-brand-categories.ts
    ├── audit-data-alignment.ts
    ├── audit-seeded-urls.ts
    ├── backfill-audience.ts
    ├── backfill-brand-sites.ts
    ├── backfill-page-types.ts
    ├── backfill-summaries.ts
    ├── brand-sync.ts
    ├── changelog-check.ts
    ├── check-due-urls.ts
    ├── check-env-example.ts
    ├── check-env-local.ts
    ├── check-env-typos.ts
    ├── check-error-handling.ts
    ├── check-invariants.ts
    ├── check-ui-registry.ts
    ├── check-v1-queues.ts
    ├── cleanup-v1-queues.ts
    ├── diagnose-pipeline.ts
    ├── discover-domains-pdl.ts
    ├── docs-binding-check.ts
    ├── docs-health.ts
    ├── docs-links.ts
    ├── docs-lint.sh
    ├── docs-new.ts
    ├── docs-staleness-summary.ts
    ├── docs-staleness.ts
    ├── enrich-brand-logos.ts
    ├── enrich-domains-pdl.ts
    ├── enrich-urls-from-seeding-urls.ts
    ├── export-ui-registry.ts
    ├── extract-domains-for-validation.ts
    ├── fix-orphan-domains.ts
    ├── frontmatter-fix.ts
    ├── generate-agent-sequence.ts
    ├── generate-changelog.ts
    ├── generate-db-types.ts
    ├── generate-migrations-index.ts
    ├── generate-script-index.ts
    ├── generate-tracking-note.ts
    ├── generate-ui-registry.ts
    ├── generate-url-patterns.ts
    ├── generate-use-cases.ts
    ├── migrate-brand-categories.ts
    ├── phase1-verify.ts
    ├── populate-domains-from-urls.ts
    ├── purge-old-content.ts
    ├── queue-cleanup.ts
    ├── queue-recovery.ts
    ├── rules-index.ts
    ├── seed-brand-categories.ts
    ├── seed-brand-library-pdl.ts
    ├── seed-brand-urls.ts
    ├── seed-brands-from-feeders.ts
    ├── seed-brands-from-table.ts
    ├── seed-phase1-test-urls.ts
    ├── seed-test-users.ts
    ├── seed-urls-from-markdown.ts
    ├── seed-urls-vnext.ts
    ├── seed-use-cases-migration.ts
    ├── select-agent.ts
    ├── setup.sh
    ├── soak-run-once.ts
    ├── soak-status.ts
    ├── test-email.ts
    ├── validate-domains.ts
    └── vnext-parity-debug.ts

File Count Summary

DirectoryFiles
Root configs18
.claude36
.github4
.husky20
brand39
apps/admin91
apps/storybook101
apps/web159
apps/worker-ingest
apps/worker-facts
apps/worker-validate
apps/worker-sms6
docs453
infra2
packages/ai12
packages/config11
packages/db20
packages/email24
packages/observability5
packages/queue5
packages/shared24
packages/stripe20
packages/ui379
scripts88
supabase85
Total~1630

Changes from v14

New Applications

  • Added apps/worker-sms/ — SMS notification delivery service using Twilio API
    • src/index.ts, src/message-builder.ts, src/twilio-client.ts

New Packages

  • Added packages/email/ — Email service client with template system
    • Templates: alerts, billing, milestone, usage, change notifications, daily digest
  • Added packages/stripe/ — Stripe payment integration
    • Handlers: checkout, invoices, subscriptions, billing notifications
    • Client: checkout sessions, customer portal, webhooks

Major App Expansions

apps/admin (21 → 91 files):

  • Added (dashboard) route group with 15+ admin sections
  • Added components/ directory with admin-specific components
  • Added auth flow: forgot-password, reset-password, auth callbacks
  • Added Sentry integration and instrumentation

apps/web (42 → 159 files):

  • Added (authenticated) route group replacing flat page structure
  • Added account management: billing, notifications, profile, settings
  • Added discover section: brand-types, page-types, use-cases
  • Added favorites, library, saved items, and notifications pages
  • Added public pages: about, blog, changelog, docs, FAQ, features, pricing, use-cases
  • Added legal pages: contact, privacy, terms
  • Added cron API routes: daily-digest, cost-report, payment reminders
  • Added Stripe integration: checkout, portal, webhooks
  • Added Twilio webhook handler
  • Added auth components: social login, dividers
  • Added Playwright tests and Sentry integration

apps/storybook (25 → 101 files):

  • Added organized story directories: ai/, blocks/, form/, foundations/, loading/, patterns/, sacred/, tables/
  • Added Playwright integration tests
  • Added 70+ new story files

apps/worker-ingest, apps/worker-facts, apps/worker-validate (new v2 fact engine workers):

  • Replaced legacy worker-render and worker-tracker apps

Package Expansions

packages/ai (5 → 12 files):

  • Added audience classification, page complexity classification
  • Added change correlation, cost tracking, deep analysis
  • Added MCP client, model router

packages/db (5 → 20 files):

  • Added Drizzle ORM integration: client, feature-flags, queries, schema
  • Added query caching layer
  • Added feeder source queries, digest tests
  • Added security tests: API route isolation, tenant isolation
  • Added auto-generated type files

packages/shared (13 → 24 files):

  • Added agents subsystem: selector, parser, interfaces, types
  • Added URL normalization utilities
  • Added 8 test files covering agents, brand types, entitlements, URL normalization

packages/ui (27 → 379 files):

  • Added 200+ component files organized into subsystems:
    • ai-elements/ — 30+ AI interaction components
    • billing/ — Billing and plan components
    • docs/ — Documentation page components
    • form/ — Enhanced form components (10 components)
    • layout/ — App shell, sidebar, navigation (20+ components)
    • onboarding/ — Onboarding modal and steps
    • pricing-efferd/ — Pricing section components
    • public/ — Public site components: animation, navigation, pages, sections, visuals
    • sacred/ — Sacred UI components (20+ domain-specific components)
    • settings/ — App settings components
    • sms/ — SMS notification components
    • video/ — Video playback components
  • Added 8 CSS style files: accessibility, components, focus, icons, motion, spacing, theme, tokens
  • Added hooks directory with mobile detection
  • Added style audit tests

Docs Expansion (80 → 453 files)

New directories:

  • docs/archive/ — Archived plans and specs
  • docs/challenges/ — 18 feature challenge specifications
  • docs/changelog/ — Monthly changelog files (MM-YYYY.md format)
  • docs/design/ui-enterprise/ — 8-wave UI design system with 100+ specs
  • docs/marketing/ — Marketing feature documentation
  • docs/plans/ — Project plans and proposals
  • docs/projects/building-eko-pages/ — ~90 page build specifications
  • docs/proposals/ — Feature proposals
  • docs/reports/ — Feature reports, analysis, fix reports (~50 reports)
  • docs/rules/ — Development rules (changelog, dependencies, GTD, error handling, security, styling, testing)
  • docs/templates/eko-gtd/ — GTD methodology templates

Expanded directories:

  • docs/assessments/ — Added 7 new assessment reports
  • docs/product/ — Added use case indexes, page type definitions, feature docs
  • docs/specs/ — Added 12 phase specifications and confidence scoring
  • docs/runbooks/ — Added team infrastructure, pipeline, schema runbooks

Database Migrations (10 → 84 files)

New migration phases since v14:

  • 0011-0026: Features & Security — Seed tracking, page types, billing, security fixes, RLS policies
  • 0027-0043: User Features — Folders, favorites, saved items, screenshots, SMS, personas, use cases
  • 0044-0056: vNext Migration — Table renames, data consolidation, FK migrations
  • 0057-0060: V1 Cleanup — Brand categories, table backups, FK cleanup, legacy table drops
  • 0061-0087: Current Development — Domain management, URL-to-page rename, AI cost tracking, deep analysis, performance indexes

Scripts (16 → 88 files)

  • Added scripts/lib/ directory with 15 shared utility modules (batch-db, PDL client, concurrency, etc.)
  • Added scripts/data/ and scripts/fixtures/ for test data
  • Added 55+ new scripts for seeding, backfilling, diagnostics, validation, and enrichment

.claude Infrastructure Expansion

  • Added hooks/ directory with 9 automation hooks (migrations index, sensitive data blocking, changelog checks, etc.)
  • Added rules/ directory with plan governance and migrations index rules
  • Added skills/ directory with create-migration and deploy skills
  • Added session-state.md for session tracking
  • Added docs-librarian.md agent (18 → 19 agents)

.github Additions

  • Added CODEOWNERS for code ownership
  • Added PULL_REQUEST_TEMPLATE.md for PR standardization
  • Added dependabot.yml for dependency updates

Brand Assets

  • Added avatars/ directory with default-brand.svg and default-page.svg
  • Added vertical logo variants (logo-dark-mode-vertical.svg, logo-light-mode-vertical.svg)
  • Corrected naming: icon-dark.svg → icon-dark-mode.svg, icon-light.svg → icon-light-mode.svg

Root Files

  • Added AGENTS.md — Agent system overview
  • Added TODO.md — Project TODO tracking

Package Dependencies

@eko/web
├── @eko/config
├── @eko/db
├── @eko/email
├── @eko/queue
├── @eko/shared
├── @eko/stripe
├── @eko/observability
└── @eko/ui

@eko/admin
├── @eko/config
├── @eko/db
├── @eko/email
├── @eko/shared
├── @eko/stripe
└── @eko/ui

@eko/storybook
└── @eko/ui

@eko/worker-ingest
├── @eko/config
├── @eko/db
├── @eko/queue
├── @eko/shared
└── @eko/observability

@eko/worker-facts
├── @eko/config
├── @eko/db
├── @eko/queue
├── @eko/shared
├── @eko/ai
└── @eko/observability

@eko/worker-validate
├── @eko/config
├── @eko/db
├── @eko/queue
├── @eko/shared
├── @eko/ai
└── @eko/observability

@eko/worker-sms
├── @eko/config
├── @eko/db
├── @eko/shared
└── @eko/observability

@eko/db
├── @eko/config
└── @eko/shared

@eko/queue
├── @eko/config
└── @eko/shared

@eko/ai
├── @eko/config
└── @eko/shared

@eko/email
├── @eko/config
└── @eko/shared

@eko/stripe
├── @eko/config
└── @eko/shared

@eko/observability
└── @eko/config

@eko/config
└── (standalone)

@eko/shared
└── (standalone)

@eko/ui
└── (standalone)