ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
1. 成績管理:作業缺交登記、個人與全班報表、Excel 匯出。 2. 英文口說輔助教學:學生朗讀評分、AI 英語對話、口說成績與文章管理。 With no DATABASE_URL, the app uses a local PGlite file DB under ./.pglite (auto-created, schema auto-applied). Set DATABASE_URL to a Supabase pooler URL to use Postgres. Copy .env.example → .env.local to configure.檢視完整 README ↗
同一位老師使用的整合式教學系統,包含兩大服務:
| Layer | Tech |
|---|---|
| Framework | Next.js 16 (App Router / RSC / Server Actions) + React 19 |
| Language | TypeScript 5 (strict, @/* path alias) |
| Styling | Tailwind CSS v4 + Bootstrap 5 (CDN) + Bootstrap Icons |
| Data | Dual backend — postgres (Supabase) in prod, @electric-sql/pglite (WASM Postgres) for local dev; see lib/db.ts |
| Access | Single-teacher app with no built-in login; public student speaking page |
| Tests | node --test + tsx |
| Deploy | Vercel |
npm install
npm run dev # http://localhost:3000
With no DATABASE_URL, the app uses a local PGlite file DB under ./.pglite
(auto-created, schema auto-applied). Set DATABASE_URL to a Supabase pooler URL
to use Postgres. Copy .env.example → .env.local to configure.
This is a single-teacher app with no account or login screen. The student
speaking page is public at /speaking. Because there is no login, anyone who
knows the deployment URL can also open teacher pages and teacher API routes.
Use a private deployment URL or enable Vercel Deployment Protection if access
must be restricted later.
teacher-assistant Supabase project, run
supabase/migrations/20260906000000_speaking_service.sql in SQL Editor.DATABASE_URL.GEMINI_API_KEY and optionally GEMINI_MODEL to Vercel for Production,
Preview, and Development.Teacher-Assistant GitHub repository into Vercel and deploy.The migration enables RLS and removes Data API access for anon and
authenticated; all database access stays on the Next.js server through
DATABASE_URL.
npm run dev / build / startnpm run lint — ESLintnpm test — unit tests for pure modules in lib/**/*.test.tsapp/ routes (page.tsx, layout.tsx, actions.ts)
components/ shared UI (Nav)
lib/ db.ts (dual backend), queries.ts, schema.sql, pure helpers + tests
public/speaking student speaking UI (static; the teacher side lives at app/admin/speaking)
supabase/ production migration and security hardening
Extend the schema in lib/schema.sql, add queries in lib/queries.ts, and bump
SCHEMA_VERSION in lib/db.ts when the schema changes — runInit() re-runs the
idempotent migrations once per bump.
classes) — created in 班級維護 with a name and a 人數.class_seats) — one row per seat. 人數 N expands into seats 1..N on
creation; after that + appends the next number and × removes one. No
student names are kept anywhere.assignments) — every item is created by the teacher via 新增項目.
Nothing is seeded, so all items can be renamed and deleted.assignment_records) — one row per 作業項目 × 座號.speaking_articles) — teacher-maintained reading material.speaking_practice_records) — references the shared class
and seat while preserving a class-name snapshot for historical reports.speaking_practice_record_backups) — snapshot created
transactionally before any speaking record is deleted. The teacher can remove
a single record, one student's records, or the whole table; each deletion
writes its own snapshot first, so nothing is lost without a copy.