ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
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 ↗«Твояк» — веб-викторина для компании в духе «Своей игры». Ведущий открывает комнату на ноутбуке или телевизоре, игроки и зрители заходят с телефонов по QR-коду или четырёхбуквенному коду. Приложение ставить не нужно, аккаунты не нужны.
Ведущий сам не играет. Это либо человек в комнате, либо бот. Бот читает вопрос голосом браузера (Web Speech API) и сам засчитывает ответ. Живой ведущий может поправить вердикт с экрана.
clock_timestamp()) пишет ответ. Верный даёт стоимость и право выбора, неверный всегда снимает стоимость, кнопка открывается остальным. Если никто не взял вопрос, эталон показывают всем.ANSWER_CHECK_USE_LLM=true — OpenRouter.Сроки на сервере: 15 секунд на кнопку, 20 на обычный ответ, 25 на «кота», 60 на ставки, 45 на финальный ответ.
Вопрос может быть картинкой, видео или музыкой. Ролик — YouTube с началом и концом, если он не открылся, плеер пробует VK Video и затем Rutube. У музыки бывает шторка: картинки не видно, звук идёт. У живого ведущего есть галочка «Трек включает ведущий».
game_states.version растёт на каждом изменении, чтобы клиенты не затирали друг друга.Экраны опираются на портфолио Đặng Trung Thắng, 22–23: тёмное поле и серая сетка. Страница Behance из этой среды не открылась (403), палитра снята с публичных копий кадров. Свой акцент — лимонная полоска на кнопках и метках. Текст: Manrope и Literata, оба с кириллицей. Ячейка переворачивается, очки догоняют новое значение; при prefers-reduced-motion анимации нет.
Нужны Docker, Node.js 20.9 или новее и Supabase CLI.
npm install
supabase start
supabase status -o env
cp .env.example .env.local
Из вывода supabase status -o env перенесите в .env.local:
| В статусе | В .env.local |
|---|---|
API_URL | SUPABASE_URL |
ANON_KEY | SUPABASE_ANON_KEY |
SERVICE_ROLE_KEY | SUPABASE_SERVICE_ROLE_KEY |
OPENROUTER_API_KEY и OPENROUTER_MODEL для лобби не нужны. Service role остаётся только на сервере.
npm run dev
Откройте http://127.0.0.1:3000 и создайте комнату. На экране ведущего появятся код и QR, список игроков обновляется сам.
Телефон в той же сети не откроет localhost. Запустите сервер так:
npm run dev -- -H 0.0.0.0
Зайдите в браузер ведущего по http://<адрес-компьютера>:3000. QR соберётся из этого адреса.
Дальше на телефоне или во второй вкладке откройте /play/КОД, введите имя и роль. Ник появится у ведущего без перезагрузки. «Ответить» в лобби отвечает, что вопрос ещё не открыт, и показывает серверное время.
Тот же сценарий против локальной базы:
npm run verify:lobby
Скрипт создаёт комнату, сажает 10 игроков, проверяет отказ одиннадцатому, зрителя, что anon не видит эталон ответа и секреты, и что из двух одновременных нажатий побеждает более раннее серверное время. В конце тестовая комната удаляется.
curl -s http://127.0.0.1:3000/api/answer-check \
-H 'content-type: application/json' \
-d '{"given":"Ёлка!","expected":"елка"}'
{
"correct": true,
"method": "exact",
"similarity": 1,
"llmUsed": false,
"scoreEffect": "add"
}
Сначала текст нормализуется: регистр, ё → е, кавычки, дефисы, лишние пробелы. Потом нечёткое сравнение. Если ответ близкий, но не достаточно, и в окружении ANSWER_CHECK_USE_LLM=true (или 1), сервер спрашивает модель через OpenRouter. Без флага, ключа или модели вызова нет. scoreEffect: "subtract" значит, что ошибка снимает очки; сами очки в M0 ещё не пишутся в счёт.
Это заглушка: эталон приходит в теле запроса. В игре он останется в базе, клиент его не увидит.
Тесты нормализации:
npm test
npm run dev — разработкаnpm run build и npm start — сборкаnpm test — нормализация и нечёткое сравнениеnpm run lint — ESLintnpm run format — Prettiernpm run verify:lobby — лобби и buzz на локальном SupabaseПосле правки .env.local перезапустите npm run dev: URL и anon-ключ попадают в браузерный бандл при сборке страницы.
Уже применённый каркас:
supabase/migrations/20261028120000_init.sqlДальше строго по имени файла:
supabase/migrations/20261028200000_gameplay.sql — ход игры, секреты ответов, представление question_boardsupabase/migrations/20261028200100_question_bank.sql — пул вопросовsupabase/migrations/20261028210000_media.sql — картинка, видео, музыка, шторка, «трек включает ведущий»supabase/migrations/20261028210100_media_questions.sql — медиа-вопросыsupabase/migrations/20261028220000_packs.sql — пачки и протоколы проверкиThis is the beginning of the README. Read the rest at the original. Read the full README ↗