Skip to content

Real reviews after the first lesson, designs A, A, A, off by default (T-0898) - #97

Merged
sinhgiang merged 1 commit into
masterfrom
helme/real-reviews
Oct 24, 2026
Merged

sinhgiang merged 1 commit into
masterfrom
helme/real-reviews

Conversation

@sinhgiang

Copy link
Copy Markdown
Owner

What

T-0898: real reviews after a student's first lesson, built from the designs the owner chose (1A the email with five star links, 2A one card with stars, tags and a few words, 3A a summary card then the reviews) and the owner's rules (W-2747). OFF by default: with REVIEWS_FLOW not exactly on, no invitation goes out and nothing new shows; the old form, the old route and the old reviews list work as before. The full description, the rules and the steps to turn it on are in docs/reviews-flow.md.

  • Migration 027_reviews_flow.sql (written and tried on a throwaway Postgres, not run on the real database): new columns, one review per student per tutor, the tutor's old "all rights" policy on reviews becomes read-only, browser keys lose insert/update/delete on reviews, and a trigger keeps the rules even for the server's key (edit for 7 days, answer once, a review keeps its student, tutor, lesson and date). New table review_invites (row level security on, no policy).
  • Invitation: a daily run (10:00 UTC) mails the student the morning after their first lesson with a tutor; the five stars are links that only open the form; one reminder after three days; "Stop reminders" is remembered.
  • Review page /portal/<link>/review/<lesson>; on a profile a summary card and the list (name as "Maria K.", lessons taken, tags, the tutor's one answer; the signed-in tutor sees the answer box).
  • Rules in code and tests: only a student with a completed lesson that has taken place, reached by their own link; the tutor and student come from the database, never the body; a tutor answers only their own review, once.

Checked

  • 1592 tests, 0 fail. New: tests/reviews-flow.test.ts (rules, routes, invitation, pages, switch off and on; a mutation check without the ownership checks makes four fail), tests/reviews-flow-limits.test.ts, tests/reviews-flow-migration.test.ts (PGlite: idempotent, old reviews untouched, shape, 7 days, answer once, browser keys never write, a tutor reads only their own, nobody with a browser key reads the invitations), three profile tests. Typecheck, line-refs, build, lint of the new files: pass.
  • Run for real with the switch on (made-up data): opened the form from a star link, published, the review showed on the profile with "Maria K.", the form reopened in edit mode. Lighthouse accessibility, best practices, SEO 100 on the profile (phone and desktop) and 100 / 100 on the review page; the review page's SEO score is lower on purpose, it is a private page.

Limits

  • Migration 027 and the variable REVIEWS_FLOW=on are the owner's steps; nothing was run on the real database or on Vercel.
  • Light only: the student portal and the profile have no dark scheme today. Screenshots at 1440 and 390 are in the owner's waiting item.
  • The Privacy page does not yet say reviews are public with a first name and last initial (legal text, left to the owner).
  • Not measured on the real site; made-up data and a pretend Supabase.

Updates: not applicable while the switch is off (nobody sees a difference); an entry with a picture is written when it is turned on.

🤖 Generated with Claude Code

…OFF until REVIEWS_FLOW=on (T-0898)

Invitation mail with five star links after the first lesson, a one-card review form, a summary card and the tutor's one answer on the
profile. Migration 027 (written, not applied) holds the rules in the database. Old reviews and the old form are untouched while off.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Helme-Agent: toiuuram project agent
Helme-Account: claude-wp
Helme-Model: claude-sonnet-5-5
Helme-Session: 83c30d74-7a50-4367-9b08-1d05764b7358
@cursor

cursor Bot commented Oct 24, 2026

Copy link
Copy Markdown

Bugbot is paused — your team has an unpaid invoice

Bugbot is paused because your team has an unpaid invoice.

Pay it from the billing page in the Cursor dashboard and Bugbot resumes automatically.

(requestId: 237d7ddf-9611-4e6d-86ea-40e44e6bdcb6)

@vercel

vercel Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
tutafy Ready Ready Preview Oct 24, 2026 1:15am UTC

Request Review

@sinhgiang
sinhgiang merged commit db72f23 into master Oct 24, 2026
3 checks passed

This branch was successfully deployed

1 active deployment
Preview — 27dcf27f Deployed Oct 24, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant