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

158 lines
5.3 KiB
Markdown

# 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
### Legal Document
- **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.