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