ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Observations, assessments, and leadership signals in one place—so your school can act with evidence.
EducationTypeScript · CSSGitHub @adamscourfieldOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Core platform + Students + On Call + Leave module foundations.
/tenant/on-call/new fast request form/tenant/on-call/feed daily feed with filters/tenant/on-call/[id] detail with SLT acknowledge/resolve actionsPOST /api/on-call/send creates request first, sends recipient email, keeps request if email fails/tenant/leave/request submit leave request/tenant/leave/calendar month view showing pending vs approved/tenant/leave/pending authoriser queue/tenant/leave/[id] request detail + approve paid/unpaid or deny/tenant/meetings upcoming/past list with mine/all scope/tenant/meetings/new meeting create form/tenant/meetings/[id] detail with notes + attendees + actions/tenant/meetings/actions my actions view with overdue/due soon highlighting/tenant/observe/new create structured 12-signal observation (leader/slt/admin)/tenant/observe/history filterable history with teacher-scope enforcement/tenant/observe/[id] read-only detail/tenant/students/tenant/students/import/tenant/students/import-subject-teachers/tenant/students/[id]/tenant/on-call/new/tenant/on-call/feed/tenant/on-call/[id]/tenant/leave/tenant/leave/request/tenant/leave/calendar/tenant/leave/pending/tenant/leave/[id]/tenant/meetings/tenant/meetings/new/tenant/meetings/[id]/tenant/meetings/actions/tenant/observe/tenant/observe/new/tenant/observe/history/tenant/observe/[id]POST /api/students/importPOST /api/students/import-subject-teachersPOST /api/cron/compute-student-flags (header: x-cron-secret)POST /api/on-call/sendnpm install
cp .env.example .env
npm run prisma:generate
npm run prisma:migrate
npm run prisma:seed
npm run dev
DATABASE_URLNEXTAUTH_URLNEXTAUTH_SECRETCRON_SECRETSENDGRID_API_KEY (optional)FROM_EMAIL (optional)If you run on Replit, set NEXTAUTH_URL to your Replit app URL (e.g. https://<your-subdomain>.replit.dev) and restart the app after updating env vars.
[email protected]Password123!The demo seed creates a full "Demo Academy" dataset so every Anaxi feature can be exercised end-to-end locally or on private staging.
# Create (or recreate) the Demo Academy dataset
npm run seed:demo
# Explicitly reset and recreate (same effect, clearer intent)
npm run seed:demo:reset
Both commands are idempotent: they always delete any existing Demo Academy data first, then recreate it from scratch.
The seed will refuse to run if:
NODE_ENV === "production", ORDATABASE_URL does not contain localhost or 127.0.0.1 (unless ALLOW_DEMO_SEED=true is set)All demo accounts use the password Password123!
| Role | |
|---|---|
| Admin | [email protected] |
| SLT | [email protected] |
| SLT | [email protected] |
| SLT | [email protected] |
| HOD (English) | [email protected] |
| HOD (Maths) | [email protected] |
| Teacher | [email protected] … [email protected] |
| Feature | Pattern |
|---|---|
| Teacher Risk Index | 7 drifting teachers (RETRIEVAL_PRESENCE, CFU_CYCLES, COLD_CALL_DENSITY drift down) |
| Teacher Risk Index | 2 improving teachers (positive momentum on retrieval/CFU) |
| Teacher Risk Index | 1 low-coverage teacher (only 2 observations) |
| CPD Priorities | Convergent signal weakness across drifting cohort |
| Student Risk Index | Year 9 attendance drop (−2–4 pp for ~60% of cohort) |
| Student Risk Index | Year 8 OnCall spike (15–30 students, +1–2 onCalls) |
| Student Risk Index | 15+ urgent students (attendance drop >6 pp / onCallsDelta ≥ 2 / suspension) |
| LOA | 10 requests — mix of Pending / Approved / Denied |
| OnCall | 20 events — mix of Open / Acknowledged / Resolved |
| Meetings | 10 meetings + 30 actions (some overdue, some due soon) |
/tenant/admin/settings controls tenant module enable/disable (school-level module assignment)/tenant/admin/signals manages tenant display names/descriptions for fixed observation SignalKeys/tenant/admin/users now supports:
canApproveAllLoa)receivesOnCallEmails)next/font/google.#fe9f9f for selection/highlight only.#0F172A) with hover/active slate variants..calm-transition).import { Card } from "@/components/ui/card";
import { Button } from "@/components/ui/button";
import { TileOption } from "@/components/ui/tile-option";
<Card>
<Button>Save</Button>
<Button variant="secondary">Cancel</Button>
<TileOption selected>Consistent</TileOption>
</Card>