Implements website feature branch `407-msp-mittelstand-use-case-pages` into `website-dev`. Summary: - add German and English MSP and internal IT use-case landing pages - expose localized buyer-path teasers from the homepage and platform page - extend smoke coverage for the new routes, navigation links, metadata, and conservative claim checks - include the aligned Spec Kit artifacts under `specs/407-msp-mittelstand-use-case-pages` Validation: - `cd apps/website && corepack pnpm build` - `cd apps/website && corepack pnpm test -- tests/smoke/public-routes.spec.ts tests/smoke/interaction.spec.ts` Follow-up integration path after merge: `website-dev` -> `dev`. Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #402
277 lines
16 KiB
Markdown
277 lines
16 KiB
Markdown
# Tasks: MSP & Mittelstand Use-Case Pages
|
|
|
|
**Input**: Design documents from `/specs/407-msp-mittelstand-use-case-pages/`
|
|
**Prerequisites**: `plan.md` (required), `spec.md` (required)
|
|
|
|
**Tests**: Runtime behavior changes are in scope for `apps/website`, so browser smoke and route/metadata assertions are required.
|
|
|
|
## Test Governance Checklist
|
|
|
|
- [x] Lane assignment is named and is the narrowest sufficient proof for the changed behavior.
|
|
- [x] New or changed tests stay in the smallest honest family, and any browser addition is explicit.
|
|
- [x] Shared helpers and fixtures stay cheap by default; any widening is isolated or documented.
|
|
- [x] Planned validation commands cover the change without unrelated lane cost.
|
|
- [x] Surface test profile is explicit (`Browser`, `public website`).
|
|
- [x] Any escalation or follow-up spec decision is documented in the PR notes.
|
|
|
|
## Phase 1: Setup (Shared Infrastructure)
|
|
|
|
**Purpose**: Confirm repository contracts, discover concrete website integration points, and define scope-safe implementation boundaries.
|
|
|
|
- [x] T001 Confirm active feature branch and clean target scope in `specs/407-msp-mittelstand-use-case-pages/spec.md`
|
|
- [x] T002 Verify root workspace contracts in `package.json`
|
|
- [x] T003 Verify workspace package contracts in `apps/website/package.json`
|
|
- [x] T004 Map current route and locale entrypoints in `apps/website/src/pages/index.astro` and `apps/website/src/pages/en/index.astro`
|
|
- [x] T005 [P] Map homepage composition surface in `apps/website/src/components/pages/HomePage.astro`
|
|
- [x] T006 [P] Map navigation/footer source of truth in `apps/website/src/data_files/site-copy.ts` and `apps/website/src/utils/navigation.ts`
|
|
|
|
---
|
|
|
|
## Phase 2: Foundational (Blocking Prerequisites)
|
|
|
|
**Purpose**: Establish IA decision, shared copy scaffolding, and smoke-test hooks used by all user stories.
|
|
|
|
**⚠️ CRITICAL**: No user story work should begin before this phase is complete.
|
|
|
|
- [x] T007 Decide and document route family in `specs/407-msp-mittelstand-use-case-pages/plan.md` (selected: `/use-cases/...`)
|
|
- [x] T008 Add use-case copy schema for DE locale in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T009 [P] Add use-case copy schema for EN locale in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T010 Add nav/footer link slots for use-case discoverability in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T011 [P] Extend route smoke inventory for new pages in `apps/website/tests/smoke/smoke-helpers.ts`
|
|
- [x] T012 Add baseline route metadata placeholders for new pages in `apps/website/tests/smoke/public-routes.spec.ts`
|
|
- [x] T013 Capture static-claim scan command set in `specs/407-msp-mittelstand-use-case-pages/plan.md`
|
|
|
|
**Checkpoint**: Foundation is ready for story implementation.
|
|
|
|
---
|
|
|
|
## Phase 3: User Story 1 - MSP Buyer Self-Qualifies Fast (Priority: P1) 🎯 MVP
|
|
|
|
**Goal**: Deliver an MSP-specific page that clearly sells repeatable Microsoft 365 governance services and boundaries.
|
|
|
|
**Independent Test**: Open `/use-cases/msp`, verify hero/pain/outcomes/workflow/capabilities/boundary/final CTA, and confirm real links plus no unsupported claims.
|
|
|
|
### Tests for User Story 1
|
|
|
|
- [x] T014 [P] [US1] Add MSP route title/description assertions in `apps/website/tests/smoke/public-routes.spec.ts`
|
|
- [x] T015 [P] [US1] Add MSP content-intent assertions in `apps/website/tests/smoke/interaction.spec.ts`
|
|
|
|
### Implementation for User Story 1
|
|
|
|
- [x] T016 [US1] Create MSP route page in `apps/website/src/pages/use-cases/msp.astro`
|
|
- [x] T017 [US1] Create EN MSP route page in `apps/website/src/pages/en/use-cases/msp.astro`
|
|
- [x] T018 [US1] Implement MSP hero copy and primary CTAs in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T019 [US1] Implement MSP pain section cards in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T020 [US1] Implement MSP outcomes section in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T021 [US1] Implement MSP workflow steps in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T022 [US1] Implement MSP capability cards and PSA boundary copy in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T023 [US1] Implement MSP trust teaser and final CTA with real destinations in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T024 [US1] Complete MSP page section rendering directly in `apps/website/src/pages/use-cases/msp.astro`
|
|
|
|
**Checkpoint**: User Story 1 is independently functional and demonstrable.
|
|
|
|
---
|
|
|
|
## Phase 4: User Story 2 - Internal IT Buyer Understands Control Value (Priority: P1)
|
|
|
|
**Goal**: Deliver a Mittelstand/Enterprise IT page focused on internal control, auditability, drift visibility, and recovery context.
|
|
|
|
**Independent Test**: Open `/use-cases/mittelstand`, verify stakeholder-specific value framing and differentiation from admin-center/helpdesk/automation tools.
|
|
|
|
### Tests for User Story 2
|
|
|
|
- [x] T025 [P] [US2] Add Mittelstand route title/description assertions in `apps/website/tests/smoke/public-routes.spec.ts`
|
|
- [x] T026 [P] [US2] Add Mittelstand content-intent assertions in `apps/website/tests/smoke/interaction.spec.ts`
|
|
|
|
### Implementation for User Story 2
|
|
|
|
- [x] T027 [US2] Create Mittelstand route page in `apps/website/src/pages/use-cases/mittelstand.astro`
|
|
- [x] T028 [US2] Create EN Mittelstand route page in `apps/website/src/pages/en/use-cases/mittelstand.astro`
|
|
- [x] T029 [US2] Implement Mittelstand hero copy and CTAs in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T030 [US2] Implement Mittelstand pain section cards in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T031 [US2] Implement Mittelstand outcomes section in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T032 [US2] Implement stakeholder cards (IT Ops, Security, IT-Leitung, Audit/Datenschutz) in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T033 [US2] Implement Mittelstand workflow steps in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T034 [US2] Implement differentiation and trust teaser copy in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T035 [US2] Implement Mittelstand final CTA with real destinations in `apps/website/src/data_files/site-copy.ts`
|
|
|
|
**Checkpoint**: User Story 2 is independently functional and demonstrable.
|
|
|
|
---
|
|
|
|
## Phase 5: User Story 3 - Public Visitors Reach Both Buyer Paths (Priority: P2)
|
|
|
|
**Goal**: Ensure both use-case pages are discoverable through homepage and existing IA without placeholder links.
|
|
|
|
**Independent Test**: From homepage plus nav/footer entry points, both use-case routes are reachable on desktop/mobile and all links resolve intentionally.
|
|
|
|
### Tests for User Story 3
|
|
|
|
- [x] T036 [P] [US3] Add homepage teaser-link assertions in `apps/website/tests/smoke/interaction.spec.ts`
|
|
- [x] T037 [P] [US3] Add navigation/footer intentional-link assertions for use-case routes in `apps/website/tests/smoke/public-routes.spec.ts`
|
|
|
|
### Implementation for User Story 3
|
|
|
|
- [x] T038 [US3] Add homepage use-case teaser section structure in `apps/website/src/components/pages/HomePage.astro`
|
|
- [x] T039 [US3] Add homepage MSP teaser copy and route mapping in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T040 [US3] Add homepage Mittelstand teaser copy and route mapping in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T041 [US3] Add DE navigation links for use cases in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T042 [US3] Add EN navigation links for use cases in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T043 [US3] Add DE footer links for use cases in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T044 [US3] Add EN footer links for use cases in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T045 [US3] Ensure localized href handling for new routes in `apps/website/src/i18n.ts`
|
|
- [x] T046 [US3] Validate no `href="#"` is introduced in use-case entrypoints by scanning `apps/website/src`
|
|
- [x] T068 [US3] Decide whether to add a compact platform teaser for use cases and record decision for FR-030 in `specs/407-msp-mittelstand-use-case-pages/plan.md`
|
|
- [x] T069 [US3] If platform teaser is enabled, add concise MSP/Enterprise links in `apps/website/src/components/pages/PlatformPage.astro` without duplicating full use-case copy
|
|
|
|
**Checkpoint**: User Story 3 is independently functional and demonstrable.
|
|
|
|
---
|
|
|
|
## Phase 6: User Story 4 - Buyers See Safe Claim Boundaries (Priority: P2)
|
|
|
|
**Goal**: Enforce copy and metadata guardrails so pages remain commercial but do not overclaim.
|
|
|
|
**Independent Test**: Source and rendered pages pass forbidden-term scans and metadata/title checks for both use-case routes.
|
|
|
|
### Tests for User Story 4
|
|
|
|
- [x] T047 [P] [US4] Add forbidden-claim assertions for use-case routes in `apps/website/tests/smoke/public-routes.spec.ts`
|
|
- [x] T048 [P] [US4] Extend reusable forbidden-claim patterns if needed in `apps/website/tests/smoke/smoke-helpers.ts`
|
|
|
|
### Implementation for User Story 4
|
|
|
|
- [x] T049 [US4] Add DE metadata title/description strings for MSP and Mittelstand in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T050 [US4] Add EN metadata title/description strings for MSP and Mittelstand in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T051 [US4] Remove weak/internal phrasing from new copy sections in `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T052 [US4] Enforce MSP boundary claims in route content at `apps/website/src/pages/use-cases/msp.astro`
|
|
- [x] T053 [US4] Enforce Mittelstand boundary claims in route content at `apps/website/src/pages/use-cases/mittelstand.astro`
|
|
- [x] T054 [US4] Run static forbidden-term scans on `apps/website/src` and `apps/website/public`
|
|
- [x] T055 [US4] If `apps/website/dist` is updated, run forbidden-term scans on `apps/website/dist`
|
|
- [x] T056 [US4] Document any intentional scan hit rationale in `specs/407-msp-mittelstand-use-case-pages/plan.md`
|
|
- [x] T057 [US4] Confirm no fake proof artifacts were added by reviewing `apps/website/public` and `apps/website/src/images`
|
|
- [x] T058 [US4] Confirm Intune remains first strong domain but not full category story in new use-case copy within `apps/website/src/data_files/site-copy.ts`
|
|
- [x] T070 [US4] Execute a 60-second MSP comprehension check (SC-001) and record pass/fail notes in `specs/407-msp-mittelstand-use-case-pages/plan.md`
|
|
- [x] T071 [US4] Execute a 60-second Enterprise IT comprehension check (SC-002) and record pass/fail notes in `specs/407-msp-mittelstand-use-case-pages/plan.md`
|
|
|
|
**Checkpoint**: User Story 4 is independently functional and demonstrable.
|
|
|
|
---
|
|
|
|
## Phase 7: Polish & Cross-Cutting Concerns
|
|
|
|
**Purpose**: Final validation, formatting, build/test execution, and close-out reporting.
|
|
|
|
- [x] T059 [P] Run formatting check using scripts in `apps/website/package.json` via `pnpm --filter @tenantatlas/website format:check`
|
|
- [x] T060 Run Astro/build validation for routes under `apps/website/src/pages` via `pnpm --filter @tenantatlas/website build`
|
|
- [x] T061 Run smoke suite defined in `apps/website/playwright.config.ts` via `pnpm --filter @tenantatlas/website test -- --grep smoke`
|
|
- [x] T062 Run route-level smoke in `apps/website/tests/smoke/public-routes.spec.ts` via `pnpm --filter @tenantatlas/website test tests/smoke/public-routes.spec.ts`
|
|
- [x] T063 Perform desktop browser smoke for `/use-cases/msp` and `/use-cases/mittelstand` in `apps/website/tests/smoke/interaction.spec.ts`
|
|
- [x] T064 Perform mobile viewport smoke for `/use-cases/msp` and `/use-cases/mittelstand` in `apps/website/tests/smoke/interaction.spec.ts`
|
|
- [x] T065 Confirm changed-file scope excludes `apps/platform/**` by reviewing `specs/407-msp-mittelstand-use-case-pages/tasks.md` against `git status --short`
|
|
- [x] T066 Record command results, route decision, and residual follow-ups in `specs/407-msp-mittelstand-use-case-pages/plan.md`
|
|
- [x] T067 Record active feature close-out summary in `specs/407-msp-mittelstand-use-case-pages/checklists/requirements.md`
|
|
|
|
---
|
|
|
|
## Dependencies & Execution Order
|
|
|
|
### Phase Dependencies
|
|
|
|
- **Setup (Phase 1)**: No dependencies, starts immediately.
|
|
- **Foundational (Phase 2)**: Depends on Setup completion and blocks story work.
|
|
- **User Stories (Phases 3-6)**: Depend on Foundational completion; US1 and US2 can run in parallel, then US3 and US4.
|
|
- **Polish (Phase 7)**: Depends on all selected user stories being complete.
|
|
|
|
### User Story Dependencies
|
|
|
|
- **US1 (P1)**: Starts after Phase 2, no dependency on other stories.
|
|
- **US2 (P1)**: Starts after Phase 2, no dependency on other stories.
|
|
- **US3 (P2)**: Depends on US1 and US2 routes existing.
|
|
- **US4 (P2)**: Depends on US1 and US2 content existing; can overlap with late US3 work.
|
|
|
|
### Within Each User Story
|
|
|
|
- Tests/tasks defining assertions are created before or alongside implementation and must fail before final pass.
|
|
- Route files and copy schema come before link wiring.
|
|
- Implementation completes before build/smoke validation.
|
|
|
|
### Parallel Opportunities
|
|
|
|
- Setup tasks marked `[P]` can run in parallel.
|
|
- Foundational test-hook and locale-copy tasks marked `[P]` can run in parallel.
|
|
- US1 and US2 can be developed in parallel once foundational tasks complete.
|
|
- US3 nav and footer link tasks can run in parallel across locales.
|
|
- US4 metadata and forbidden-term scan tasks marked `[P]` can run in parallel.
|
|
|
|
---
|
|
|
|
## Parallel Example: User Story 1
|
|
|
|
```bash
|
|
Task: "T014 [US1] Add MSP route title/description assertions in apps/website/tests/smoke/public-routes.spec.ts"
|
|
Task: "T015 [US1] Add MSP content-intent assertions in apps/website/tests/smoke/interaction.spec.ts"
|
|
Task: "T016 [US1] Create MSP route page in apps/website/src/pages/use-cases/msp.astro"
|
|
Task: "T017 [US1] Create EN MSP route page in apps/website/src/pages/en/use-cases/msp.astro"
|
|
```
|
|
|
|
## Parallel Example: User Story 2
|
|
|
|
```bash
|
|
Task: "T025 [US2] Add Mittelstand route title/description assertions in apps/website/tests/smoke/public-routes.spec.ts"
|
|
Task: "T026 [US2] Add Mittelstand content-intent assertions in apps/website/tests/smoke/interaction.spec.ts"
|
|
Task: "T027 [US2] Create Mittelstand route page in apps/website/src/pages/use-cases/mittelstand.astro"
|
|
Task: "T028 [US2] Create EN Mittelstand route page in apps/website/src/pages/en/use-cases/mittelstand.astro"
|
|
```
|
|
|
|
## Parallel Example: User Story 3
|
|
|
|
```bash
|
|
Task: "T041 [US3] Add DE navigation links for use cases in apps/website/src/data_files/site-copy.ts"
|
|
Task: "T042 [US3] Add EN navigation links for use cases in apps/website/src/data_files/site-copy.ts"
|
|
Task: "T043 [US3] Add DE footer links for use cases in apps/website/src/data_files/site-copy.ts"
|
|
Task: "T044 [US3] Add EN footer links for use cases in apps/website/src/data_files/site-copy.ts"
|
|
```
|
|
|
|
## Parallel Example: User Story 4
|
|
|
|
```bash
|
|
Task: "T047 [US4] Add forbidden-claim assertions for use-case routes in apps/website/tests/smoke/public-routes.spec.ts"
|
|
Task: "T048 [US4] Extend reusable forbidden-claim patterns if needed in apps/website/tests/smoke/smoke-helpers.ts"
|
|
Task: "T049 [US4] Add DE metadata title/description strings for MSP and Mittelstand in apps/website/src/data_files/site-copy.ts"
|
|
Task: "T050 [US4] Add EN metadata title/description strings for MSP and Mittelstand in apps/website/src/data_files/site-copy.ts"
|
|
```
|
|
|
|
---
|
|
|
|
## Implementation Strategy
|
|
|
|
### MVP First (US1 Only)
|
|
|
|
1. Complete Phase 1 (Setup).
|
|
2. Complete Phase 2 (Foundational).
|
|
3. Complete Phase 3 (US1).
|
|
4. Validate US1 independently with route metadata plus smoke assertions.
|
|
5. Demo/deploy MVP slice if desired.
|
|
|
|
### Incremental Delivery
|
|
|
|
1. Finish Setup + Foundational once.
|
|
2. Deliver US1 (MSP page), validate, and ship.
|
|
3. Deliver US2 (Mittelstand page), validate, and ship.
|
|
4. Deliver US3 (discoverability), validate, and ship.
|
|
5. Deliver US4 (claim boundaries), validate, and ship.
|
|
|
|
### Suggested MVP Scope
|
|
|
|
- **MVP**: User Story 1 only (MSP use-case page), because it delivers a complete buyer-facing value slice with independent validation.
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
- `[P]` tasks touch different files and can run in parallel.
|
|
- `[USx]` tags map every story-phase task to a specific user story.
|
|
- All file paths target `apps/website` or `specs/407-msp-mittelstand-use-case-pages` to preserve scope.
|
|
- No task introduces `apps/platform` runtime changes or root workspace contract changes.
|