ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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/