## Summary - add the localized evaluation-readiness route pair at `/evaluierung` and `/en/evaluation` with a shared page component - wire homepage, platform, trust, review-pack, use-case, footer, and locale-switcher discovery paths into the new evaluation surface - add smoke coverage plus full Spec Kit artifacts for the evaluation, procurement, and rollout readiness feature ## Validation - `corepack pnpm --filter @tenantatlas/website build` - `WEBSITE_PORT=4322 corepack pnpm --filter @tenantatlas/website test tests/smoke/public-routes.spec.ts` - `WEBSITE_PORT=4323 corepack pnpm --filter @tenantatlas/website test tests/smoke/interaction.spec.ts` Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #408
99 lines
6.5 KiB
Markdown
99 lines
6.5 KiB
Markdown
# Research: Evaluation, Procurement & Rollout Readiness Website Surface
|
|
|
|
## Decision: Use `/evaluierung` and `/en/evaluation`
|
|
|
|
**Rationale**: The current public website already uses root-level buyer and commercial routes such as `/contact`, `/pricing`, and `/trust`, with English counterparts under `/en/*`. The evaluation journey spans demo, pilot, trust, and procurement readiness rather than one product feature, so it fits the top-level buyer-route family better than a nested `/platform/*` path.
|
|
|
|
**Alternatives considered**:
|
|
|
|
- `/platform/evaluation`: too tightly nested under product detail for a broader buyer-readiness flow.
|
|
- `/procurement`: too narrow relative to evaluation and rollout readiness.
|
|
- `/start` or `/demo-pilot`: weaker SEO and weaker alignment with the existing public route family.
|
|
|
|
## Decision: Reuse the localized thin-route plus shared-page-component pattern
|
|
|
|
**Rationale**: Existing public pages already use thin locale route files plus shared page components, for example `platform.astro`, `trust.astro`, `contact.astro`, and their English wrappers. The evaluation page is section-heavy in both German and English, so one shared `EvaluationPage.astro` is the narrowest way to avoid duplicating large amounts of markup.
|
|
|
|
**Alternatives considered**:
|
|
|
|
- Duplicate full German and English route markup: acceptable, but repetitive and harder to maintain.
|
|
- MDX/docs content route: mismatched with the current marketing-page CTA and metadata pattern.
|
|
- Inline-only homepage or platform section: weaker SEO, weaker smoke coverage, and weaker discoverability.
|
|
|
|
## Decision: Keep all localized page copy in `site-copy.ts`
|
|
|
|
**Rationale**: The website already centralizes public copy, metadata, navigation labels, footer links, homepage copy, platform copy, trust copy, review-pack copy, and use-case copy in `apps/website/src/data_files/site-copy.ts`. Adding a dedicated `evaluation` section there keeps the new page aligned with the existing locale strategy and avoids a second content source.
|
|
|
|
**Alternatives considered**:
|
|
|
|
- Page-local constants: simpler for one file, but weaker for German/English parity and CTA consistency.
|
|
- Separate JSON or YAML content file: splits public copy away from the current marketing-content source of truth.
|
|
- Runtime content source or CMS: out of scope for a website-only feature.
|
|
|
|
## Decision: Use `/contact` as the real conversion path for demo, pilot, and security-document requests
|
|
|
|
**Rationale**: The existing public site already routes buyer-facing demo and walkthrough CTAs to `/contact` and `/en/contact`. The current public CTA pattern is route-based rather than `mailto:`-based, so `Demo buchen`, `Pilot anfragen`, and `Security-Unterlagen anfragen` should all map to the same real contact destination unless implementation discovers another real route.
|
|
|
|
**Alternatives considered**:
|
|
|
|
- `mailto:` links: technically possible, but not the prevailing public CTA pattern.
|
|
- Fake demo-booking widget: explicitly forbidden.
|
|
- New dedicated request form route: out of scope unless it already exists.
|
|
|
|
## Decision: Keep discovery contextual and global, but skip a new main-nav item
|
|
|
|
**Rationale**: The current main nav is already dense. The stronger discovery path is contextual: homepage teaser, platform-page teaser, review-pack page crosslink, MSP page crosslink, Mittelstand page crosslink, and a footer link for global reachability.
|
|
|
|
**Alternatives considered**:
|
|
|
|
- Main-nav item: globally visible, but too expensive for current IA density.
|
|
- Footer only: too weak for a commercially important page.
|
|
- Homepage/platform only: helpful, but weaker for audience-specific discovery.
|
|
|
|
## Decision: Reuse existing smoke helpers and route metadata inventory as the narrowest proof
|
|
|
|
**Rationale**: `apps/website/tests/smoke/public-routes.spec.ts` and `apps/website/tests/smoke/smoke-helpers.ts` already validate route rendering, metadata, placeholder-link bans, forbidden public claims, trust handoffs, and layout stability. Extending those tests is the narrowest proof for this feature.
|
|
|
|
**Alternatives considered**:
|
|
|
|
- Manual-only browser review: insufficient for metadata and claim-guardrail regressions.
|
|
- New unit tests for copy objects: more brittle than public-route smoke for this use case.
|
|
- Platform-side tests: wrong layer because `apps/platform` is explicitly out of scope.
|
|
|
|
## Decision: Use only existing website commands for validation
|
|
|
|
**Rationale**: `apps/website/package.json` currently exposes `build`, `test`, `test:smoke`, `format:check`, and `preview`. The plan must not invent a `check` script because `astro check` already runs inside `build`.
|
|
|
|
**Alternatives considered**:
|
|
|
|
- `pnpm --filter @tenantatlas/website check`: not present.
|
|
- Root script changes: out of scope and would break workspace contracts.
|
|
- Platform/Sail validation: wrong scope for a static website-only page.
|
|
|
|
## Decision: Treat static claim scans as implementation blockers
|
|
|
|
**Rationale**: The main risk in this feature is overclaiming rather than runtime breakage. Static scans over `apps/website/src`, `apps/website/public`, and optionally `apps/website/dist` should block placeholder links, internal architecture jargon, false legal or provider claims, fake self-service promises, and invented downloads.
|
|
|
|
**Alternatives considered**:
|
|
|
|
- Code review only: too easy to miss metadata or generated-output regressions.
|
|
- New custom linter: too heavy for one bounded website feature.
|
|
- Placeholder-link scan only: insufficient because the main risk is claim language.
|
|
|
|
## Decision: Reuse existing trust and review-story routes as adjacent handoffs
|
|
|
|
**Rationale**: `/trust`, `/en/trust`, `/platform/review-packs`, and their locale-aware discovery surfaces already exist today. They are the safest real destinations for trust, security, privacy, and review-story follow-up questions from the new page.
|
|
|
|
**Alternatives considered**:
|
|
|
|
- Omit trust and review crosslinks: safer, but weaker than the spec goal of connecting evaluation readiness to adjacent proof surfaces.
|
|
- Invent a security-pack download or procurement portal route: explicitly forbidden.
|
|
|
|
## Decision: Keep the docs evaluation checklist as documentation, not as the feature route
|
|
|
|
**Rationale**: The docs route `/guides/first-project-checklist/` already touches evaluation language, but it is a documentation asset rather than a buyer-facing public conversion page. The new route should sit in the marketing/site IA, not inside docs.
|
|
|
|
**Alternatives considered**:
|
|
|
|
- Reusing the docs route as the public destination: wrong tone, weaker CTA handling, and weaker buyer-path visibility.
|
|
- Linking only to docs from existing marketing pages: too indirect for the primary sales goal. |