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.