Help centre Families Coaches Support

Littles Baby Tracker

Help for families and coaches

Site Tools


technical:features:28_faqs_feedback_and_support

28 — FAQs, feedback and support

Technical reference. For task-based help, see the corresponding user guide.
Documentation status: reviewed against implementation · Reviewed: 2026-07-21 · Primary users: family and coach (tickets: coach only) · Surfaces: mobile web, coach portal and platform API

Purpose

Support is a set of deliberately different channels: published self-service FAQs, one-way product feedback, public login help, configured email contact, and a threaded support-ticket inbox for coaches. The UI must not imply that every channel has the same reply or role coverage.

Entry points

Persona/surface Entry points
Family mobile /family/support, /family/faqs, /family/feedback, external user-guide link and login-screen help after repeated failure.
Coach mobile /coach/support, /coach/faqs, /coach/feedback and external user-guide link.
Coach portal Support overview → User guides, Feedback, Tickets, FAQs or Contact; unread ticket count appears in navigation.
Support owner Admin support-ticket APIs and FAQ publishing data outside the coach portal.

FAQs

  1. GET /support/faqs?audience=family|coach returns published entries applicable to the requested audience (including both), in configured display order.
  2. The platform requires authentication. Families may request the family audience; coaches may request coach or family guidance; super-admin can request either.
  3. Mobile presents an accordion with loading, error and no-published-FAQ states.
  4. The coach portal requests coach FAQs, supports text search and topic filtering, initially shows five matches, and offers Show all/Show fewer.
  5. FAQ content is read-only in the coach portal.

Product feedback

Submission

  1. Family route: POST /app-feedback; coach route: POST /coach/app-feedback.
  2. The user selects General, Bug, Feature or Content, then enters 5–2,000 characters.
  3. Device platform and application version are attached when available to improve triage.
  4. You may contact me controls whether support may use the account email to follow up.
  5. Success replaces the form with a receipt state; failure preserves a retryable form.

Channel semantics

Feedback is a one-way product input. The submitter does not receive a thread, status timeline or in-app support reply. A user who needs a conversation should use the available contact or ticket channel.

Login help

  1. After repeated sign-in failure, the login screen can submit POST /auth/login-support without an authenticated session.
  2. The request requires a valid email and 5–2,000 characters of detail and can include attempt/device/app context.
  3. The endpoint is rate-limited and returns a neutral receipt so it does not disclose whether an account exists.
  4. Login help is operational recovery, not an alternate authentication mechanism.

Contact support

Mobile support opens a mailto: link to VITE_SUPPORT_EMAIL or the product fallback address, with a role-appropriate subject. If the device has no mail client, the operating system/browser controls the failure state; no ticket is silently created.

Public user guides

  1. The coach portal uses an HTTPS anchor with target=“_blank” and rel=“noopener noreferrer”, preserving the current portal session in its existing tab.
  2. Family and coach mobile Support screens call openExternalUrl, which sends external.open through the native bridge. The wrapper delegates to the operating system with React Native Linking.openURL, so the guide is not loaded inside the app WebView.
  3. Browser-only mobile development falls back to window.open(…, “_blank”, “noopener,noreferrer”).
  4. A false external-open result leaves the Support screen available and shows an inline retryable error.
  5. The guides are public; no application access token, DokuWiki credential or session value is appended to the URL.

Coach support tickets

Create and review

  1. A coach creates a ticket with category general, account, billing, technical or clientAccess.
  2. Subject is 3–140 characters and the first message is 1–4,000 characters.
  3. The portal lists/searches tickets and offers Active, All and Resolved views plus open/in-progress/resolved summaries.
  4. Statuses are open, inProgress, done and archived.

Conversation, unread and lifecycle

  1. Selecting a ticket loads the non-internal chronological thread and marks support-authored messages seen.
  2. Unread counts include only non-internal support messages newer than the coach's coachLastSeenAt.
  3. A coach can reply to open, in-progress or done tickets. Replying to done reopens it as open and clears resolvedAt.
  4. An owner/support reply to done changes it to inProgress.
  5. Archived tickets cannot receive another message.
  6. Configured transactional email may notify internal support on coach activity and the coach on support replies; email delivery is operationally best-effort.

Validation and user-visible states

State Behaviour
No FAQs/matches Audience-appropriate empty message; filters can be cleared.
FAQ load error Retryable API error; other support channels remain available.
Invalid feedback/ticket Inline length/category validation prevents submission.
Feedback accepted Clear confirmation; no false threaded-ticket promise.
Ticket unread Badge/count persists until the ticket is opened/seen.
Done ticket reply Ticket reopens to open.
Archived ticket Thread remains historical; reply is disabled/rejected.
Login help throttled Neutral failure/receipt handling does not reveal account state.
User guides cannot open Support remains visible and mobile shows an inline retryable error.

Platform API contract

Method and route Purpose
GET /support/faqs Read published FAQs for an authorized audience.
POST /app-feedback Submit family feedback.
POST /coach/app-feedback Submit coach feedback.
POST /auth/login-support Submit rate-limited unauthenticated login help.
GET /coach/support-tickets List the actor coach's tickets.
GET /coach/support-tickets/unread-count Aggregate unseen support replies.
POST /coach/support-tickets Create a coach ticket.
POST /coach/support-tickets/:id/messages Add coach reply; reopen a done ticket.
POST /coach/support-tickets/:id/seen Update the actor's seen watermark.
GET/PATCH/POST /admin/support-tickets… Owner/support list, status and reply operations.

Authorization and privacy

  • Ticket list/read/reply is limited to the coach who created the ticket; owner/support APIs require super-admin.
  • Internal support messages are filtered from the coach presenter and do not inflate coach unread counts.
  • Although the shared ticket model contains a sourceRole capable of representing family, there is currently no family ticket route or UI. Families use feedback, FAQs, login help or contact email.
  • Contact consent is stored with feedback and must be honored before follow-up using the account email.
  • Login-help responses are deliberately non-enumerating and rate limited.
Do not advertise support tickets to family users yet. A broad domain type is not a user-facing capability; the implemented ticket routes enforce a coach actor and ownership of the thread.

Acceptance checklist

  1. [ ] FAQ audience and published-state filters are enforced server-side.
  2. [ ] Search/topic/show-more states work without changing FAQ authorization.
  3. [ ] Feedback enforces category, 5–2,000 characters and contact consent.
  4. [ ] Login help is rate-limited, neutral and usable while signed out.
  5. [ ] Ticket validation, filters, unread watermark and status summaries agree with API data.
  6. [ ] Replying to done reopens; archived reply is rejected.
  7. [ ] Coach sees only their tickets and no internal support message.
  8. [ ] Family UI makes no ticket-thread promise.
  9. [ ] Admin opens User guides in a new tab; family and coach mobile use the native external-browser bridge.
  10. [ ] User-guide URLs contain no application credential or account context.

Source evidence

  • Mobile web: mobile-web/src/routes/SupportScreen.tsx, mobile-web/src/routes/AppFeedbackScreen.tsx, mobile-web/src/api/login-support-email.ts, mobile-web/src/App.tsx
  • Coach portal: admin-web/src/routes/SupportPanel.tsx, admin-web/src/routes/SupportTicketsPanel.tsx, admin-web/src/routes/FAQsContent.tsx
  • Platform: platform/packages/shared/src/support-faqs.ts, support-tickets.ts, app-feedback.ts, platform/apps/api/src/routes/support-faq-routes.ts, platform/apps/api/src/routes/auth-routes.ts, platform/apps/api/src/routes/coach-routes.ts, platform/apps/api/src/services/support-ticket-service.ts