ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A study planner for students: classes, assignments, calendar, grades, GPA, flashcards, a focus timer, and import from Google Classroom and Schoology. It is a single static HTML file with no build step, and it saves everything in the browser (localStorage).
main redeploys in about a minute)main)The two sites keep separate saved data, because browser storage belongs to one web address. To move data between them, use Settings → Backup, then Restore on the other site.
| Area | State |
|---|---|
App at the site root (index.html) | Live on both sites |
| Dashboard, My Classes, Assignments, Calendar, Study Planner | Done |
| Grade tracker: category weights, grade calculator (add/delete), GPA out of 4 (plus/minus or simple scale) | Done |
| Due-soon alert on the dashboard | Done |
| Flashcards, focus timer (on/off in Settings), color editing | Done |
| Save everything, Backup / Restore / Reset in Settings | Done |
| Secret Room (hidden: click the "Features" heading 5 times, then turn it on in Settings) with Cookie Clicker, Math Sprint, Wordle, Typing Speed | Done |
| Graduation-hat logo goes back to the Dashboard | Done |
| Google Classroom sync (classes, assignments, due dates, returned grades; read-only; token in sessionStorage only) | Done, and the user reports it works |
Schoology import from the personal calendar feed, on every page load, through the built-in relay api/schoology.mjs | Built and the relay is live; not yet tested with a real Schoology feed link |
Schoology API sync (Settings → Schoology → Automatic sync): the student pastes their personal Consumer Key/Secret from <school>.schoology.com/api once; api/schoology-api.mjs checks it and returns it sealed (AES-256-GCM with SCHOOLOGY_TOKEN_KEY, bound to the Firebase uid). Syncs classes, assignments, due dates, grades, category weights and turned-in status on open (at most every 15 min) through the same importCourses() as the grade paste. Needs Google sign-in. GET-only, stores and logs nothing | Built and tested with mocked Google keys and a mocked Schoology API; needs SCHOOLOGY_TOKEN_KEY in Vercel, not yet tested with a real key |
Schoology .ics file import (one-time, no relay needed) | Done |
| Easier Schoology setup: step-by-step guide, Paste button, connects as soon as a valid feed link is pasted (or Enter), explains a wrong link (e.g. the calendar page address), relay field under "Advanced" | Done (tested with a mocked relay) |
| Schoology grades import: paste the Grades page (Grades → Import from Schoology). Imports the current grading period's scores and category weights, creates or matches classes by course name, and averages by points per category like Schoology does. Calendar-feed assignments whose title is on a course's Grades page are filed into that course | Done; averages match Schoology exactly for 3 real courses (Algebra 95.72, Science 91.18, Chinese 96) |
Calendar shows assignment names as colored chips (homework, quiz, test, project; click a color in the key to change it, saved as studyflowCalColors), finished work faded, and a list for the clicked day; on phones the chips become colored bars and the page no longer runs off the right edge. Grade import also adds upcoming ungraded assignments to the calendar and ticks off graded or turned-in ones (the feed adopts them, no duplicates) | Done (tested with mocked data) |
Assignments page shows only work due in the next 7 days by default (plus overdue unfinished work). The first filter lets the student choose today, 3 days, 7 days, 2 weeks, 30 days, "Choose my own…" (any number of days, saved as studyflowDueDays) or all dates; a "Show all dates" link switches to everything. The choice is saved as studyflowDueFilter | Done |
Accounts (Sign in with Google): Firebase Auth + one Firestore doc per user (users/<uid>) holding every studyflow* item; changes sync 2 s after they happen and when the tab comes back into view; first sign-in on a device with its own work asks which copy to keep. Per-device state in studyflowCloud (kept out of backups) | On: Firebase project studyflow-dca86 (Google sign-in, Firestore rules limit each user to users/<own uid>); tested with a mocked Firebase |
Installable app (PWA): manifest.webmanifest, offline service worker sw.js, icons in icons/, "Install the app" card in Settings | Done locally; not yet tested on a real phone or with Google sign-in inside the installed app |
webcal://…/calendar/feed/ical/…/ical.ics link. The calendar page address (…/calendar/<number>/<month>) is not the export link. In StudyFlow go to Settings → School connections → Schoology, paste the link (or press Paste); it connects by itself. Keep the link private..ics file (with personal details removed) and adjust classFor() in index.html.logs/2026-10-10_SCHOOL_SYNC_PLAN.md):
client.requestAccessToken so a synchronous throw clears the pending sign-in.current() so a very late popup answer is ignored.hasGrantedAllScopes with try/catch.old.html (the original simple site) and template/index.html (a redirect to /) when they are no longer needed.| Path | What it is |
|---|---|
index.html | The app. Edit this file. All features are inline scripts in this one file. |
manifest.webmanifest, sw.js, icons/ | Installable app: name and icons, and the service worker that lets it open offline. Bump VERSION in sw.js when the list of app files changes. |
api/schoology.mjs | Vercel Function: the Schoology relay at /api/schoology. It only fetches Schoology calendar feed links and only answers the two StudyFlow sites. |
api/schoology-api.mjs | Vercel Function at /api/schoology-api: checks the StudyFlow (Firebase) sign-in, seals the student's Schoology API key, and reads their classes, assignments and grades (GET only). Needs the Vercel environment variable SCHOOLOGY_TOKEN_KEY (32 random bytes, base64). |
worker/schoology-relay.js | The same relay as a Cloudflare Worker, for anyone hosting StudyFlow somewhere without functions. |
old.html | The original StudyFlow page, kept for reference. |
template/index.html | Redirect so old /template/ links still work. Don't edit. |
logs/ | Plans and review records (2026-10-10_SCHOOL_SYNC_PLAN.md is the school-sync plan and review). |
studyflowData (classes, tasks, sessions, name), studyflowColors, studyflowFlashcards, studyflowFocus, studyflowFocusEnabled, studyflowSecretEnabled, studyflowGames, studyflowWordle, studyflowTyping, studyflowGpaScale, studyflowLastBackup, studyflowClassroom (client ID and connection state), studyflowSchoology (feed link and connection state), studyflowSchoologyApi (the sealed Schoology API token; left out of backups). The Google access token is in sessionStorage (studyflowGcToken) and is never saved permanently.
If the Vercel address changes, update ALLOWED_ORIGINS in api/schoology.mjs (and worker/schoology-relay.js), DEFAULT_RELAY in index.html, and the Authorized JavaScript origins of the Google OAuth client in Google Cloud.
Paste this into Claude Code (opened in this repo) to pick up where we left off:
I'm continuing work on StudyFlow (this repo, github.com/Sketchy426/Studyflow).
Read README.md first: the "Status" and "To do" sections say what is done and what is next.
The app is the single file index.html (no build). The Schoology relay is api/schoology.mjs
(Vercel Function); the Cloudflare copy is worker/schoology-relay.js. Live site:
https://studyflow-one-pi.vercel.app/ (auto-deploys from main); mirror: GitHub Pages.
Keep the existing design and code style, keep the rules in README.md, test changes in a
browser (headless Chrome with mocked fetch is fine), then commit and push to main.
When something changes, update the Status and To do sections of README.md.
Today I want to: <describe what you want next>