ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
This forces a fresh Vercel deployment so it builds the latest commit —
Vercel's deploy hook didn't pick it up on its own.
This template provides a minimal setup to get React working in Vite with HMR and some Oxlint rules.
• @vitejs/plugin-react uses Oxc
• @vitejs/plugin-react-swc uses SWC
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.檢視完整 README ↗This forces a fresh Vercel deployment so it builds the latest commit — Vercel's deploy hook didn't pick it up on its own.
This template provides a minimal setup to get React working in Vite with HMR and some Oxlint rules.
Currently, two official plugins are available:
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the TS template for information on how to integrate TypeScript and Oxlint's TypeScript related rules in your project.
The app includes an in-app AI chat (the 💬 button) that can see the student's upcoming exams, study goals, and energy level to give personalized advice. It talks to Anthropic's Claude API through a small local backend, so your API key never reaches the browser.
server/.env.example to server/.env and paste your key into ANTHROPIC_API_KEY=. Never commit this file (it's already in .gitignore) or paste a real key into .env.example.npm run dev:full instead of npm run dev — this starts both the Vite dev server and the chat backend together.Note: the chat only works when running the app with its own backend (npm run dev:full, or your own hosting of both server/ and the built frontend). It will not work from a static, backend-less deployment of the built files alone.
The bell icon's "Enable phone notifications" option sends real OS-level push notifications (streak reminders, upcoming-exam nudges, your custom reminders) on a schedule — even while the app/tab is closed, using the browser's Push API + a small backend (server/index.js) that already exists for the AI chat.
npx web-push generate-vapid-keys.server/.env, set VAPID_PUBLIC_KEY and VAPID_PRIVATE_KEY to that pair, and VAPID_CONTACT to a mailto: address. Optionally set PUSH_INTERVAL_MINUTES (default 60) to control how often it checks.npm run dev:full (same as the AI chat — both share this backend).Limitations to know about:
npm run dev:full or your own hosting of server/ + the built frontend) — not from the static demo build alone.Google/Apple sign-in, Supabase sync, and the AI features all need a real backend origin — they cannot run from a sandboxed preview (e.g. a Claude Artifact), which blocks both third-party login redirects and most outbound network calls. Deploying to real hosting removes both restrictions.
The api/ folder holds the same backend logic as server/index.js, packaged
as individual Vercel Serverless Functions (api/chat.js, api/plan/*.js,
api/push/*.js) — Vercel detects the Vite frontend and these functions
automatically, no extra config beyond vercel.json (already included, for
the push-notification cron schedule).
VITE_SUPABASE_URL, VITE_SUPABASE_ANON_KEY — same values as your
local .env.ANTHROPIC_API_KEY (and optionally ANTHROPIC_MODEL) — same as
server/.env.SUPABASE_SERVICE_ROLE_KEY — from Supabase's Project Settings → API →
"service_role" secret key (needed for deleting an account — which the
App Store requires — and for push notifications; see
server/.env.example)./api/chat on the live site to check: it shows
{"ai": true, "accounts": true} when the AI key and Supabase are set.VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY, VAPID_CONTACT — same as
server/.env, if you want push notifications.CRON_SECRET — any random string, if you set up push notifications
(locks down the cron endpoint; see server/.env.example).git push to your default branch redeploys automatically.Note on push notifications: Vercel has no long-running process to hold a
timer in, so scheduled sends run via Vercel Cron (vercel.json) hitting
/api/push/cron instead of the setInterval loop used locally. Cron
frequency limits differ by Vercel plan — check your dashboard/plan's current
limits if vercel.json's hourly schedule isn't accepted, and adjust it.