TenantAtlas/specs/213-website-foundation-v0/data-model.md
ahmido 2d552c7ae8
Some checks failed
Main Confidence / confidence (push) Failing after 42s
feat: initial website foundation and v0 product site (#249)
## 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
2026-04-18 20:56:47 +00:00

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:
    • siteName
    • siteTagline
    • defaultTitle
    • defaultDescription
    • defaultOgImage
    • primaryNavigation
    • footerNavigationGroups
    • contactCta
  • Relationships:
    • Owns many NavigationItem entries
    • Supplies defaults to many PublicPage entries
  • 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:
    • slug
    • title
    • description
    • routePath
    • pageRole (home, product, solutions, trust, integrations, contact, legal)
    • hero
    • sections
    • primaryCta
    • secondaryCta
    • seo
  • Relationships:
    • Has one or more NarrativeSection entries
    • May reference zero or more AudienceNarrative or IntegrationEntry entries depending on page role
    • Consumes shared defaults from SiteConfiguration
  • 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

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)
    • eyebrow
    • headline
    • body
    • items
    • themeVariant
  • Relationships:
    • Belongs to one PublicPage
    • May include many SectionItem entries through items
  • 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:
    • label
    • href
    • placement (header, footer)
    • group
    • order
    • isExternal
  • Relationships:
    • Belongs to SiteConfiguration
    • Usually points to one PublicPage
  • 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:
    • label
    • href
    • variant (primary, secondary)
    • context
  • Relationships:
    • May belong to PublicPage, NarrativeSection, or SiteConfiguration
  • 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:
    • audience
    • problemStatement
    • operatingModelFit
    • proofPoints
    • nextStep
  • 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:
    • name
    • summary
    • scopeNote
    • category
  • 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
  • Purpose: Public legal content required to support a credible launch.
  • Key fields:
    • slug
    • title
    • summary
    • sections
    • lastReviewedAt
  • 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

  • SiteConfiguration has many NavigationItem
  • SiteConfiguration provides defaults to many PublicPage
  • PublicPage has many NarrativeSection
  • PublicPage may have many CallToAction
  • Solutions page has many AudienceNarrative
  • Integrations page has many IntegrationEntry
  • Legal surface has many LegalDocument

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.