ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Французские слова на карточках, с подсказками и уровнем сленга.
Translation pending
EducationHTML · TypeScriptGitHub @n-drobyshevskiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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.