ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Ad-free practice for Kindergarten to Grade 9 that follows the curriculum. An adaptive Adventure mode, learning games earned with focused practice, trophies, offline play, and progress reports in the same language as the report card. Free for 30 days.
翻譯準備中
正在載入完整 README。 以下為已儲存的摘錄。
Curriculum-matched practice, learning games and parent reports for Kindergarten to Grade 9. It covers the BC, Ontario, Alberta, Saskatchewan, Manitoba, Yukon, Northwest Territories, Nova Scotia, New Brunswick, Newfoundland and Labrador, Prince Edward Island and Nunavut curricula in Canada and the Washington State Learning Standards Oregon's and California's state standards in the US, and other provinces and states can be added. The app name is set in src/lib/brand.ts.檢視完整 README ↗Curriculum-matched practice, learning games and parent reports for Pre-K to Grade 9. It covers the curricula of the Canadian provinces and territories and the standards of the US states we offer (the list is src/content/registry.ts), and other provinces and states can be added. The app name is set in src/lib/brand.ts.
It's a web app first: it runs in any browser, installs to a tablet or phone home screen, and works offline. Progress, scores and trophies sync to the family account when the device is back online.
/play/)/parents/, behind a PIN)/: landing page with FAQ and structured data./curriculum/bc/grade-3/math/multiplication/: a page for every curriculum, grade, subject and unit. Each has Big Ideas, the learning standard, sample questions with answers, and LearningResource/AlignmentObject JSON-LD./report-cards/bc/: the report card guide with FAQPage JSON-LD.sitemap.xml, robots.txt (keeps /play/, /parents/ and /api/ out of search), canonical URLs and an Open Graph image.npm install
npm run dev # http://localhost:3000
npm test # content checks for every unit + game-logic tests
npm run lint
npm run build && npm start
Browser tests (Playwright; instructions at the top of each file):
scripts/e2e.mjs: a playthrough of the whole app. It covers every mode, the arcade, the parent area, sign-up, sync to a second device, and offline play with upload on reconnect.scripts/e2e-devices.mjs: layout checks on 14 common Android, iPhone, iPad and tablet screens, in portrait and landscape. The riskier flows run once per class of device.scripts/e2e-offline.mjs: real offline. It stops the server and checks the service worker serves the app and the lessons.With no configuration it uses a local SQLite file (./data/gradelings.db) and simulated billing, so you can try sign-up, sync and subscriptions end to end.
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_SITE_URL | Public address for canonical links and the sitemap (default https://gradelings.com). |
DATABASE_URL | libsql URL. Default file:./data/gradelings.db; use a Turso URL in production. |
DATABASE_AUTH_TOKEN | Turso auth token. |
TURSO_DATABASE_URL, TURSO_AUTH_TOKEN | Used instead when DATABASE_URL is unset (the names the Vercel Marketplace Turso integration sets). |
STRIPE_SECRET_KEY | Stripe secret key. Billing is simulated until this and both price IDs are set. |
STRIPE_PRICE_MONTHLY, STRIPE_PRICE_YEARLY | Price IDs for the family plan (C$14.99/month, C$119.99/year). |
STRIPE_WEBHOOK_SECRET | Signing secret for /api/billing/webhook. |
ADMIN_EMAILS | Comma-separated emails of admin accounts. Turns on the admin panel at /admin/ (docs/ADMIN.md). |
ADMIN_TOKEN | Optional. Lets scripts call the redeem-code API with a Bearer token (docs/CODES.md). At least 24 random characters. |
ALLOW_DEV_BILLING | Set to 1 to allow simulated billing in a production build (staging only). |
https://<your-site>/api/billing/webhook/ (with the trailing slash: Stripe doesn't follow redirects) for checkout.session.completed, customer.subscription.created, customer.subscription.updated, customer.subscription.deleted, invoice.paid and charge.refunded (the last two feed the admin dashboard's revenue numbers).It needs a Node server for the API routes (Vercel, Render, Fly.io or any Node host). With Turso as the database there's nothing to manage on the server. The public curriculum pages are statically generated at build time.
src/lib/localdb.ts).src/lib/derive.ts). Merging events from several devices is therefore order-independent and duplicate-safe: nothing is lost if two tablets were used offline.updatedAt.src/lib/sync.ts pushes unsynced events and pulls new ones by cursor (POST /api/sync/). It runs when the device comes online, when the app becomes visible, every 2 minutes, and shortly after any change.public/sw.js precaches the kids' app and parent area, serves pages network-first and build files cache-first, and never caches /api/.src/content/index.ts).
src/content/all.ts.src/content/frameworks.ts. For BC that's the Provincial Proficiency Scale, with official descriptions, a kid-friendly name (🌱 Seedling, 🌿 Sprout, 🌳 Tree, ⭐ Star) and plain-language "at home" notes.src/lib/proficiency.ts). Extending also requires passing a Challenge.src/content/
types.ts question, visual, unit and course types
frameworks.ts curricula: grades, report-card scale and guide
subjects.ts subject names per age band, grades, slugs
random.ts seeded randomness (never Math.random in content)
grades/k … g7/ math.ts, language.ts, science.ts, social.ts
content.test.ts generates every unit many times and checks it's fair
generate() that returns 6–10 fresh questions at difficulty 1, 2 or 3, plus a parent note and a learning standard per framework. See docs/CONTENT_GUIDE.md for the authoring rules.npm test checks every unit:
Framework to src/content/frameworks.ts: slug, grades, report-card scale and guide.standards, and its Big Ideas (or equivalent) to each course.src/
app/
page.tsx, curriculum/, report-cards/ public, statically generated pages
play/, parents/ the two offline single-page apps (hash routes)
api/ auth, sync, billing, account
components/
play/ hub, modes, session runner, trophies, shop, arcade + games/
parents/ PIN gate, overview, reports + charts, children, settings, account, subscription
questions/ the 6 interaction types
site/ public page chrome, curriculum helpers, sample questions
Critter.tsx the mascot cast
visuals.tsx blocks, coins, clocks, number lines, fractions, graphs, grids…
lib/ event model, derive, proficiency, trophies, quests, shop, adaptive, plan, store, sync
server/ libsql database, auth (scrypt + session cookies), Stripe
The installable web app already works offline. For Google Play, wrap it as a Trusted Web Activity (Bubblewrap) pointing at /play/, or use Capacitor for native features. Before submitting, check the Play Families policy and the Apple Kids Category requirements.
Deployment steps (Vercel, Turso, Stripe) are in docs/DEPLOY.md.
The market research behind the product decisions (market size, competitors, monetization and what parents want) is in docs/research/, starting with the summary report.