create-ailk 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -3
- package/component-catalog.json +279 -45
- package/dist/add-module.d.ts +20 -0
- package/dist/add-module.js +43 -7
- package/dist/add-route.d.ts +56 -0
- package/dist/add-route.js +286 -0
- package/dist/apply-design-md.d.ts +7 -0
- package/dist/apply-design-md.js +50 -0
- package/dist/apply-design.d.ts +64 -0
- package/dist/apply-design.js +273 -0
- package/dist/claude-md.d.ts +111 -0
- package/dist/claude-md.js +334 -0
- package/dist/cli.js +104 -5
- package/dist/derive-architecture.js +41 -36
- package/dist/design-compile.d.ts +71 -0
- package/dist/design-compile.js +98 -0
- package/dist/design-package.d.ts +83 -0
- package/dist/design-package.js +468 -0
- package/dist/design-presets.d.ts +86 -0
- package/dist/design-presets.js +642 -0
- package/dist/design-scaffold.d.ts +76 -0
- package/dist/design-scaffold.js +220 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +4 -1
- package/dist/legacy-nav-renderers.d.ts +45 -0
- package/dist/legacy-nav-renderers.js +545 -0
- package/dist/lib/auth-secret-file.d.ts +19 -0
- package/dist/lib/auth-secret-file.js +112 -0
- package/dist/lib/design-checks.d.ts +78 -0
- package/dist/lib/design-checks.js +174 -0
- package/dist/lib/license-key-files.d.ts +9 -0
- package/dist/lib/license-key-files.js +2 -2
- package/dist/lib/module-license-gate.d.ts +48 -32
- package/dist/lib/module-license-gate.js +117 -8
- package/dist/lib/render-verdict.d.ts +52 -0
- package/dist/lib/render-verdict.js +77 -0
- package/dist/lib/scaffold-render-sweep.d.ts +105 -0
- package/dist/lib/scaffold-render-sweep.js +236 -0
- package/dist/module-architecture.d.ts +19 -16
- package/dist/module-architecture.js +67 -23
- package/dist/parse-args.d.ts +12 -2
- package/dist/parse-args.js +74 -13
- package/dist/programmatic.d.ts +30 -6
- package/dist/programmatic.js +216 -19
- package/dist/site-chrome.d.ts +19 -9
- package/dist/site-chrome.js +23 -13
- package/dist/site-manifest.d.ts +25 -0
- package/dist/site-manifest.js +254 -0
- package/dist/site-roster.d.ts +41 -0
- package/dist/site-roster.js +141 -8
- package/dist/starter-grid.d.ts +16 -63
- package/dist/starter-grid.js +102 -84
- package/dist/surfaces.d.ts +41 -9
- package/dist/surfaces.js +200 -83
- package/dist/template-manifest.d.ts +30 -13
- package/dist/template-manifest.js +53 -28
- package/package.json +6 -3
- package/release-scope.json +25 -0
- package/site-templates/_base/content/en/UseCase/persona-1.mdx +7 -6
- package/site-templates/_base/content/en/UseCase/persona-2.mdx +7 -6
- package/site-templates/_base/content/en/UseCase/persona-3.mdx +7 -6
- package/site-templates/designs/minimalism/DESIGN.md +98 -6
- package/site-templates/designs/minimalism/sample/README.md +48 -0
- package/site-templates/{minimalism-site → designs/minimalism/sample}/content/en/HomePage/home.mdx +1 -1
- package/site-templates/designs/standard/DESIGN.md +98 -6
- package/site-templates/marketing-site/DESIGN.md +98 -6
- package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +60 -27
- package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +50 -30
- package/site-templates/marketing-site-free/DESIGN.md +98 -6
- package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +60 -24
- package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +44 -27
- package/site-templates/marketing-site-free/ailk-template.json +1 -1
- package/site-templates/saas-product/DESIGN.md +98 -6
- package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.json +127 -18
- package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.md +74 -20
- package/site-templates/shapes/local-business-service/ailk-template.json +1 -1
- package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.json +127 -18
- package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.md +74 -20
- package/site-templates/shapes/organization-service/ailk-template.json +1 -1
- package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.json +127 -18
- package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.md +75 -21
- package/site-templates/shapes/person-service/ailk-template.json +1 -1
- package/site-templates/shapes/person-service/content/en/AboutPage/about.mdx +1 -1
- package/site-templates/shapes/person-service/content/en/HomePage/home.mdx +2 -2
- package/site-templates/shapes/person-service/content/en/PortfolioList/portfolio.mdx +4 -2
- package/site-templates/shapes/person-service/content/en/ServicesList/services.mdx +1 -1
- package/templates/.claude/agents/web.md +10 -8
- package/templates/.claude/rules/architecture.md +17 -7
- package/templates/.claude/skills/README.md +3 -2
- package/templates/.claude/skills/add-auth/SKILL.md +142 -90
- package/templates/.claude/skills/add-auth/references/env-vars.md +32 -17
- package/templates/.claude/skills/add-auth/references/oauth-app-setup.md +17 -8
- package/templates/.claude/skills/add-page/SKILL.md +241 -238
- package/templates/.claude/skills/add-page/references/page-types.md +94 -86
- package/templates/.claude/skills/add-page/scripts/site-pages.mjs +87 -0
- package/templates/.claude/skills/add-page/templates/comparison-page.mdx.tmpl +99 -0
- package/templates/.claude/skills/add-page/templates/content.mdx.tmpl +8 -18
- package/templates/.claude/skills/add-page/templates/flow-landing-page.mdx.tmpl +43 -0
- package/templates/.claude/skills/add-page/templates/report-page.mdx.tmpl +52 -0
- package/templates/.claude/skills/add-page/templates/reports-list.mdx.tmpl +38 -0
- package/templates/.claude/skills/check-site/SKILL.md +51 -18
- package/templates/.claude/skills/check-site/references/common-errors.md +12 -9
- package/templates/.claude/skills/check-site/references/findings-glossary.md +4 -4
- package/templates/.claude/skills/check-site/references/severity-levels.md +3 -3
- package/templates/.claude/skills/fill-page/SKILL.md +26 -7
- package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +1 -1
- package/templates/.claude/skills/setup-deploy/SKILL.md +75 -38
- package/templates/.claude/skills/update-page/SKILL.md +117 -0
- package/templates/.claude/skills/update-page/scripts/update-page.ts +640 -0
- package/templates/.claude/skills/update-page/templates/redirects.mjs.tmpl +31 -0
- package/templates/.claude/skills/upgrade-plan/SKILL.md +12 -8
- package/templates/.env.example +23 -2
- package/templates/.github/workflows/ci.yml +4 -0
- package/templates/.prettierignore +1 -0
- package/templates/CLAUDE.md +146 -103
- package/templates/DESIGN.md +98 -6
- package/templates/README.md +50 -38
- package/templates/apps/api/.env.example +2 -1
- package/templates/apps/api/src/__tests__/commerce-claim-registration.test.ts +2 -0
- package/templates/apps/api/src/__tests__/server.test.ts +116 -0
- package/templates/apps/api/src/lib/stripe.ts +9 -0
- package/templates/apps/api/src/middleware/__tests__/auth.optional-cookie.test.ts +140 -0
- package/templates/apps/api/src/middleware/auth.ts +54 -0
- package/templates/apps/api/src/routes/checkout/__tests__/session.test.ts +5 -2
- package/templates/apps/api/src/routes/checkout/__tests__/sessions.test.ts +628 -0
- package/templates/apps/api/src/routes/checkout/sessions.ts +222 -24
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-flow-checkout.test.ts +1 -1
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-org-billing.test.ts +5 -1
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe.test.ts +521 -20
- package/templates/apps/api/src/routes/webhooks/stripe.ts +124 -32
- package/templates/apps/api/src/server.ts +28 -0
- package/templates/apps/api/src/services/__tests__/revalidation.test.ts +90 -15
- package/templates/apps/api/src/services/checkout-buyer.ts +72 -0
- package/templates/apps/api/src/services/revalidation.ts +60 -15
- package/templates/apps/mcp/__tests__/tools/create_project.test.ts +30 -24
- package/templates/apps/mcp/src/tools/purchase.ts +4 -2
- package/templates/apps/web/.env.example +13 -0
- package/templates/apps/web/CLAUDE.md +22 -28
- package/templates/apps/web/app/[locale]/(auth)/layout.tsx +1 -1
- package/templates/apps/web/app/[locale]/(authed)/leads/__tests__/page.test.tsx +24 -0
- package/templates/apps/web/app/[locale]/(authed)/leads/page.tsx +17 -6
- package/templates/apps/web/app/[locale]/[slug]/[detail]/__tests__/page.test.tsx +110 -0
- package/templates/apps/web/app/[locale]/[slug]/[detail]/page.tsx +60 -0
- package/templates/apps/web/app/[locale]/[slug]/page.tsx +1 -1
- package/templates/apps/web/app/[locale]/alternatives/__tests__/page.test.tsx +161 -0
- package/templates/apps/web/app/[locale]/alternatives/page.tsx +104 -0
- package/templates/apps/web/app/[locale]/{use-cases → for}/[slug]/page.tsx +4 -3
- package/templates/apps/web/app/[locale]/for/__tests__/page-renderer-migration.test.tsx +73 -0
- package/templates/apps/web/app/[locale]/{use-cases → for}/page.tsx +8 -7
- package/templates/apps/web/app/[locale]/glossary/page.tsx +1 -1
- package/templates/apps/web/app/[locale]/layout.tsx +35 -19
- package/templates/apps/web/app/[locale]/newsletter/page.tsx +1 -1
- package/templates/apps/web/app/[locale]/portfolio/[slug]/page.tsx +1 -1
- package/templates/apps/web/app/[locale]/portfolio/page.tsx +1 -1
- package/templates/apps/web/app/[locale]/vs/[slug]/__tests__/page.test.tsx +112 -0
- package/templates/apps/web/app/[locale]/vs/[slug]/page.tsx +70 -0
- package/templates/apps/web/app/api/revalidate/__tests__/route.test.ts +236 -44
- package/templates/apps/web/app/api/revalidate/route.ts +78 -36
- package/templates/apps/web/lib/__tests__/site-brand.test.ts +79 -0
- package/templates/apps/web/lib/__tests__/site-theme.test.ts +104 -11
- package/templates/apps/web/lib/__tests__/structured-data.test.tsx +21 -4
- package/templates/apps/web/lib/locale-guard.ts +18 -0
- package/templates/apps/web/lib/meet-placeholder.ts +5 -0
- package/templates/apps/web/lib/nav-config.ts +14 -13
- package/templates/apps/web/lib/site-brand.tsx +13 -9
- package/templates/apps/web/lib/site-logo.tsx +36 -0
- package/templates/apps/web/lib/site-theme.ts +46 -26
- package/templates/apps/web/messages/en.json +23 -9
- package/templates/apps/web/middleware.ts +28 -4
- package/templates/content/en/BookCall/book-a-call.mdx +80 -0
- package/templates/content/en/BookCall/onsite-estimate.mdx +56 -0
- package/templates/content/en/BookCall/onsite-service.mdx +56 -0
- package/templates/content/en/BookCall/start-project.mdx +56 -0
- package/templates/content/en/ContactPage/contact.mdx +40 -1
- package/templates/content/en/HomePage/home.mdx +2 -6
- package/templates/content/en/LandingPage/meet.mdx +59 -0
- package/templates/content/en/UseCasesList/{use-cases.mdx → for.mdx} +19 -18
- package/templates/database/CHANGELOG.md +7 -0
- package/templates/database/package.json +1 -1
- package/templates/package.json +4 -1
- package/templates/tools/check-claude-md.ts +128 -0
- package/versions.json +33 -33
- package/dist/modules/commerce/0.6.0.tar.gz +0 -0
- package/dist/modules/commerce/0.6.1.tar.gz +0 -0
- package/dist/modules/docs-blog/0.6.0.tar.gz +0 -0
- package/dist/modules/docs-blog/0.6.1.tar.gz +0 -0
- package/dist/modules/marketing-site/0.6.1.tar.gz +0 -0
- package/dist/modules/minimalism-site/0.6.1.tar.gz +0 -0
- package/dist/modules/multi-tenant/0.6.0.tar.gz +0 -0
- package/dist/modules/multi-tenant/0.6.1.tar.gz +0 -0
- package/dist/modules/saas-product/0.6.1.tar.gz +0 -0
- package/dist/modules/scheduling/0.6.0.tar.gz +0 -0
- package/dist/modules/scheduling/0.6.1.tar.gz +0 -0
- package/dist/modules/signal-collectors/0.6.0.tar.gz +0 -0
- package/dist/modules/signal-collectors/0.6.1.tar.gz +0 -0
- package/dist/modules/simple-service/0.6.1.tar.gz +0 -0
- package/dist/modules/workspace/0.6.0.tar.gz +0 -0
- package/dist/modules/workspace/0.6.1.tar.gz +0 -0
- package/site-templates/_base/content/en/BookCall/book-call.mdx +0 -52
- package/site-templates/minimalism-site/DESIGN.md +0 -162
- package/site-templates/minimalism-site/TEMPLATE-MANIFEST.json +0 -506
- package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +0 -458
- package/site-templates/minimalism-site/ailk-template.json +0 -23
- package/site-templates/minimalism-site/content/en/AboutPage/about.mdx +0 -110
- package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +0 -52
- package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +0 -34
- package/site-templates/minimalism-site/content/en/FAQPage/faq.mdx +0 -57
- package/site-templates/minimalism-site/content/en/LandingPage/referral.mdx +0 -77
- package/site-templates/minimalism-site/content/en/LandingPage/reports.mdx +0 -73
- package/site-templates/minimalism-site/content/en/PurchasePolicyPage/purchase-policy.mdx +0 -123
- package/site-templates/minimalism-site/content/en/ReportPage/annual-letter-2024.mdx +0 -52
- package/site-templates/minimalism-site/content/en/ReportPage/field-notes-2023.mdx +0 -52
- package/site-templates/minimalism-site/content/en/ReportPage/platform-shift-2025.mdx +0 -52
- package/site-templates/minimalism-site/content/en/ReportPage/state-of-the-market-2026.mdx +0 -52
- package/site-templates/minimalism-site/content/en/Service/first-engagement.mdx +0 -38
- package/site-templates/minimalism-site/content/en/Service/second-engagement.mdx +0 -38
- package/site-templates/minimalism-site/content/en/Service/third-engagement.mdx +0 -38
- package/site-templates/minimalism-site/content/en/ServicesList/services.mdx +0 -73
- package/site-templates/minimalism-site/flows/referral.flow.json +0 -71
- package/site-templates/minimalism-site/provenance.json +0 -4
- package/templates/.claude/skills/add-page/templates/route.tsx.tmpl +0 -28
- package/templates/.claude/skills/setup-deploy/references/env-vars-template.md +0 -175
- package/templates/apps/api/.ailk/inbox/2026-09-20T14-57-31.552Z-fallback-1789916251590-037e9005.json +0 -8
- package/templates/apps/api/.ailk/inbox/2026-09-20T14-57-33.840Z-fallback-1789916253842-b52659e9.json +0 -12
- package/templates/apps/api/.ailk/inbox/2026-09-20T14-57-33.844Z-fallback-1789916253845-6b266f8c.json +0 -12
- package/templates/apps/web/app/[locale]/book-a-call/page.tsx +0 -50
- package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +0 -72
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-1.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-2.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-3.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-4.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-5.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-6.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/hero-backdrop.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-1.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-2.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-3.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/wordmark-placeholder.svg +0 -0
|
@@ -95,6 +95,28 @@ One `page=<route>` region per roster row, generated from the seed file the compo
|
|
|
95
95
|
_Detail route over `content/en/Service/` — 3 seed pages: `first-job.mdx`, `second-job.mdx`, `third-job.mdx`._
|
|
96
96
|
<!-- generated:end -->
|
|
97
97
|
|
|
98
|
+
`/for` (the persona hub — every shape carries the family now, #6878 D7):
|
|
99
|
+
|
|
100
|
+
<!-- generated:begin page=/for -->
|
|
101
|
+
|
|
102
|
+
| # | Section | Component | Copy (first line) |
|
|
103
|
+
| --- | -------------------------------------------------------- | -------------- | ----------------------------------------------------------------- |
|
|
104
|
+
| 1 | `hero` (eyebrow "Customers" · 2 CTAs) | `Hero` | {Customers: who your product or service is for} |
|
|
105
|
+
| 2 | `items` (columns=3 · items ×3) | `Items` | {The jobs customers hire your product or service to do} |
|
|
106
|
+
| 3 | `logoCloud` (layout=inline · logos ×6) | `LogoCloud` | Don’t just take our word for it |
|
|
107
|
+
| 4 | `testimonials` (quote · items ×1) | `Testimonials` | {A customer quote, in their own words, about the result they got} |
|
|
108
|
+
| 5 | `cta` (box · checklist ×3 · 2 CTAs · closingLine) | `CTA` | {Switch to your product or service in time amount or less} |
|
|
109
|
+
| 6 | `faq` (accordion · items ×5 · 1 CTA · initialOpen first) | `FAQ` | FAQs |
|
|
110
|
+
|
|
111
|
+
<!-- generated:end -->
|
|
112
|
+
|
|
113
|
+
`/for/[slug]`:
|
|
114
|
+
|
|
115
|
+
<!-- generated:begin page=/for/[slug] -->
|
|
116
|
+
|
|
117
|
+
_Detail route over `content/en/UseCase/` — 3 seed pages: `persona-1.mdx`, `persona-2.mdx`, `persona-3.mdx`._
|
|
118
|
+
<!-- generated:end -->
|
|
119
|
+
|
|
98
120
|
`/about`:
|
|
99
121
|
|
|
100
122
|
<!-- generated:begin page=/about -->
|
|
@@ -110,9 +132,10 @@ _Detail route over `content/en/Service/` — 3 seed pages: `first-job.mdx`, `sec
|
|
|
110
132
|
|
|
111
133
|
<!-- generated:begin page=/contact -->
|
|
112
134
|
|
|
113
|
-
| # | Section | Component | Copy (first line)
|
|
114
|
-
| --- | --------------------------------------------------------- | --------- |
|
|
115
|
-
| 1 | `hero` (split · eyebrow "Contact" · checklist ×3 · 1 CTA) | `Hero` | Get every message in your email, free
|
|
135
|
+
| # | Section | Component | Copy (first line) |
|
|
136
|
+
| --- | --------------------------------------------------------- | --------- | ----------------------------------------- |
|
|
137
|
+
| 1 | `hero` (split · eyebrow "Contact" · checklist ×3 · 1 CTA) | `Hero` | Get every message in your email, free |
|
|
138
|
+
| 2 | `items` (tiles · columns=2 · items ×4) | `Items` | {Add appointment scheduling to your site} |
|
|
116
139
|
|
|
117
140
|
<!-- generated:end -->
|
|
118
141
|
|
|
@@ -128,7 +151,7 @@ _Detail route over `content/en/Service/` — 3 seed pages: `first-job.mdx`, `sec
|
|
|
128
151
|
|
|
129
152
|
<!-- generated:end -->
|
|
130
153
|
|
|
131
|
-
`/glossary`, `/newsletter
|
|
154
|
+
`/glossary`, `/newsletter` (base-layer seeds every starter carries, #6658 D5 — `/newsletter` is this tree's own byte copy of the Free newsletter, D4/D9), plus the always-copied overlay's `/meet` hub and `/meet/[slug]` BookCall detail seeds (#6897 D3-D5):
|
|
132
155
|
|
|
133
156
|
<!-- generated:begin page=/glossary -->
|
|
134
157
|
|
|
@@ -148,15 +171,38 @@ _Detail route over `content/en/Service/` — 3 seed pages: `first-job.mdx`, `sec
|
|
|
148
171
|
|
|
149
172
|
<!-- generated:end -->
|
|
150
173
|
|
|
151
|
-
<!-- generated:begin page=/
|
|
174
|
+
<!-- generated:begin page=/meet -->
|
|
152
175
|
|
|
153
|
-
| # | Section | Component | Copy (first line)
|
|
154
|
-
| --- | -------------------------------------- | --------- |
|
|
155
|
-
| 1 | `hero` (eyebrow "
|
|
156
|
-
| 2 | `items` (columns=
|
|
176
|
+
| # | Section | Component | Copy (first line) |
|
|
177
|
+
| --- | -------------------------------------- | --------- | --------------------- |
|
|
178
|
+
| 1 | `hero` (eyebrow "Meet") | `Hero` | {Book a time with us} |
|
|
179
|
+
| 2 | `items` (tiles · columns=2 · items ×4) | `Items` | |
|
|
157
180
|
|
|
158
181
|
<!-- generated:end -->
|
|
159
182
|
|
|
183
|
+
<!-- generated:begin page=/meet/[slug] -->
|
|
184
|
+
|
|
185
|
+
| # | Section | Component | Copy (first line) |
|
|
186
|
+
| --- | -------------------------------------- | -------------- | ------------------------------------------------ |
|
|
187
|
+
| 1 | `hero` (eyebrow "Book a Call" · 1 CTA) | `Hero` | Book a Call |
|
|
188
|
+
| 2 | `cta` (box · 1 CTA) | `CTA` | {What booking a call would do for your visitors} |
|
|
189
|
+
| 3 | `items` (columns=3 · items ×3) | `Items` | What happens on the call? |
|
|
190
|
+
| 4 | `content-block` (1 CTA) | `ContentBlock` | |
|
|
191
|
+
|
|
192
|
+
<!-- generated:end -->
|
|
193
|
+
|
|
194
|
+
`/sign-in`, `/sign-up` (code routes — the `SignInCard` island and the sign-up form inside the locale layout, whose header links both; listed so the manifest is a complete install record, #6797):
|
|
195
|
+
|
|
196
|
+
<!-- generated:begin page=/sign-in -->
|
|
197
|
+
|
|
198
|
+
_Code route — no content, no sections._
|
|
199
|
+
<!-- generated:end -->
|
|
200
|
+
|
|
201
|
+
<!-- generated:begin page=/sign-up -->
|
|
202
|
+
|
|
203
|
+
_Code route — no content, no sections._
|
|
204
|
+
<!-- generated:end -->
|
|
205
|
+
|
|
160
206
|
`/purchase-policy` (this tree's own service-shape override — cancellation and refunds, D4):
|
|
161
207
|
|
|
162
208
|
<!-- generated:begin page=/purchase-policy -->
|
|
@@ -232,20 +278,22 @@ The standard page set for this shape (`derive-roster.py --shape local-business-s
|
|
|
232
278
|
| `ProjectsList` · `Project` | the portfolio pair (`/portfolio`) is the proof of past work; `/projects` is the signal-collectors sample listing |
|
|
233
279
|
| `Pricing` | a service is priced on its own `Service` page (or quoted), not on a pricing table |
|
|
234
280
|
| `CaseStudiesList` · `CaseStudy` · `TestimonialsList` · `ClientsList` | proof pages need real customers (the #6658 reason) |
|
|
235
|
-
| `UseCasesList` · `UseCase` | each `Service` page names who it is for; the `_base` persona seeds are product copy that links `/pricing` |
|
|
236
281
|
| `EventsList` · `Event` · `DownloadsList` | a placeholder starter has no events or downloads |
|
|
237
282
|
| `ResourcesHub` · `ResourceDetail` · `HowTo` · `Whitepaper` | the Resources content system is the goal-driven default a site grows into, not a starter page |
|
|
238
283
|
| `LocationsList` · `Location` · `ServiceAreaPage` | a placeholder starter is one location; `/contact` carries the address and the area served |
|
|
239
284
|
|
|
240
285
|
**Rows added:**
|
|
241
286
|
|
|
242
|
-
| Row added | Reason
|
|
243
|
-
| --------------------------------- |
|
|
244
|
-
| `PurchasePolicyPage` | every shape carries one purchase policy with its shape's sections — service: cancellation and refunds (#6646 D3)
|
|
245
|
-
| `PortfolioList` · `PortfolioItem` | the portfolio pair belongs to every shape's standard roster (operator, 2026-09-25; roadmap § 4)
|
|
246
|
-
| `BlogList` | every Free scaffold's nav links `/blog` unconditionally (`renderNavConfig`, operator ruling 2026-09-23); the Free teaser serves it, as on organization-product (§ 1.8)
|
|
287
|
+
| Row added | Reason |
|
|
288
|
+
| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
289
|
+
| `PurchasePolicyPage` | every shape carries one purchase policy with its shape's sections — service: cancellation and refunds (#6646 D3) |
|
|
290
|
+
| `PortfolioList` · `PortfolioItem` | the portfolio pair belongs to every shape's standard roster (operator, 2026-09-25; roadmap § 4) |
|
|
291
|
+
| `BlogList` | every Free scaffold's nav links `/blog` unconditionally (`renderNavConfig`, operator ruling 2026-09-23); the Free teaser serves it, as on organization-product (§ 1.8) |
|
|
292
|
+
| `LandingPage` | the Free `/meet` meeting-types hub is a LandingPage seed, the same generic `[slug]` route serves it through (#6897 D3); the four `/meet/[slug]` BookCall detail seeds ride the `BookCall` type already in the standard roster |
|
|
293
|
+
|
|
294
|
+
`|S − D| = 13` and `|R| = 18`.
|
|
247
295
|
|
|
248
|
-
|
|
296
|
+
`/sign-in` and `/sign-up` are also rostered (#6797) — code routes (`kind: route`) with no page type, so they sit outside this set equation: the locale layout's header links both, and the roster of record lists every page the scaffold serves.
|
|
249
297
|
|
|
250
298
|
## 4. Roster, as the registry declares it
|
|
251
299
|
|
|
@@ -263,16 +311,21 @@ local-business-service:
|
|
|
263
311
|
- { route: "/", kind: page, content: ["content/en/HomePage/home.mdx"] }
|
|
264
312
|
- { route: "/services", kind: page, content: ["content/en/ServicesList/services.mdx"] }
|
|
265
313
|
- { route: "/services/[slug]", kind: page, contentDir: "content/en/Service" }
|
|
314
|
+
- { route: "/for", kind: page, content: ["content/en/UseCasesList/for.mdx"] }
|
|
315
|
+
- { route: "/for/[slug]", kind: page, contentDir: "content/en/UseCase" }
|
|
266
316
|
- { route: "/about", kind: page, content: ["content/en/AboutPage/about.mdx"] }
|
|
267
317
|
- { route: "/contact", kind: page, content: ["content/en/ContactPage/contact.mdx"] }
|
|
268
318
|
- { route: "/faq", kind: page, content: ["content/en/FAQPage/faq.mdx"] }
|
|
269
319
|
- { route: "/glossary", kind: page, content: ["content/en/GlossaryList/glossary.mdx"] }
|
|
270
320
|
- { route: "/newsletter", kind: page, content: ["content/en/NewsletterSignup/newsletter.mdx"] }
|
|
271
|
-
- { route: "/
|
|
321
|
+
- { route: "/sign-in", kind: route }
|
|
322
|
+
- { route: "/sign-up", kind: route }
|
|
272
323
|
- { route: "/purchase-policy", kind: page, content: ["content/en/PurchasePolicyPage/purchase-policy.mdx"] }
|
|
273
324
|
- { route: "/privacy", kind: page, content: ["content/en/PrivacyPage/privacy.mdx"] }
|
|
274
325
|
- { route: "/terms", kind: page, content: ["content/en/TermsPage/terms.mdx"] }
|
|
275
326
|
- { route: "/blog", kind: page, content: ["content/en/BlogList/blog.mdx"] }
|
|
327
|
+
- { route: "/meet", kind: page, content: ["content/en/LandingPage/meet.mdx"] }
|
|
328
|
+
- { route: "/meet/[slug]", kind: page, content: ["content/en/BookCall/book-a-call.mdx", "content/en/BookCall/onsite-estimate.mdx", "content/en/BookCall/start-project.mdx", "content/en/BookCall/onsite-service.mdx"] }
|
|
276
329
|
- { route: "/portfolio", kind: page, content: ["content/en/PortfolioList/portfolio.mdx"] }
|
|
277
330
|
- { route: "/portfolio/[slug]", kind: page, contentDir: "content/en/PortfolioItem" }
|
|
278
331
|
```
|
|
@@ -283,11 +336,12 @@ By source:
|
|
|
283
336
|
|
|
284
337
|
```
|
|
285
338
|
starter: / · /services · /services/<slug> · /about · /contact · /faq
|
|
286
|
-
/glossary · /newsletter · /
|
|
287
|
-
/privacy · /terms · /blog · /
|
|
339
|
+
/glossary · /newsletter · /sign-in · /sign-up
|
|
340
|
+
/purchase-policy · /privacy · /terms · /blog · /meet · /meet/<slug>
|
|
341
|
+
/portfolio · /portfolio/<slug>
|
|
288
342
|
```
|
|
289
343
|
|
|
290
|
-
Every row is module-less: `requires` is `[marketing]` alone, so `mergeRoster` contributes nothing beyond this tree's own
|
|
344
|
+
Every row is module-less: `requires` is `[marketing]` alone, so `mergeRoster` contributes nothing beyond this tree's own seventeen rows.
|
|
291
345
|
|
|
292
346
|
## 5. Component inventory
|
|
293
347
|
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"provenance.json": ".ailk-template.json",
|
|
7
7
|
"TEMPLATE-MANIFEST.json": ".ailk-site-manifest.json"
|
|
8
8
|
},
|
|
9
|
-
"postInstall": "Starter local-business-service installed. Its /faq, /contact and /
|
|
9
|
+
"postInstall": "Starter local-business-service installed. Its /faq, /contact, /blog, /meet and its four /meet/<slug> seed pages came with the always-copied overlay; /glossary, /newsletter, /privacy and /terms with the base layer it extends (content/en/). This tree's own /, /about, /services (+ three jobs), /purchase-policy and /portfolio pages are its own compositions. Every line of copy is a placeholder \u2014 replace it before you launch."
|
|
10
10
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"categories": ["accounting", "legal", "real-estate"],
|
|
5
5
|
"shape": "organization-service",
|
|
6
6
|
"design": "standard",
|
|
7
|
-
"generatedHash": "
|
|
7
|
+
"generatedHash": "f469bf694b5a4fff3c818757230f56f035d33b6aa9e43039e75a0c20a1558c87",
|
|
8
8
|
"layout": {
|
|
9
9
|
"nav": "full",
|
|
10
10
|
"footer": "columns",
|
|
@@ -125,6 +125,61 @@
|
|
|
125
125
|
"chrome": "on",
|
|
126
126
|
"sections": []
|
|
127
127
|
},
|
|
128
|
+
{
|
|
129
|
+
"route": "/for",
|
|
130
|
+
"kind": "page",
|
|
131
|
+
"pageType": "UseCasesList",
|
|
132
|
+
"schema": "UseCasesList",
|
|
133
|
+
"shell": "MarketingShell",
|
|
134
|
+
"chrome": "on",
|
|
135
|
+
"sections": [
|
|
136
|
+
{
|
|
137
|
+
"type": "hero",
|
|
138
|
+
"component": "Hero"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"type": "items",
|
|
142
|
+
"component": "Items",
|
|
143
|
+
"options": {
|
|
144
|
+
"columns": 3
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"type": "logoCloud",
|
|
149
|
+
"component": "LogoCloud",
|
|
150
|
+
"options": {
|
|
151
|
+
"layout": "inline"
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"type": "testimonials",
|
|
156
|
+
"component": "Testimonials"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"type": "cta",
|
|
160
|
+
"component": "CTA"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"type": "faq",
|
|
164
|
+
"component": "FAQ"
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"route": "/for/[slug]",
|
|
170
|
+
"kind": "page",
|
|
171
|
+
"contentDir": "content/en/UseCase",
|
|
172
|
+
"seeds": [
|
|
173
|
+
"content/en/UseCase/persona-1.mdx",
|
|
174
|
+
"content/en/UseCase/persona-2.mdx",
|
|
175
|
+
"content/en/UseCase/persona-3.mdx"
|
|
176
|
+
],
|
|
177
|
+
"pageType": "UseCase",
|
|
178
|
+
"schema": "UseCase",
|
|
179
|
+
"shell": "MarketingShell",
|
|
180
|
+
"chrome": "on",
|
|
181
|
+
"sections": []
|
|
182
|
+
},
|
|
128
183
|
{
|
|
129
184
|
"route": "/contact",
|
|
130
185
|
"kind": "page",
|
|
@@ -136,6 +191,13 @@
|
|
|
136
191
|
{
|
|
137
192
|
"type": "hero",
|
|
138
193
|
"component": "Hero"
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"type": "items",
|
|
197
|
+
"component": "Items",
|
|
198
|
+
"options": {
|
|
199
|
+
"columns": 2
|
|
200
|
+
}
|
|
139
201
|
}
|
|
140
202
|
]
|
|
141
203
|
},
|
|
@@ -201,25 +263,22 @@
|
|
|
201
263
|
]
|
|
202
264
|
},
|
|
203
265
|
{
|
|
204
|
-
"route": "/
|
|
205
|
-
"kind": "
|
|
206
|
-
"pageType":
|
|
207
|
-
"schema":
|
|
266
|
+
"route": "/sign-in",
|
|
267
|
+
"kind": "route",
|
|
268
|
+
"pageType": null,
|
|
269
|
+
"schema": null,
|
|
208
270
|
"shell": "MarketingShell",
|
|
209
271
|
"chrome": "on",
|
|
210
|
-
"sections": [
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
]
|
|
272
|
+
"sections": []
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"route": "/sign-up",
|
|
276
|
+
"kind": "route",
|
|
277
|
+
"pageType": null,
|
|
278
|
+
"schema": null,
|
|
279
|
+
"shell": "MarketingShell",
|
|
280
|
+
"chrome": "on",
|
|
281
|
+
"sections": []
|
|
223
282
|
},
|
|
224
283
|
{
|
|
225
284
|
"route": "/privacy",
|
|
@@ -304,6 +363,56 @@
|
|
|
304
363
|
}
|
|
305
364
|
]
|
|
306
365
|
},
|
|
366
|
+
{
|
|
367
|
+
"route": "/meet",
|
|
368
|
+
"kind": "page",
|
|
369
|
+
"pageType": "LandingPage",
|
|
370
|
+
"schema": "WebPage",
|
|
371
|
+
"shell": "MarketingShell",
|
|
372
|
+
"chrome": "on",
|
|
373
|
+
"sections": [
|
|
374
|
+
{
|
|
375
|
+
"type": "hero",
|
|
376
|
+
"component": "Hero"
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"type": "items",
|
|
380
|
+
"component": "Items",
|
|
381
|
+
"options": {
|
|
382
|
+
"columns": 2
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
]
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
"route": "/meet/[slug]",
|
|
389
|
+
"kind": "page",
|
|
390
|
+
"pageType": "BookCall",
|
|
391
|
+
"schema": "BookCall",
|
|
392
|
+
"shell": "MarketingShell",
|
|
393
|
+
"chrome": "on",
|
|
394
|
+
"sections": [
|
|
395
|
+
{
|
|
396
|
+
"type": "hero",
|
|
397
|
+
"component": "Hero"
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"type": "cta",
|
|
401
|
+
"component": "CTA"
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"type": "items",
|
|
405
|
+
"component": "Items",
|
|
406
|
+
"options": {
|
|
407
|
+
"columns": 3
|
|
408
|
+
}
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
"type": "content-block",
|
|
412
|
+
"component": "ContentBlock"
|
|
413
|
+
}
|
|
414
|
+
]
|
|
415
|
+
},
|
|
307
416
|
{
|
|
308
417
|
"route": "/portfolio",
|
|
309
418
|
"kind": "page",
|
|
@@ -105,13 +105,36 @@ One `page=<route>` region per roster row, generated from the seed file the compo
|
|
|
105
105
|
_Detail route over `content/en/Service/` — 3 seed pages: `first-engagement.mdx`, `second-engagement.mdx`, `third-engagement.mdx`._
|
|
106
106
|
<!-- generated:end -->
|
|
107
107
|
|
|
108
|
+
`/for` (the persona hub — every shape carries the family now, #6878 D7):
|
|
109
|
+
|
|
110
|
+
<!-- generated:begin page=/for -->
|
|
111
|
+
|
|
112
|
+
| # | Section | Component | Copy (first line) |
|
|
113
|
+
| --- | -------------------------------------------------------- | -------------- | ----------------------------------------------------------------- |
|
|
114
|
+
| 1 | `hero` (eyebrow "Customers" · 2 CTAs) | `Hero` | {Customers: who your product or service is for} |
|
|
115
|
+
| 2 | `items` (columns=3 · items ×3) | `Items` | {The jobs customers hire your product or service to do} |
|
|
116
|
+
| 3 | `logoCloud` (layout=inline · logos ×6) | `LogoCloud` | Don’t just take our word for it |
|
|
117
|
+
| 4 | `testimonials` (quote · items ×1) | `Testimonials` | {A customer quote, in their own words, about the result they got} |
|
|
118
|
+
| 5 | `cta` (box · checklist ×3 · 2 CTAs · closingLine) | `CTA` | {Switch to your product or service in time amount or less} |
|
|
119
|
+
| 6 | `faq` (accordion · items ×5 · 1 CTA · initialOpen first) | `FAQ` | FAQs |
|
|
120
|
+
|
|
121
|
+
<!-- generated:end -->
|
|
122
|
+
|
|
123
|
+
`/for/[slug]`:
|
|
124
|
+
|
|
125
|
+
<!-- generated:begin page=/for/[slug] -->
|
|
126
|
+
|
|
127
|
+
_Detail route over `content/en/UseCase/` — 3 seed pages: `persona-1.mdx`, `persona-2.mdx`, `persona-3.mdx`._
|
|
128
|
+
<!-- generated:end -->
|
|
129
|
+
|
|
108
130
|
`/contact` (always-copied overlay seed):
|
|
109
131
|
|
|
110
132
|
<!-- generated:begin page=/contact -->
|
|
111
133
|
|
|
112
|
-
| # | Section | Component | Copy (first line)
|
|
113
|
-
| --- | --------------------------------------------------------- | --------- |
|
|
114
|
-
| 1 | `hero` (split · eyebrow "Contact" · checklist ×3 · 1 CTA) | `Hero` | Get every message in your email, free
|
|
134
|
+
| # | Section | Component | Copy (first line) |
|
|
135
|
+
| --- | --------------------------------------------------------- | --------- | ----------------------------------------- |
|
|
136
|
+
| 1 | `hero` (split · eyebrow "Contact" · checklist ×3 · 1 CTA) | `Hero` | Get every message in your email, free |
|
|
137
|
+
| 2 | `items` (tiles · columns=2 · items ×4) | `Items` | {Add appointment scheduling to your site} |
|
|
115
138
|
|
|
116
139
|
<!-- generated:end -->
|
|
117
140
|
|
|
@@ -127,7 +150,7 @@ _Detail route over `content/en/Service/` — 3 seed pages: `first-engagement.mdx
|
|
|
127
150
|
|
|
128
151
|
<!-- generated:end -->
|
|
129
152
|
|
|
130
|
-
`/glossary`, `/newsletter
|
|
153
|
+
`/glossary`, `/newsletter` (base-layer seeds every starter carries, #6658 D5 — `/newsletter` is this tree's own byte copy of the Free newsletter, D4/D9), plus the always-copied overlay's `/meet` hub and `/meet/[slug]` BookCall detail seeds (#6897 D3-D5):
|
|
131
154
|
|
|
132
155
|
<!-- generated:begin page=/glossary -->
|
|
133
156
|
|
|
@@ -147,15 +170,38 @@ _Detail route over `content/en/Service/` — 3 seed pages: `first-engagement.mdx
|
|
|
147
170
|
|
|
148
171
|
<!-- generated:end -->
|
|
149
172
|
|
|
150
|
-
<!-- generated:begin page=/
|
|
173
|
+
<!-- generated:begin page=/meet -->
|
|
151
174
|
|
|
152
|
-
| # | Section | Component | Copy (first line)
|
|
153
|
-
| --- | -------------------------------------- | --------- |
|
|
154
|
-
| 1 | `hero` (eyebrow "
|
|
155
|
-
| 2 | `items` (columns=
|
|
175
|
+
| # | Section | Component | Copy (first line) |
|
|
176
|
+
| --- | -------------------------------------- | --------- | --------------------- |
|
|
177
|
+
| 1 | `hero` (eyebrow "Meet") | `Hero` | {Book a time with us} |
|
|
178
|
+
| 2 | `items` (tiles · columns=2 · items ×4) | `Items` | |
|
|
156
179
|
|
|
157
180
|
<!-- generated:end -->
|
|
158
181
|
|
|
182
|
+
<!-- generated:begin page=/meet/[slug] -->
|
|
183
|
+
|
|
184
|
+
| # | Section | Component | Copy (first line) |
|
|
185
|
+
| --- | -------------------------------------- | -------------- | ------------------------------------------------ |
|
|
186
|
+
| 1 | `hero` (eyebrow "Book a Call" · 1 CTA) | `Hero` | Book a Call |
|
|
187
|
+
| 2 | `cta` (box · 1 CTA) | `CTA` | {What booking a call would do for your visitors} |
|
|
188
|
+
| 3 | `items` (columns=3 · items ×3) | `Items` | What happens on the call? |
|
|
189
|
+
| 4 | `content-block` (1 CTA) | `ContentBlock` | |
|
|
190
|
+
|
|
191
|
+
<!-- generated:end -->
|
|
192
|
+
|
|
193
|
+
`/sign-in`, `/sign-up` (code routes — the `SignInCard` island and the sign-up form inside the locale layout, whose header links both; listed so the manifest is a complete install record, #6797):
|
|
194
|
+
|
|
195
|
+
<!-- generated:begin page=/sign-in -->
|
|
196
|
+
|
|
197
|
+
_Code route — no content, no sections._
|
|
198
|
+
<!-- generated:end -->
|
|
199
|
+
|
|
200
|
+
<!-- generated:begin page=/sign-up -->
|
|
201
|
+
|
|
202
|
+
_Code route — no content, no sections._
|
|
203
|
+
<!-- generated:end -->
|
|
204
|
+
|
|
159
205
|
`/privacy`, `/terms` (base-layer seeds):
|
|
160
206
|
|
|
161
207
|
<!-- generated:begin page=/privacy -->
|
|
@@ -231,19 +277,21 @@ The standard page set for this shape (`derive-roster.py --shape organization-ser
|
|
|
231
277
|
| `ProjectsList` · `Project` | the portfolio pair (`/portfolio`) is the proof of past work; `/projects` is the signal-collectors sample listing |
|
|
232
278
|
| `Pricing` | a service is priced on its own `Service` page (or quoted), not on a pricing table |
|
|
233
279
|
| `CaseStudiesList` · `CaseStudy` · `TestimonialsList` · `ClientsList` | proof pages need real customers (the #6658 reason) |
|
|
234
|
-
| `UseCasesList` · `UseCase` | each `Service` page names who it is for; the `_base` persona seeds are product copy that links `/pricing` |
|
|
235
280
|
| `EventsList` · `Event` · `DownloadsList` | a placeholder starter has no events or downloads |
|
|
236
281
|
| `ResourcesHub` · `ResourceDetail` · `HowTo` · `Whitepaper` | the Resources content system is the goal-driven default a site grows into, not a starter page |
|
|
237
282
|
|
|
238
283
|
**Rows added:**
|
|
239
284
|
|
|
240
|
-
| Row added | Reason
|
|
241
|
-
| --------------------------------- |
|
|
242
|
-
| `PurchasePolicyPage` | every shape carries one purchase policy with its shape's sections — service: cancellation and refunds (#6646 D3)
|
|
243
|
-
| `PortfolioList` · `PortfolioItem` | the portfolio pair belongs to every shape's standard roster (operator, 2026-09-25; roadmap § 4)
|
|
244
|
-
| `BlogList` | every Free scaffold's nav links `/blog` unconditionally (`renderNavConfig`, operator ruling 2026-09-23); the Free teaser serves it, as on organization-product (§ 1.8)
|
|
285
|
+
| Row added | Reason |
|
|
286
|
+
| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
287
|
+
| `PurchasePolicyPage` | every shape carries one purchase policy with its shape's sections — service: cancellation and refunds (#6646 D3) |
|
|
288
|
+
| `PortfolioList` · `PortfolioItem` | the portfolio pair belongs to every shape's standard roster (operator, 2026-09-25; roadmap § 4) |
|
|
289
|
+
| `BlogList` | every Free scaffold's nav links `/blog` unconditionally (`renderNavConfig`, operator ruling 2026-09-23); the Free teaser serves it, as on organization-product (§ 1.8) |
|
|
290
|
+
| `LandingPage` | the Free `/meet` meeting-types hub is a LandingPage seed, the same generic `[slug]` route serves it through (#6897 D3); the four `/meet/[slug]` BookCall detail seeds ride the `BookCall` type already in the standard roster |
|
|
291
|
+
|
|
292
|
+
`|S − D| = 13` and `|R| = 18`.
|
|
245
293
|
|
|
246
|
-
|
|
294
|
+
`/sign-in` and `/sign-up` are also rostered (#6797) — code routes (`kind: route`) with no page type, so they sit outside this set equation: the locale layout's header links both, and the roster of record lists every page the scaffold serves.
|
|
247
295
|
|
|
248
296
|
## 4. Roster, as the registry declares it
|
|
249
297
|
|
|
@@ -262,15 +310,20 @@ organization-service:
|
|
|
262
310
|
- { route: "/about", kind: page, content: ["content/en/AboutPage/about.mdx"] }
|
|
263
311
|
- { route: "/services", kind: page, content: ["content/en/ServicesList/services.mdx"] }
|
|
264
312
|
- { route: "/services/[slug]", kind: page, contentDir: "content/en/Service" }
|
|
313
|
+
- { route: "/for", kind: page, content: ["content/en/UseCasesList/for.mdx"] }
|
|
314
|
+
- { route: "/for/[slug]", kind: page, contentDir: "content/en/UseCase" }
|
|
265
315
|
- { route: "/contact", kind: page, content: ["content/en/ContactPage/contact.mdx"] }
|
|
266
316
|
- { route: "/faq", kind: page, content: ["content/en/FAQPage/faq.mdx"] }
|
|
267
317
|
- { route: "/glossary", kind: page, content: ["content/en/GlossaryList/glossary.mdx"] }
|
|
268
318
|
- { route: "/newsletter", kind: page, content: ["content/en/NewsletterSignup/newsletter.mdx"] }
|
|
269
|
-
- { route: "/
|
|
319
|
+
- { route: "/sign-in", kind: route }
|
|
320
|
+
- { route: "/sign-up", kind: route }
|
|
270
321
|
- { route: "/privacy", kind: page, content: ["content/en/PrivacyPage/privacy.mdx"] }
|
|
271
322
|
- { route: "/terms", kind: page, content: ["content/en/TermsPage/terms.mdx"] }
|
|
272
323
|
- { route: "/purchase-policy", kind: page, content: ["content/en/PurchasePolicyPage/purchase-policy.mdx"] }
|
|
273
324
|
- { route: "/blog", kind: page, content: ["content/en/BlogList/blog.mdx"] }
|
|
325
|
+
- { route: "/meet", kind: page, content: ["content/en/LandingPage/meet.mdx"] }
|
|
326
|
+
- { route: "/meet/[slug]", kind: page, content: ["content/en/BookCall/book-a-call.mdx", "content/en/BookCall/onsite-estimate.mdx", "content/en/BookCall/start-project.mdx", "content/en/BookCall/onsite-service.mdx"] }
|
|
274
327
|
- { route: "/portfolio", kind: page, content: ["content/en/PortfolioList/portfolio.mdx"] }
|
|
275
328
|
- { route: "/portfolio/[slug]", kind: page, contentDir: "content/en/PortfolioItem" }
|
|
276
329
|
```
|
|
@@ -281,11 +334,12 @@ By source:
|
|
|
281
334
|
|
|
282
335
|
```
|
|
283
336
|
starter: / · /about · /services · /services/<slug> · /contact · /faq
|
|
284
|
-
/glossary · /newsletter · /
|
|
285
|
-
/purchase-policy · /blog · /
|
|
337
|
+
/glossary · /newsletter · /sign-in · /sign-up
|
|
338
|
+
/privacy · /terms · /purchase-policy · /blog · /meet · /meet/<slug>
|
|
339
|
+
/portfolio · /portfolio/<slug>
|
|
286
340
|
```
|
|
287
341
|
|
|
288
|
-
Every row is module-less: `requires` is `[marketing]` alone, so `mergeRoster` contributes nothing beyond this tree's own
|
|
342
|
+
Every row is module-less: `requires` is `[marketing]` alone, so `mergeRoster` contributes nothing beyond this tree's own seventeen rows.
|
|
289
343
|
|
|
290
344
|
## 5. Component inventory
|
|
291
345
|
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
"provenance.json": ".ailk-template.json",
|
|
7
7
|
"TEMPLATE-MANIFEST.json": ".ailk-site-manifest.json"
|
|
8
8
|
},
|
|
9
|
-
"postInstall": "Starter organization-service installed. Its /faq, /contact and /
|
|
9
|
+
"postInstall": "Starter organization-service installed. Its /faq, /contact, /blog, /meet and its four /meet/<slug> seed pages came with the always-copied overlay; /glossary, /newsletter, /privacy and /terms with the base layer it extends (content/en/). This tree's own /, /about, /services (+ three engagements), /purchase-policy and /portfolio pages are its own compositions. Every line of copy is a placeholder \u2014 replace it before you launch."
|
|
10
10
|
}
|