# 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.