## 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
65 lines
4.3 KiB
Markdown
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.
|