ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证LexReader — учи язык, читая то, что интересно
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Приложение для изучения языка через чтение реальных текстов: читаешь → тапаешь непонятное слово → получаешь перевод в контексте → сохраняешь в свой словарь → повторяешь по расписанию SRS. Полное ТЗ: lexpring-clone-spec.md. Больше живых скриншотов ключевых экранов (десктоп + мобилка) — в финальной визуальной проверке.查看完整 README ↗
Приложение для изучения языка через чтение реальных текстов: читаешь → тапаешь непонятное слово → получаешь перевод в контексте → сохраняешь в свой словарь → повторяешь по расписанию SRS.
Живая версия: lexreader.vercel.app
Полное ТЗ: lexpring-clone-spec.md.
| Было | Стало |
|---|---|
Больше живых скриншотов ключевых экранов (десктоп + мобилка) — в финальной визуальной проверке.
owner_id = auth.uid()src/lib/translate.ts — абстракция, легко заменить на LibreTranslate (self-hosted) или DeepL позжеsrc/lib/fsrs-flags.ts):
src/lib/fsrs.ts) — адаптер поверх ts-fsrs, современный алгоритм с явной моделью «стабильность/сложность» вместо эвристик; целевой алгоритм для новых карточек.src/lib/srs.ts) — упрощённая 4-балльная реализация классического алгоритма, legacy-путь для карточек, заведённых до перехода на FSRS, и фолбэк, пока флаг не включён для аккаунта.src/app/api/webhooks/stripe/)pdfjs-dist), фото/OCR (tesseract.js), веб-статьи (@mozilla/readability), YouTube-субтитры + Whisper-фолбэк (worker/youtube-ingestion/, отдельный воркер)flowchart LR
subgraph Клиенты
Web["Web (Next.js)"]
Native["Android / iOS\n(Capacitor)"]
end
subgraph "Next.js App Router"
Pages["Страницы / Server Actions"]
Proxy["proxy.ts (auth-гейт)"]
end
subgraph Supabase
Auth[(Auth)]
DB[(Postgres + RLS)]
Storage[(Storage)]
end
Worker["worker/youtube-ingestion\n(субтитры + Whisper-фолбэк)"]
MyMemory[["MyMemory\n(перевод)"]]
Stripe[["Stripe\n(подписки)"]]
PostHog[["PostHog\n(аналитика)"]]
Web --> Proxy --> Pages
Native --> Proxy
Pages --> Auth
Pages --> DB
Pages --> Storage
Pages --> MyMemory
Pages --> Stripe
Pages --> PostHog
Pages -- "импорт YouTube-видео" --> Worker
Worker --> DB
Читалка, словарь (Мозг/Тетрадь), повторение по SRS и экран прогресса — это server actions и server components внутри src/app/(app)/; авторизация проверяется в src/proxy.ts (Next.js 16 переименовал Middleware в Proxy) на каждый запрос к защищённым маршрутам. Вся запись/чтение данных идёт через Supabase с RLS-политиками owner_id = auth.uid() — база данных сама фильтрует строки на своём уровне, приложению не нужен отдельный слой авторизации поверх запросов.
npm run dev
Открыть http://localhost:3000.
npx supabase start)..env.local.example в .env.local и заполнить ключи.supabase/migrations/ через Supabase Studio (SQL Editor) или npx supabase db push.npm run typecheck
npm run lint
npm test # 403 unit/integration-теста, самодостаточные, без БД
npm run test:e2e # Playwright, требует поднятый Supabase + dev-сервер
Исходный MVP-план проекта — все 7 пунктов давно реализованы, раздел оставлен как историческая справка:
profiles