Odel
Softician Notary Exam Prep

Softician Notary Exam Prep

@realtorficoHTMLUpdated 5 days ago

Fetch real California Notary Public exam practice questions and grade answers in-chat.

Server endpointStreamable HTTPNo authProbed

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

examprep-api

Shared backend for examprep.softician.com (public) + examprep-admin.softician.com (admin). Cloudflare Worker + D1, no framework, no build step.

Setup (one-time, via Cloudflare dashboard — no local Wrangler on this machine)

  1. Workers & Pages > D1 > Create database examprep, run schema.sql in its Console tab.
  2. Paste the resulting database_id into wrangler.jsonc.
  3. Workers & Pages > Create > Workers > Import a repository (this repo) for git-connected deploy.
  4. Worker Settings > Variables & Secrets: TURNSTILE_SECRET, CF_ACCESS_TEAM_DOMAIN, CF_ACCESS_AUD.
  5. In each of the examprep / examprep-admin Pages projects: Settings > Bindings > add a Service Binding to this Worker (examprep-api), so their worker.js can call it same-origin without any public hostname on this Worker.

Tests

node --test test/progress-consistency.test.js — runs against an in-memory DB via Node's built-in node:sqlite (no wrangler/workerd needed, which matters since this repo can't run those locally on this machine). Currently just the progress-totals consistency check from the 2026-08-05 admin-vs-site counter bug; add more test files under test/ as needed.

Routes

Public (bearer token, minted by /redeem): /questions/next, /answer, /progress, /prefs. Admin (Cloudflare Access-gated): /console/codes, /console/codes/generate, /console/codes/revoke, /console/questions (+ create/update/delete/import), /console/stats.

See the architecture plan for the full design.