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 ↗Mobile-first PWA for learning French words with Russian translations: spaced-repetition cards (FSRS), quick add with dictionary and Claude suggestions, word extraction from screenshots, and themes that sort themselves.
mockups/*.dc.htmlnpm install
cp .env.example .env.local # optional; leave Supabase empty for local-only mode
npm run dev # http://localhost:3000
Without NEXT_PUBLIC_SUPABASE_URL the app runs fully on-device: no login and no sync. Suggestions and screenshot import need ANTHROPIC_API_KEY, and in local-only mode /api/ai/* works only outside production.
npm run lint && npm run typecheck && npm test && npm run build
npm run e2e # Playwright, 390×844, local-only mode; builds must exist (npm run build)
The e2e suite starts next start on port 3100 and mocks /api/ai/*. It uses the preinstalled Chromium (PLAYWRIGHT_BROWSERS_PATH=/opt/pw-browsers).
supabase/migrations/ in order (0001_init.sql, 0002_user_keys_and_stale_writes.sql, 0003_extra_examples.sql, 0004_review_sets.sql, 0005_connector_grants.sql, 0006_custom_fields.sql, 0007_connector_field_writes.sql, 0008_word_origin_conjugation.sql, 0009_word_muted.sql, 0010_folder_muted.sql, 0011_exercises.sql, 0012_user_prefs.sql, 0013_exercise_scope.sql, 0014_word_level.sql, 0015_connector_study_plan.sql, 0016_progress_days.sql, 0017_progress_days_plan.sql, 0018_exercise_level.sql, 0019_connector_exercise_runs.sql, then 0020_connector_review_log.sql). Apply a new migration before deploying the app version that needs it./auth/confirm, then /auth/reset).<production URL>/**.ALLOWED_EMAIL keeps them off the AI routes, but there is no reason to let them in.NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, ALLOWED_EMAIL, NEXT_PUBLIC_ALLOWED_EMAIL (optional), ANTHROPIC_API_KEY, AI_MODEL_EXTRACT (optional), CRON_SECRET.NEXT_PUBLIC_ALLOWED_EMAIL if it is set (it makes the login screen refuse other addresses) and redeploy; they create their account in the app; turn sign-up off again. Then add their address to ALLOWED_EMAIL (comma-separated, e.g. [email protected],[email protected]; the same list may go back into NEXT_PUBLIC_ALLOWED_EMAIL) and redeploy, so the AI routes answer them too.MCP_SECRET, SUPABASE_SECRET_KEY, MCP_USER_ID and optionally MCP_TIMEZONE, redeploy, then add https://<production URL>/api/mcp/<MCP_SECRET> as a custom connector in claude.ai with no sign-in. Steps, the companion skill and the security trade-offs are in docs/CONNECTOR.md.public/lexique/fr-lemmas.json is derived from Lexique 3.83 by Boris New & Christophe Pallier (lexique.org), licensed under CC BY-SA 4.0; the derived file is shared under the same license. See public/lexique/LICENSE.txt; rebuild with node scripts/build-lexique.mjs.public/lexique/fr-conj.json (verb tables for «Контекст» → «Спряжение») is derived from the same Lexique 3.83 data under the same CC BY-SA 4.0 license; rebuild with node scripts/build-conjugation.mjs.public/lexique/fr-morpho.json («Слово по частям»: how words are made) is derived from the morphology column of the same Lexique 3.83 data, same license; rebuild with node scripts/build-morpho.mjs.