# Personas — SlpSoftware Production API ## Persona 1: Site Visitor | Attribute | Description | |---|---| | **Role** | Anonymous visitor of the public website (`test.slpsoftware.nl` / `slpsoftware.nl`) | | **Access Level** | None — unauthenticated, public | | **Goal** | Understand what services/packages are on offer, their price and what's included, so they can decide which one fits their needs and get in touch. | | **Pain Points** | A broken or empty "Drie manieren om te starten" section erodes trust before the visitor even reaches the contact form. | | **Technical Context** | Interacts only through the existing React frontend (external, read-only reference workspace) — never calls the API directly. All API behavior is experienced indirectly through what the frontend renders. | | **Relationship to this feature** | Consumes `GET /api/v1/offerings` (FR-6) indirectly. Never touches the admin CRUD (FR-7). | ## Persona 2: CMS Administrator | Attribute | Description | |---|---| | **Role** | Authenticated user holding the `Administrator` role (or higher — `Owner`, per the existing role hierarchy) | | **Access Level** | `AdminOnly` policy — full CRUD access to offerings via the admin SPA under `/admin` | | **Goal** | Keep the list of offerings shown on the website accurate and up to date (pricing, features, copy) without needing a code deploy, and control which one is highlighted as "most chosen". | | **Pain Points** | Today this content is hardcoded in the frontend's `content.ts` — any change requires a frontend deploy. This feature removes that dependency. | | **Technical Context** | Uses the existing admin SPA (already served under `/admin` by the same Client API, per the shared hosting pipeline). Not a developer — needs a UI, not direct API/database access. | | **UI Language Note** | The existing admin SPA already ships with `nl`/`en` i18n locales (`frontend/src/i18n/locales/`), where the `Administrator` role is already labeled `"Beheerder"` in Dutch. This persona's documentation name ("CMS Administrator") is the English documentation term; the on-screen label the persona actually sees follows the existing i18n setup and needs no new translation work. | | **Relationship to this feature** | Sole user of the new admin CRUD (FR-7): create, edit, delete, reorder offerings, and control the `featured` flag. | --- **2 personas**, matching the two distinct access levels established in requirements.md (public/anonymous vs. `AdminOnly`).