99 lines
3.7 KiB
Markdown
99 lines
3.7 KiB
Markdown
# Platform Functional Standards
|
|
|
|
**Revision:** 2026-04-20
|
|
|
|
Every Druppie-created application inherits these functional defaults. The
|
|
Business Analyst treats them as givens during elicitation and only writes
|
|
specific requirements into the FD when the user needs something different.
|
|
|
|
The user sees this file linked from every `functional-design.md`. If anything
|
|
here doesn't fit a project, the BA documents the deviation in the FD.
|
|
|
|
## 1. Language
|
|
|
|
- User-facing text, HITL questions, and the functional design document
|
|
are written in the user's language by default. For Dutch public-sector
|
|
work that means Dutch.
|
|
- Error messages, empty states, and confirmation dialogs follow the same
|
|
language as the rest of the app.
|
|
|
|
## 2. Performance (user-visible)
|
|
|
|
- Pages load within **2 seconds** under normal conditions (home network,
|
|
reasonable payload).
|
|
- Interactive actions (save, submit, filter) acknowledge the user within
|
|
**1 second** — at minimum with a loading indicator if the real work
|
|
takes longer.
|
|
- Search / filter results appear within **2 seconds** for typical datasets.
|
|
- The app works acceptably for at least **25 concurrent users** without
|
|
visible slowdown.
|
|
|
|
Projects only write NFRs for performance when they need stricter numbers
|
|
than these (e.g. realtime, sub-100ms) or when a specific operation has an
|
|
unusual cost profile.
|
|
|
|
## 3. Responsiveness & device support
|
|
|
|
- Works on desktop (≥1280px), tablet, and mobile (down to 320px wide).
|
|
- Touch-friendly tap targets on mobile.
|
|
- No horizontal scrolling on any supported width.
|
|
|
|
## 4. Accessibility
|
|
|
|
- Keyboard navigation works for every interactive element.
|
|
- Color contrast meets WCAG 2.1 AA for text.
|
|
- Every form field has an associated label.
|
|
- Focus states are visible.
|
|
|
|
The BA does not elicit accessibility requirements for every project — they
|
|
are a given. The BA only asks if the user has explicit extra needs (e.g.
|
|
screen-reader-only users, high-contrast mode).
|
|
|
|
## 5. Error behaviour (user-visible)
|
|
|
|
- When something fails, the app shows a clear, human-readable message in
|
|
the user's language — never a stack trace, never an error code without
|
|
explanation.
|
|
- On partial failure, the rest of the app stays usable.
|
|
- Destructive actions ask for confirmation.
|
|
|
|
## 6. Authentication (user experience)
|
|
|
|
- Users log in via the Druppie platform (Keycloak). The project itself
|
|
does not show a login page, registration form, password-reset flow, or
|
|
role-management UI.
|
|
- The BA does NOT elicit login/password/role-management requirements.
|
|
If a user asks for project-specific identity features, the BA flags
|
|
that as a platform-standard deviation for the Architect to evaluate.
|
|
|
|
## 7. Cost and usage (user experience)
|
|
|
|
- Apps do not show LLM/model cost, token usage, or spend information to
|
|
users. Cost tracking is a platform concern.
|
|
|
|
## 8. Explicitly out of scope (functional)
|
|
|
|
These topics are platform-level and should NOT become FD requirements
|
|
unless the user explicitly wants a deviation:
|
|
|
|
- Login / signup / password reset screens
|
|
- User/role administration UI
|
|
- In-app billing or pricing pages
|
|
- Cost / token usage displays
|
|
- Notification preferences (platform handles notifications)
|
|
- GDPR data-export / right-to-be-forgotten flows (platform feature)
|
|
|
|
If the user wants one of these, document it in the FD under
|
|
*"Platform standard deviations"* with a short rationale — the Architect
|
|
will then build it explicitly.
|
|
|
|
## 9. Referencing this file in the FD
|
|
|
|
Every `functional-design.md` ends with a **Platform standards applied**
|
|
section linking back here with the revision the FD was written against:
|
|
|
|
> Platform standards applied: [docs/platform-functional-standards.md](./platform-functional-standards.md) rev 2026-04-20.
|
|
> Only deviations are listed below.
|
|
|
|
This keeps the user in the loop about what they're getting for free.
|