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.