Skip to content

Feedback Board

Overview

The Feedback Board is a public product-feedback forum at /feedback — a place for anyone using Otera Health to post feature requests and bug reports, vote on other people's posts, discuss them in comments, and follow their status as the team works through them.

Key design decisions:

  • Public and unauthenticated. The board is reachable without logging in. Therapists, patients, and anonymous visitors can all read, post, vote, and comment.
  • Cross-tenant. Unlike almost everything else in the platform, feedback posts are not scoped to a tenant. Everyone sees the same board, so duplicate requests from different clinics converge on one thread. The originating tenant and domain are recorded on each post for the team's context only, and are never shown publicly.
  • No feature flag. The board is live for every deployment; there is nothing to enable per tenant.
  • Attribution is by display name, not account. Posts carry a free-text author name (prefilled for logged-in users). Emails are optional and only used to notify the author of status changes.

Not the same as patient–therapist feedback

Patient–Therapist Feedback is a separate feature — structured feedback cards exchanged inside a patient's message thread. This page is about the public product feedback forum.

For the data model, endpoints, storage pipeline, and abuse controls, see Feedback Board internals.

Browsing the Board

The board index (/feedback) lists posts with:

  • Sort tabs — Trending (default), Top, New. Trending ranks the most recent 500 posts by a decay formula, (score + 1) / (ageDays + 2)^1.5, so a post with a burst of recent votes outranks an older post with a higher raw total. Top sorts by net score; New sorts by creation date.
  • Category filter — Feature request, Bug, General.
  • Status filter — Open, Planned, In progress, Completed, Declined.
  • Search — a debounced (300 ms) text search over post titles and bodies.
  • Pagination — 20 posts at a time with a Load more button.

Pinned posts always float to the top regardless of sort. Hidden and deleted posts never appear.

Posting

The New post button opens a composer with:

Field Rules
Category Feature request / Bug / General
Title 3–120 characters
Body 10–5,000 characters
Display name 1–50 characters
Email Optional, up to 255 characters
Notify me about updates Checkbox, only meaningful when an email is given
Attachments Up to 5 files

For logged-in users the display name is prefilled as FirstName L. and the email is taken from the session. Anonymous visitors have their chosen name remembered in the browser so they don't retype it on the next post.

Voting

Every post can be voted up or down, from both the list and the detail page. The interaction is a toggle:

  • Voting the same direction again removes your vote.
  • Voting the opposite direction switches it.

The UI updates optimistically and reconciles with the server response. Logged-in users vote as their account; anonymous visitors are identified by a persistent per-browser device key. If a visitor later logs in, their account identity takes precedence.

Comments

Each post has a comment thread — up to 100 comments, oldest first, with an inline composer below. Comments from the Otera Health team are badged as official. Admins can delete individual comments directly from the post page.

Attachments

Screenshots and screen recordings are usually the fastest way to describe a bug, so posts accept up to five attachments:

Type Formats Max size
Images JPEG, PNG, GIF, WebP 10 MB
Documents PDF, DOC, DOCX, XLS, XLSX, TXT 25 MB
Video MP4, QuickTime, WebM 100 MB

Uploads show a per-file progress bar. On the post page, images render as a gallery grid, videos play inline, and documents appear as download links. Files are stored privately and served through short-lived signed links, so an attachment URL cannot be shared or indexed.

Statuses and Official Responses

The team moves each post through a status:

Status Meaning
Open Received, not yet triaged
Planned Accepted and scheduled
In progress Being built
Completed Shipped
Declined Not something we plan to do

A post can also carry an official response — a written reply from the team, shown in a highlighted block above the comment thread. When an author supplied an email and opted into updates, a status change or a new/edited official response sends them an email with the current status and the response text, linking back to the post. The email arrives in Russian on the Okta Health deployment and in English on Otera Health.

Where to Find It

Surface Entry point
Web header Avatar dropdown → Feedback
Web header (mobile) Mobile menu → Feedback
Marketing site Footer → Feedback & Feature Requests
Profile page Give feedback card
Contact page Callout routing product ideas and bugs to the board

Individual post pages are server-rendered so that links shared in Slack or email unfurl with the post title and body.

Admin Moderation

Admins get a dedicated management page at /admin/feedback — see Admin Panel and Feedback Board internals for details. In short, admins can filter across live/hidden/deleted posts, change category and status inline, pin posts, write official responses (optionally emailing the author), hide posts from public view, and soft-delete posts and comments.

Key Files

File Role
OktaPT-FE/pages/feedback/index.tsx Board index — filters, sorting, pagination, optimistic voting
OktaPT-FE/pages/feedback/[id].tsx Post detail — attachments, official response, comment thread
OktaPT-FE/pages/admin/feedback.tsx Admin moderation table and response modal
OktaPT-FE/components/feedback/NewPostModal.tsx Post composer
OktaPT-FE/components/feedback/AttachmentUploader.tsx Multi-file upload with progress and previews
OktaPT-FE/components/feedback/AttachmentGallery.tsx Image grid, inline video player, document links
OktaPT-FE/components/feedback/PostCard.tsx List row
OktaPT-FE/components/feedback/VoteButton.tsx Up/down vote control
OktaPT-FE/components/feedback/FeedbackFilterBar.tsx Sort tabs, category/status filters, search
OktaPT-FE/components/feedback/CommentList.tsx, CommentComposer.tsx Comment thread
OktaPT-FE/components/feedback/AdminResponseBlock.tsx Official response block
OktaPT-FE/components/profile/GiveFeedback.tsx Profile entry card
OktaPT-FE/lib/api/feedbackApi.ts Typed API client
OktaPT-FE/lib/utils/feedbackUpload.ts Client-side validation and upload with progress
OktaPT-FE/lib/utils/feedbackDevice.ts Anonymous device key and remembered author name
OktaPT-API/src/routes/feedback/ Router, public and admin controllers, validators
OktaPT-API/src/services/feedbackBoardService.ts All database access, trending ranking, vote transactions
OktaPT-API/src/services/feedbackForumNotifier.ts Team alert on new posts, status email to authors