Some checks failed
Main Confidence / confidence (push) Failing after 43s
## Summary - implement the website-only core IA for Spec 215 with canonical Home, Product, Trust, Changelog, Contact, Privacy, and Imprint routes - reduce primary navigation to the core buyer journey, retain legal/supporting pages as secondary surfaces, and redirect `/security-trust` to `/trust` - add route metadata, sitemap/canonical handling, changelog publishing, and updated smoke coverage for the new IA contract ## Testing - `corepack pnpm build:website` - `cd apps/website && corepack pnpm exec playwright test` - integrated browser smoke validation for core routes, secondary routes, `/security-trust -> /trust`, hidden optional routes, mobile nav, and Trust/Changelog to Contact paths ## Notes - keeps all changes local to `apps/website` and the Spec 215 artifacts - preserves the website working contract with no `apps/platform` runtime coupling Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #252
257 lines
7.7 KiB
YAML
257 lines
7.7 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: TenantAtlas Public Website IA Contract
|
|
version: 0.1.0
|
|
summary: Canonical route and navigation contract for the initial `apps/website` core pages.
|
|
description: >-
|
|
This contract defines the required public HTML routes, navigation limits,
|
|
optional-surface publication rules, and compatibility-path expectations for
|
|
Spec 215. The feature does not add backend APIs; the contract is about the
|
|
public website route and discoverability model.
|
|
servers:
|
|
- url: http://localhost:{port}
|
|
description: Local Astro development or preview server
|
|
variables:
|
|
port:
|
|
default: "4321"
|
|
tags:
|
|
- name: Core Public Pages
|
|
description: Canonical public HTML routes required by the initial website IA
|
|
- name: Secondary Public Pages
|
|
description: Retained supporting routes that remain published without becoming part of the initial core IA
|
|
- name: Compatibility Routes
|
|
description: Temporary or secondary routes that preserve continuity during IA cleanup
|
|
x-information-architecture:
|
|
scope: apps/website
|
|
requiredCoreRoutes:
|
|
- /
|
|
- /product
|
|
- /trust
|
|
- /changelog
|
|
- /contact
|
|
- /privacy
|
|
- /imprint
|
|
optionalRoutesWhenSubstantive:
|
|
- /resources
|
|
secondaryRoutes:
|
|
- /legal
|
|
- /terms
|
|
- /solutions
|
|
- /integrations
|
|
deferredRoutes:
|
|
- /pricing
|
|
- /docs
|
|
- /solutions/*
|
|
- /customers
|
|
- /compare
|
|
- /careers
|
|
- /status
|
|
primaryNavigation:
|
|
maxInformationalItems: 5
|
|
required:
|
|
- /product
|
|
- /trust
|
|
- /changelog
|
|
- /contact
|
|
optionalWhenSubstantive:
|
|
- /resources
|
|
forbiddenUntilMature:
|
|
- /pricing
|
|
- /docs
|
|
primaryCta:
|
|
canonicalRoute: /contact
|
|
allowedLabels:
|
|
- Request demo
|
|
- Contact
|
|
- Request a working session
|
|
footerGroups:
|
|
Product:
|
|
- /product
|
|
- /changelog
|
|
TrustLegal:
|
|
- /trust
|
|
- /privacy
|
|
- /imprint
|
|
- /terms
|
|
Contact:
|
|
- /contact
|
|
Content:
|
|
- /resources
|
|
publicationRules:
|
|
trustTopLevelVisible: true
|
|
brandRoutesHome: true
|
|
placeholderRoutesForbidden: true
|
|
unpublishedCollectionsRemainHidden:
|
|
- articles
|
|
buyerOutcomeExplanationRequiredOn:
|
|
- /
|
|
- /product
|
|
compatibility:
|
|
legacyCanonicalPairs:
|
|
- legacy: /security-trust
|
|
canonical: /trust
|
|
strategy: redirect
|
|
paths:
|
|
/:
|
|
get:
|
|
tags: [Core Public Pages]
|
|
operationId: getHomePage
|
|
summary: Home page
|
|
description: Entry surface that frames the product, routes visitors toward Product and Trust, and exposes the primary next step.
|
|
responses:
|
|
"200":
|
|
description: Home page HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
$ref: "#/components/schemas/HtmlDocument"
|
|
/product:
|
|
get:
|
|
tags: [Core Public Pages]
|
|
operationId: getProductPage
|
|
summary: Product page
|
|
description: Canonical product-understanding surface for capabilities, positioning, and buyer outcomes.
|
|
responses:
|
|
"200":
|
|
description: Product page HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
$ref: "#/components/schemas/HtmlDocument"
|
|
/trust:
|
|
get:
|
|
tags: [Core Public Pages]
|
|
operationId: getTrustPage
|
|
summary: Trust page
|
|
description: Canonical trust surface for security posture, isolation, operational discipline, and bounded public claims.
|
|
responses:
|
|
"200":
|
|
description: Trust page HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
$ref: "#/components/schemas/HtmlDocument"
|
|
/changelog:
|
|
get:
|
|
tags: [Core Public Pages]
|
|
operationId: getChangelogPage
|
|
summary: Changelog page
|
|
description: Dated product-progress surface that shows visible public development without acting as a blog substitute.
|
|
responses:
|
|
"200":
|
|
description: Changelog page HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
$ref: "#/components/schemas/HtmlDocument"
|
|
/contact:
|
|
get:
|
|
tags: [Core Public Pages]
|
|
operationId: getContactPage
|
|
summary: Contact page
|
|
description: Primary public conversion surface for the next evaluation step. Any later demo route is secondary unless a future spec changes the primary conversion path.
|
|
responses:
|
|
"200":
|
|
description: Contact page HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
$ref: "#/components/schemas/HtmlDocument"
|
|
/legal:
|
|
get:
|
|
tags: [Secondary Public Pages]
|
|
operationId: getLegalIndexPage
|
|
summary: Secondary legal index page
|
|
description: Supporting legal overview that may remain published without being part of the required initial core.
|
|
responses:
|
|
"200":
|
|
description: Legal index page HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
$ref: "#/components/schemas/HtmlDocument"
|
|
/privacy:
|
|
get:
|
|
tags: [Core Public Pages]
|
|
operationId: getPrivacyPage
|
|
summary: Privacy page
|
|
description: Canonical privacy disclosure required by the public legal baseline.
|
|
responses:
|
|
"200":
|
|
description: Privacy page HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
$ref: "#/components/schemas/HtmlDocument"
|
|
/imprint:
|
|
get:
|
|
tags: [Core Public Pages]
|
|
operationId: getImprintPage
|
|
summary: Imprint page
|
|
description: Canonical public legal notice required by the initial website legal baseline.
|
|
responses:
|
|
"200":
|
|
description: Imprint page HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
$ref: "#/components/schemas/HtmlDocument"
|
|
/terms:
|
|
get:
|
|
tags: [Secondary Public Pages]
|
|
operationId: getTermsPage
|
|
summary: Secondary terms page
|
|
description: Supporting legal disclosure that may remain published without becoming part of the required initial core.
|
|
responses:
|
|
"200":
|
|
description: Terms page HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
$ref: "#/components/schemas/HtmlDocument"
|
|
/solutions:
|
|
get:
|
|
tags: [Secondary Public Pages]
|
|
operationId: getSolutionsSupportPage
|
|
summary: Secondary solutions support page
|
|
description: Supporting outcome or audience-fit page that may remain published without top-level core prominence.
|
|
responses:
|
|
"200":
|
|
description: Solutions page HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
$ref: "#/components/schemas/HtmlDocument"
|
|
/integrations:
|
|
get:
|
|
tags: [Secondary Public Pages]
|
|
operationId: getIntegrationsSupportPage
|
|
summary: Secondary integrations support page
|
|
description: Supporting ecosystem-fit page that may remain published without top-level core prominence.
|
|
responses:
|
|
"200":
|
|
description: Integrations page HTML
|
|
content:
|
|
text/html:
|
|
schema:
|
|
$ref: "#/components/schemas/HtmlDocument"
|
|
/security-trust:
|
|
get:
|
|
tags: [Compatibility Routes]
|
|
operationId: redirectLegacySecurityTrust
|
|
summary: Legacy compatibility path for Trust
|
|
description: Temporary compatibility route. The canonical public trust path is `/trust`.
|
|
responses:
|
|
"308":
|
|
description: Permanent redirect to `/trust`
|
|
headers:
|
|
Location:
|
|
description: Canonical Trust route
|
|
schema:
|
|
type: string
|
|
const: /trust
|
|
components:
|
|
schemas:
|
|
HtmlDocument:
|
|
type: string
|
|
description: Server-rendered static HTML document |