Settings

Connect a Supabase database so your data syncs across devices. See supabase-setup.md for the full walkthrough.

Cloud sync (Supabase)

Paste your Supabase Project URL and anon public key. They're stored in your browser's localStorage only.

Status: Not configured

Backup & restore

Supabase already backs you up daily (free tier = 7-day retention; Pro = point-in-time recovery). This card adds a one-click full export you can save anywhere as belt-and-suspenders, plus a restore button if something goes catastrophically wrong.

What's in the backup?
  • Students + notes + homework + sessions + invoices
  • Parent intakes (incl. converted ones)
  • College plans + linked Sheet URLs (the Sheets themselves stay in Drive)
  • Login events + revoked emails
  • Your local question bank edits

Restore is destructive — it deletes your current Supabase rows and inserts the backup's rows. Use only for true recovery, not casual snapshot-loading.

QA self-test

Runs the full workflow (intake → student → homework → college plan → portal access checks) using fake QA_TEST_-prefixed data, then cleans up. Useful after any change to verify nothing's broken.

The render preview lets you visually verify math (exponents, fractions, italics) and image-based questions look right — across stems, choices, passages.

Parent intake — public link

To email an intake form to a parent, you need a public URL where parent-intake.html is hosted. Easiest: push this folder to GitHub Pages or Netlify (both free). Paste that URL below — then the Students page gets a "Send intake link" button.

Status: Not set
How sending an intake link works

When you click Send intake link on the Students page, the website composes a mailto with a URL like:
{your public URL}/parent-intake.html?sb=…&ak=…
The sb + ak params embed your Supabase URL + anon (public) key so the parent's browser can submit directly. The anon key is designed to be public — RLS protects the actual data.

Zelle invoicing

Used by Money to turn unbilled sessions into an invoice, email it, and give the client a payment window. Zelle has no API — nothing is ever charged and no payment is ever auto-confirmed; you mark an invoice paid when the transfer lands. The handle below is printed on every invoice and in every invoice email, so it must be the address (or phone) clients actually Zelle money to.

Status: Not set
What else invoicing needs
  1. Email sending reuses the session-reminder web app (it sends from arishapirotutoring@gmail.com). Set its URL + secret on the Schedule page — Money reads the same two values. Redeploy that Apps Script after pasting the current apps-script/reminder-app.gs, which adds the send_invoice action.
  2. Cross-device sync of invoice details (invoice number, sent date, which sessions it covers) needs db-migration-invoice-zelle.sql run once in the Supabase SQL editor. Until then invoicing works, but those fields stay in this browser.

AI polish — Claude API key

Optional. Used by Session report builder to polish your questionnaire into a parent-ready report. Get a key at console.anthropic.com (≈ $0.01 per polished report). Stored only in this browser — never sent to the cloud sync.

Status: Not configured
Cloud-sync session reports + Common App checklists (optional)

Both of these tools store data in this browser's localStorage today — already backed up via "Export all" but not synced across devices. The cloud-sync code is wired up and just waiting for the tables to exist. To turn it on:

  1. Open the Supabase SQL editor.
  2. Run db-migration-session-reports.sql
  3. Run db-migration-commonapp-checklists.sql

Both files live in the repo root. After running them, every save here auto-pushes to Supabase and a fresh device sign-in pulls them down. The push silently no-ops on environments where the tables don't exist, so nothing breaks if you only run one of the migrations.

Google Apps Script — College planner, calendar sync, intake email

Deploys a tiny Google Apps Script web app under arishapirotutoring@gmail.com that powers three things: (1) College Planner Google Sheet + Doc creation, (2) Sessions & Invoices calendar sync, and (3) the auto-confirmation email parents receive after submitting the intake form. One-time setup (~5 min). See apps-script/SETUP.md for the walkthrough. Paste the deployed Web App URL below.

Status: Not configured