ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Awaken Audio — accounts, progress and admin
The training platform (Learn / Listen / Arcade) is unchanged. This adds
Supabase auth, a real progress database, row-level security, a learner
dashboard and an admin dashboard around it.
1. Create the database
Open the Supabase SQL editor for project kjbuffypftxaspmsvnuq and run:
That is the four migrations plus the Awaken Audio curriculum seed, combined
into one paste. It is idempotent — running it twice is harmless.
2. Deploy the site
The whole site is static. From this folder:
Or drag the public/ folder onto vercel.com/new.檢視完整 README ↗The training platform (Learn / Listen / Arcade) is unchanged. This adds Supabase auth, a real progress database, row-level security, a learner dashboard and an admin dashboard around it.
Open the Supabase SQL editor for project kjbuffypftxaspmsvnuq and run:
supabase/RUN_THIS_FIRST.sql
That is the four migrations plus the Awaken Audio curriculum seed, combined into one paste. It is idempotent — running it twice is harmless.
The whole site is static. From this folder:
npx vercel --prod public
Or drag the public/ folder onto vercel.com/new.
Then in Supabase → Authentication → URL Configuration, set Site URL to your deployed URL and add it to Redirect URLs, so the confirmation and password-reset emails come back to the right place.
Sign up through the site first, then run supabase/seed/0002_first_admin.sql
in the SQL editor. It promotes your account to super_admin and assigns
every existing learner to you.
There is deliberately no way to become an admin from the browser.
public/index.html built site — do not edit by hand
public/js/config.js Supabase URL + anon key
public/js/awaken-data.js the only file that talks to Supabase
public/js/awaken-app.js auth screen, dashboards, route guards
public/js/awaken-progress.js bridges the training modules to the data layer
src/ sources for the above
build.py rebuilds public/index.html from the training file
supabase/migrations/ schema, security, views — run in order
supabase/seed/ curriculum, first admin
supabase/test/ local Postgres security suite (30 checks)
To rebuild after the training platform changes:
python3 build.py
The build fails loudly if any patch anchor stops matching, so a changed module can never silently lose its progress tracking.
courses ─┬─ topics ─┬─ modules (learn | listen | arcade)
│ │
profiles ─┴─ enrollments one per learner per course
├─ module_progress one per learner per module
├─ arcade_attempts append-only run history
└─ admin_user_assignments which admin sees which learner
Rollups (v_topic_progress, v_course_progress) are views, so nothing
has to be recomputed or kept in sync.
groups / group_members exist but are unused. They are there so campus
admins, team leads and cohorts can be added later without rewriting the
assignment model.
Authorisation is enforced in the database, not the browser. The route
guards in awaken-app.js only spare people a blank screen — an admin who
edits their own JavaScript still sees nothing, because the policies return
no rows.
Verified by supabase/test/01_security_test.sql (30 checks, all passing):
Run the suite locally against any Postgres 15+:
psql -f supabase/test/00_shim.sql
psql -f supabase/RUN_THIS_FIRST.sql
psql -f supabase/test/01_security_test.sql
The arcade games run in the browser, so a determined volunteer could post a score they did not earn. That is inherent to a static client and is not what RLS is for. What is protected is everyone else's data: no volunteer can read or alter another person's progress, and no admin can reach a learner who was not assigned to them.
Arcade modules complete when a run is either a full clear or beats
modules.pass_accuracy (seeded at 65). That is the one number worth
revisiting once there are real runs to look at:
update public.modules set pass_accuracy = 70 where ui_key = 'arcade-raid';