AI text suggestions
Press AI text on any section to open a dialog that generates a block of lesson text about that section's title. The flow:
- The section title is used as the subject — there's no separate prompt to fill in.
- A Cloudflare Turnstile widget verifies the request is coming from a real browser on our domain.
- The verified token, subject, and document title are POSTed to the companion
Cloudflare Worker (
apps/api), which re-checks the token server-side before doing any AI work and returns the generated text. - The generated text is shown for review; pressing Insert adds it as a new text block in the section, ready to edit.
The Worker caches text suggestions, so asking about the same subject again
returns the same answer instantly without a billable AI call. A signed-in
user who doesn't like a suggestion can thumbs-down it: that calls the
Worker's POST /ai-text/dislike (gated by a Supabase JWT, like publishing),
which evicts the cached answer so the next try is written fresh. After a
dislike the dialog offers an immediate Generate fresh from the now-cleared
cache. Sign-in is required because the action mutates the shared server cache.
This feature requires two environment variables (see Getting started). The
Worker lives alongside this app in the monorepo at apps/api; the frontend only
talks to its HTTP endpoint.