TenantAtlas/specs/402-screwfast-website-rebuild/spec.md
ahmido eeb5c98450 feat: rebuild website on ScrewFast foundation (#393)
## Summary
- rebuild `apps/website` on the pinned ScrewFast Astro foundation
- replace the legacy page/content/component structure with the new section and UI architecture
- add Starlight-based docs and the new public route set for platform, pricing, trust, legal, and guides
- refresh website tooling, dependencies, and Playwright smoke coverage for the new site shell

## Scope
- touches `apps/website` and the matching spec artifacts for feature 402
- does not modify `apps/platform`

## Testing
- not run in this step

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #393
2026-05-20 21:36:29 +00:00

65 lines
4.3 KiB
Markdown

# Feature Specification: Tenantial ScrewFast Website Rebuild
**Feature Branch**: `402-screwfast-website-rebuild`
**Created**: 2026-05-20
**Status**: Draft
**Input**: Restart Spec 402 from a clean base by deleting and recreating `apps/website` as a Tenantial public website using the pinned ScrewFast reference as the implementation substrate.
## Spec Candidate Check
- **Problem**: Prior website implementation attempts should not define the new public site foundation.
- **Today's failure**: Incremental cleanup would preserve old route files, components, design tokens, and content assumptions that the user explicitly rejected.
- **User-visible improvement**: Visitors see a coherent Tenantial public website with intentional homepage, platform, pricing, contact, trust, and legal routes.
- **Smallest enterprise-capable version**: Recreate only `apps/website`, preserve monorepo website contracts, keep static/demo product previews, and validate with website build plus smoke tests.
- **Explicit non-goals**: No `apps/platform` changes, no Laravel, Filament, Livewire, Blade, migrations, policies, providers, queues, jobs, database, tenant/workspace/RBAC, or Microsoft Graph code.
- **Permanent complexity imported**: Website-local Astro structure, Tailwind theme, public navigation, static product preview components, and Playwright smoke coverage.
- **Why now**: The user requested a clean restart of Spec 402 and a full public website replacement.
- **Approval class**: Core Enterprise
- **Score**: Nutzen 2 | Dringlichkeit 2 | Scope 2 | Komplexitaet 1 | Produktnaehe 2 | Wiederverwendung 2 | **Gesamt: 11/12**
- **Decision**: approve
## Scope
This feature owns only the public Astro website at `apps/website`. In this feature, "platform" means the public website route `/platform`.
The feature must not touch `apps/platform` and must not import from it.
## Requirements
- **FR-001**: `apps/website` MUST be deleted and recreated from a clean base.
- **FR-002**: The recreated app MUST keep package name `@tenantatlas/website`.
- **FR-003**: Root website scripts and the `WEBSITE_PORT` convention MUST remain compatible.
- **FR-004**: The app MUST use the pinned ScrewFast reference `mearashadowfax/ScrewFast@10718e4c68eca7887d8d82e207d9b394d7346ad3` as the website substrate.
- **FR-005**: ScrewFast-derived structure MUST cover layout, navigation, mobile navigation, theme toggle, light/dark handling, backgrounds, surfaces, cards, buttons, hover states, focus-visible states, responsive behavior, and reduced-motion behavior.
- **FR-006**: Public copy and metadata MUST use Tenantial branding only.
- **FR-007**: Public pages MUST NOT expose ScrewFast, construction, hardware, template, open-source, TenantPilot, TenantCTRL, or unsupported proof claims.
- **FR-008**: Public product previews MUST be static/demo content and MUST NOT imply live tenant data or authenticated platform behavior.
- **FR-009**: Pricing, contact, trust, and legal copy MUST stay conservative and avoid fake customers, endorsements, external assurance proof, uptime commitments, or restore/compliance promises.
- **FR-010**: Public routes MUST render intentionally, redirect intentionally, or stay out of navigation.
## Public Routes
- Render: `/`, `/platform`, `/pricing`, `/contact`, `/trust`, `/legal`, `/privacy`, `/terms`, `/imprint`
- Static: `/robots.txt`, `/sitemap-index.xml`
- Redirect: `/product`, `/products`, `/services` to `/platform`
- Not exposed in navigation: redirect aliases and `404`
## Testing / Runtime Impact
- **Classification**: Browser/static website.
- **Validation commands**:
- `corepack pnpm install`
- `corepack pnpm build:website`
- `WEBSITE_PORT=4321 corepack pnpm --filter @tenantatlas/website test:smoke`
- `git diff --check`
- **Platform impact**: None. No Laravel or product runtime lane is in scope.
## Proportionality Review
- **New source of truth**: Website-local public route/content structure only.
- **New persisted entity/table/artifact**: No product runtime persistence.
- **New abstraction**: No product abstraction. Website presentation components are local to `apps/website`.
- **New enum/status family**: No.
- **New cross-domain UI framework/taxonomy**: No.
- **Narrowest correct implementation**: Delete/recreate only `apps/website`, keep root contracts, and prove with website smoke checks.