Some checks failed
Main Confidence / confidence (push) Failing after 42s
## Summary - establish the initial Astro website foundation for `apps/website` with explicit TypeScript, Tailwind CSS v4, and reusable layout/content primitives - ship the v0 public route set for home, product, solutions, security & trust, integrations, contact, legal, privacy, and terms - add SEO/discovery basics, Playwright browser smoke coverage, and the full Spec 213 planning bundle under `specs/213-website-foundation-v0` - extend ignore rules for website test artifacts and refresh Copilot agent context for the new website stack ## Validation - `corepack pnpm build:website` - `cd apps/website && corepack pnpm exec playwright test` ## Notes - branch: `213-website-foundation-v0` - commit: `020d416d0d8af4d16a981ff4f4f6d90153b9c603` Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #249
5.3 KiB
5.3 KiB
Data Model: Initial Website Foundation & v0 Product Site
Overview
This feature introduces no database schema. The model is file- and route-based inside apps/website and describes how public content, page composition, navigation, and conversion surfaces are structured.
Entities
Site Configuration
- Purpose: Global site metadata and shared shell settings used by every public page.
- Key fields:
siteNamesiteTaglinedefaultTitledefaultDescriptiondefaultOgImageprimaryNavigationfooterNavigationGroupscontactCta
- Relationships:
- Owns many
NavigationItementries - Supplies defaults to many
PublicPageentries
- Owns many
- Validation rules:
- Must define a Home destination via brand/logo path
- Must include Product, Solutions, Security & Trust, Integrations, and Contact / Demo in primary navigation
- Must include Privacy and Terms in footer navigation
Public Page
- Purpose: One published route in the v0 public website.
- Key fields:
slugtitledescriptionroutePathpageRole(home,product,solutions,trust,integrations,contact,legal)herosectionsprimaryCtasecondaryCtaseo
- Relationships:
- Has one or more
NarrativeSectionentries - May reference zero or more
AudienceNarrativeorIntegrationEntryentries depending on page role - Consumes shared defaults from
SiteConfiguration
- Has one or more
- Validation rules:
- Each published page must have a unique
routePath - Each page must provide title, description, and at least one next-step path
- Product and Solutions must remain distinct page roles
- Each published page must have a unique
Narrative Section
- Purpose: Reusable section-level content block used to compose pages.
- Key fields:
sectionType(hero,problem-framing,feature-grid,trust-grid,logo-strip,cta,rich-text,audience-row,legal-prose)eyebrowheadlinebodyitemsthemeVariant
- Relationships:
- Belongs to one
PublicPage - May include many
SectionItementries throughitems
- Belongs to one
- Validation rules:
- Each section must support a clear narrative purpose
- Sections used on public core pages must remain semantically meaningful and not decorative-only
Navigation Item
- Purpose: A user-facing route link in the header or footer.
- Key fields:
labelhrefplacement(header,footer)grouporderisExternal
- Relationships:
- Belongs to
SiteConfiguration - Usually points to one
PublicPage
- Belongs to
- Validation rules:
- Footer items for legal routes must point to published pages
- No live navigation item may point to an unpublished placeholder route
Call To Action
- Purpose: Standardized next-step action shown within or after narrative sections.
- Key fields:
labelhrefvariant(primary,secondary)context
- Relationships:
- May belong to
PublicPage,NarrativeSection, orSiteConfiguration
- May belong to
- Validation rules:
- Every core page must expose at least one CTA leading deeper into the product/trust/contact flow
- CTA labels must preserve consistent domain wording and avoid hype language
Audience Narrative
- Purpose: Audience-specific framing used primarily on Solutions and supporting pages.
- Key fields:
audienceproblemStatementoperatingModelFitproofPointsnextStep
- Relationships:
- Belongs to the Solutions page or other audience-aware sections
- Validation rules:
- Must distinguish MSP and Enterprise IT narratives rather than collapsing them into generic copy
Integration Entry
- Purpose: A public description of one real integration direction or ecosystem anchor.
- Key fields:
namesummaryscopeNotecategory
- Relationships:
- Belongs to the Integrations page
- Validation rules:
- Must represent a real or explicitly planned integration direction
- Must not express speculative wishlist claims as if they were live product truth
Legal Document
- Purpose: Public legal content required to support a credible launch.
- Key fields:
slugtitlesummarysectionslastReviewedAt
- Relationships:
- Belongs to the Legal surface
- Validation rules:
- Privacy and Terms must both exist before launch
- Any required jurisdiction-specific public legal notice must exist either as a section of the Legal hub or as a dedicated linked legal document before launch
- Legal content must be reachable from the footer and the conversion path
Relationship Summary
SiteConfigurationhas manyNavigationItemSiteConfigurationprovides defaults to manyPublicPagePublicPagehas manyNarrativeSectionPublicPagemay have manyCallToActionSolutionspage has manyAudienceNarrativeIntegrationspage has manyIntegrationEntryLegalsurface has manyLegalDocument
State / Lifecycle Notes
- No persisted runtime states are introduced.
- Publishability is file- and route-driven: a route is “live” when the page exists and is intentionally linked; future sections remain absent from navigation until live.
- Trust and integration claims stay governed by content review rather than by a new application state machine.