ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Classes, students, tasks and grades in one place
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Everything about the classes I teach in one place: classes, students, tasks, scores with notes, term grades, and exports. Replaces a Google Drive full of spreadsheets. Next.js 16 (App Router) · Tailwind CSS 4 · PostgreSQL on Supabase · Drizzle ORM · next-intl (Español (Argentina) / English) · Vitest · hosted on Vercel.查看完整 README ↗
STACK (the repository is still teaching-workspace) keeps everything about
the classes I teach in one place: classes, students, tasks, scores with notes,
term grades, attendance and exports. Replaces a Google Drive full of
spreadsheets.
Next.js 16 (App Router) · Tailwind CSS 4 · PostgreSQL on Supabase · Drizzle ORM · next-intl (Español (Argentina) / English) · Vitest · hosted on Vercel.
main, and the one-time GitHub/Vercel setup.Node 24, the version in .nvmrc (nvm use 24). CI and Vercel use the same
one: a lockfile written by another Node's npm can fail npm ci in CI.
npm install
npm run dev
Then open http://localhost:3000. Without a .env.local the app runs with
sign-in switched off and a banner saying so — enough to work on screens
offline.
npm test
npm run lint
npm run build
No Docker: development runs against a cloud Supabase project. Use two — dev
for working, prod for Vercel — so experiments never touch real grades.
Create a project at supabase.com.
Copy .env.example to .env.local and fill in the three values.
Create the tables (the migrations are in drizzle/):
npm run db:migrate
Then the private file bucket for task attachments and its access rules
(supabase/storage.sql):
npm run storage:apply
Turn on Google sign-in: in Google Cloud Console create an OAuth client
(Web application) with the redirect URI Supabase shows under
Authentication → Providers → Google, then paste its id and secret there.
Add http://localhost:3000/auth/callback and the Vercel URL under
Authentication → URL Configuration → Redirect URLs.
The free plan pauses a project that gets too little activity over a week
(school holidays). One read every 3 days wasn't enough, so
.github/workflows/keep-supabase-awake.yml now touches each project twice a
day: one request through Supabase's API and one read on the database. It needs
four repository secrets, set once from a terminal in the project folder:
grep '^DATABASE_URL=' .env.local | cut -d= -f2- | gh secret set SUPABASE_DEV_DB_URL
grep '^DATABASE_URL=' .env.prod | cut -d= -f2- | gh secret set SUPABASE_PROD_DB_URL
grep '^NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=' .env.local | cut -d= -f2- | gh secret set SUPABASE_DEV_PUBLISHABLE_KEY
The prod publishable key isn't in .env.prod: copy it from the prod project's
Project Settings → API Keys, run this and paste it at the prompt:
gh secret set SUPABASE_PROD_PUBLISHABLE_KEY
A missing secret fails the run, and GitHub emails about it. If a project does get paused, restoring it is one click in the dashboard; nothing is lost.
src/
app/
(app)/ signed-in pages: dashboard, classes, students, settings
login/ Google sign-in
auth/callback/ finishes the Google sign-in
components/ presentation only
db/ schema.ts (the data model) and the connection
i18n/ language config; texts live in messages/
lib/
grading.ts grading rules, pure and tested
supabase/ auth clients
proxy.ts refreshes the session, sends signed-out users to /login
messages/ es-AR.json, en.json
drizzle/ generated SQL migrations
docs/