ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Математика, логика и шахматы для детей 6–12 лет: короткие ежедневные занятия, подсказки, шахматная школа и раздел для родителей.
Translation pending
EducationTypeScript · JavaScriptGitHub @samarqandyOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
Parvoz Edu — математика, логика и шахматы Веб-платформа для долгосрочного развития математического, логического, алгоритмического и научного мышления ребёнка. При первом запуске Лаборатория спрашивает имя ребёнка и дальше обращается к нему по имени: имя подставляется и в задачи, где ребёнок — герой. Она построена по мастер-промпту программы: ежедневные занятия на 20–30 минут, 6–10 разных задач, лестница подсказок, ответы для родителя отдельно, еженедельное наблюдение без ярлыков.Read the full README ↗
Веб-платформа для долгосрочного развития математического, логического, алгоритмического и научного мышления ребёнка. При первом запуске Лаборатория спрашивает имя ребёнка и дальше обращается к нему по имени: имя подставляется и в задачи, где ребёнок — герой. Она построена по мастер-промпту программы: ежедневные занятия на 20–30 минут, 6–10 разных задач, лестница подсказок, ответы для родителя отдельно, еженедельное наблюдение без ярлыков.
Qisqacha (oʻzbekcha). Bu — bolalar uchun matematika, mantiq va algoritmik fikrlashni rivojlantiruvchi veb-platforma. Birinchi kirishda bolaning ismi soʻraladi va masalalar qahramoni shu bola boʻladi. Platforma ikki tilda: rus va oʻzbek tillarida (tilni yuqoridagi RU / UZ tugmasi bilan almashtirish mumkin). Oʻzbekcha matnlar soʻzma-soʻz tarjima emas — bolaga tushunarli, jonli tilda qayta yozilgan. Har kuni 20–30 daqiqalik mashgʻulot: 5 bosqichli maslahat, javobni tekshirish va interaktiv robot. Har bir kunni chop etish mumkin. 6 darajali shaxmat maktabi (piyoda, ot, fil, rux, farzin, shoh), endshpil maktabi, tahlil taxtasi, shaxmat sirlari va afsonalari — ularning bir qismini diktor oʻqib beradi. Ota-ona boʻlimi PIN-kod bilan yopilgan. Natijalar shu brauzerda saqlanadi; xohlasangiz, Google yoki Telegram orqali kirib, natijalarni barcha qurilmalarda sinxronlash mumkin.
Для ребёнка
Три недели по 7 дней, в каждой — 55 задач и мини-исследование. Разминка, логика, закономерности, алгоритмы, пространство, математика вокруг нас, задача со звёздочкой.
Пять уровней сложности (🟢 🟡 🟠 🔴 ⭐), и сложность растёт к концу недели.
Подсказки открываются по одной, с паузой на размышление: перечитай условие → что известно → нарисуй или запиши → реши задачу поменьше → идея. Готовый ответ ребёнок не видит.
Проверка ответа без слова «неправильно»: «Давай проверим твою идею», «Какая часть точно верная?».
Интерактивные инструменты:
Шахматная школа — шесть уровней-званий: Пешка → Конь → Слон → Ладья → Ферзь → Король (по-узбекски piyoda, ot, fil, rux, farzin, shoh). На каждом уровне — урок с интерактивной доской, правила, словарик, интересные факты и упражнения: найти клетку, отметить все ходы фигуры, собрать звёздочки за наименьшее число ходов, найти вилку и мат в один ход, расставить ферзей. Все упражнения решены — звание получено, и открывается следующий уровень. Каждый уровень ведёт дальше: к игре, задачам, дебютам и знаменитым партиям своей сложности.
Задание дня, опыт и серия — на главной и в шахматной школе: три дела на сегодня (задачи тренажёра, задача по математике, партия или упражнение) и «звезда дня», когда всё сделано; уровень по опыту (опыт считается из уже решённого, поэтому одинаков на всех устройствах; он не зависит от подсказок). Детям до 10 лет вместо номера уровня и XP показываем имя уровня (Росточек, Фонарик, Компас… Корона), с 10 лет — число и «+10 XP ⭐»; серия дней подряд, где один пропуск в неделю прощается, и цель недели — 5 дней с занятиями.
После решения — вопросы «А ещё подумай» и отметки «объяснил», «нашёл другой способ», «понравилась», «было трудно».
Итоги дня: самая интересная задача, самая трудная задача, настроение, новая «привычка мыслителя».
«Мои задачи» — задачник, куда ребёнок записывает задачи, которые придумал сам.
Возраст ребёнка — при первом запуске ребёнок выбирает возраст (6–15), изменить его можно в настройках родителя. Младшим (6–8) всё по порядку; средним (9–10) открыты три уровня шахмат, робот «Конь», задача дня от двух звёзд, лёгкие задания дня помечены как разминка; старшим (11+) открыты все уровни, робот «Слон», задача дня от трёх звёзд, разделы «для тех, кто постарше» раскрыты сразу.
Тайны шахмат — 32 истории с вопросом-крючком: учёные Хорезма и Бухары (аль-Хорезми, Беруни, Ибн Сина), «Шахнаме», халифы Багдада, задача Дилярам, «Турок», путешествие коня, «бешеная королева» — с играми внутри (зёрна на доске, загадка посла, тур коня) и загадками про фигуры.
docs/chess-stories-sources.md).Живая птица Парвоз и награды. Птица реагирует на ответы (верно — радуется, «подумаем ещё» — мягко наклоняет голову, без тряски и грусти), «+N XP ⭐» взлетает, за новый уровень и хороший итог дня или «Быстрых примеров» — салют. Пока нет файлов Rive/Lottie, рисуется запасной вариант из логотипа и CSS; когда файлы появятся, их включает один флаг (src/lib/anim/assets.ts, правила — docs/animations.md). Уважает «уменьшить движение» в системе и настройку родителя «Анимации»; WASM-движки отдаются с нашего домена, не с CDN.
Тактика (/chess/tactics): восемь тем — вилка, связка, сквозной удар, открытый шах, мат разными фигурами (слон, пешка, ферзь с опорой, превращение) быстрые маты в дебюте (детский мат, мат дурака), защита от шаха (взять, закрыться, уйти) и особые правила (взятие на проходе, пат, ничьи). В каждой короткий урок (3–4 шага с доской и стрелками), упражнения «найди ход» на настоящей доске и вопросы с выбором ответа; RU и UZ. Позиции придуманы для школы и проверены движком: src/lib/tactics.ts независимо находит все ходы, подходящие под приём, а tests/tactics.test.ts сверяет с ними ответы упражнений.
Контрольные тесты (/chess/tests): три теста по двенадцать вопросов без подсказок — фигуры и ходы, шах/мат/пат, тактика. Балл даётся за ответ с первой попытки (ошибаться можно, правильный ответ всё равно нужно найти), итог — баллы и до трёх звёзд (10+ из 12 — три). Позиции тестов 2 и 3 — зеркальные отражения позиций из школы и тактики, все ответы проверены движком (tests/chess.test.ts).
Два языка: русский и узбекский. Переключатель RU / UZ — в шапке сайта и в приветственном окне; выбор хранится на устройстве. Узбекский текст — не подстрочник: задачи, уроки, истории и подсказки написаны заново живым языком (правила — docs/uzbek-style.md). Задачи, завязанные на русский алфавит (шифры, «буква — номер», карты с буквами), пересобраны на узбекском алфавите с теми же числовыми ответами. Шахматные ходы по-узбекски записываются фигурками: ♘f3, ♕xf7#.
Несколько детей на одном устройстве — родитель в настройках («Дети на этом устройстве») заводит профили: у каждого своё имя, возраст, аватарка (🐣🦊🐼…), прогресс, медали и серия. Когда профилей больше одного, в шапке появляется кнопка с картинкой — ребёнок выбирает себя сам. У первого профиля запись прежняя (davlatjon-lab:v1), у остальных — davlatjon-lab:v1:<id>; список — davlatjon-lab:profiles (src/lib/profiles.ts). При входе в аккаунт прогресс каждого профиля сохраняется отдельно (/api/progress?profile=<id>, запись «аккаунт#профиль»); итоги недели в Telegram приходят по каждому профилю с его аватаркой. Список профилей на другом устройстве нужно завести заново.
Птичка Парвоз и вводный тест. Талисман (птичка с логотипа) встречает в приветствии, хвалит в итогах дня и зовёт отдохнуть. Кнопка «Показать родителям» открывает системное окно «Поделиться» (без имени ребёнка). Ребёнку от 8 лет, который ещё ничего не решал, на главной предлагается короткий вводный тест из шести задач (src/lib/placement.ts): начать стоит с недели, где что-то оказалось новым. Все недели остаются открытыми.
Быстрые примеры (/quick) — десять вопросов подряд, ответ нажатием на крупный вариант; вопросы собираются на лету (src/lib/quick.ts, чистый генератор с seed, проверяется тестами). Две колоды: «числа» (сложение, вычитание, пропущенное число, знаки сравнения, ряды, таблица умножения и деление; три уровня по возрасту) и «картинки» для 4–5 лет (сосчитай, где больше, продолжи узор, найди лишнее) — вопросы без слов. Серия с 7 верными из 10 даёт 5 XP, раз в день на колоду; дни серий идут в календарь занятий и в серию дней. Возраст в настройках теперь от 4 лет; для 4–5 лет вместо занятий по неделям на главной — «Играть». Озвучки для малышей пока нет (записи диктора нужно заказать отдельно).
Коллекция героев (/chess/collection) — 23 карточки: мудрецы Востока и 18 чемпионов мира с портретами и подписями; открываются сами, по одной за каждые 30 XP (src/lib/collection.ts); новая карточка — плашка со ссылкой.
Рейтинг (/leaderboard) — общая таблица для вошедших в аккаунт: очки за неделю (с понедельника по Ташкенту) и за всё время, по направлениям (всего, математика, шахматы, шахматные задачи, быстрый счёт) и возрастным группам (4–6, 7–9, 10+), плюс «кто в чём силён» — тройка лучших в каждом направлении. Участие — только с разрешения родителя (выключатель в «Для взрослых» → Настройки, для каждого ребёнка отдельно; нужны вход и имя в игре). Видны лишь имя в игре, аватарка, уровень и очки: настоящего имени и возраста нет. Очки считает сервер по сохранённому прогрессу (xpBreakdown в src/lib/xp.ts), а не по числам от клиента; таблица lab_scores, API GET /api/play/leaderboard. Выключили участие или удалили аккаунт — запись исчезает сразу.
Шахматы по сети с друзьями (/chess/online) — после входа в аккаунт ребёнок выбирает придуманное имя в игре (не настоящее), ищет друзей по имени, дружит и играет партии на расстоянии: часы (без часов, 5, 10, 15+10 минут), сдача, ничья, отмена в начале, «сыграть ещё»; рядом — переписка с другом; в списке друзей видна серия дней с занятиями 🔥 (одно число, POST /api/play/streak). Каждый ход проверяет сервер (src/lib/online.ts, chess.js), время у ушедшего игрока выходит само. Безопасность: играть и писать можно только с друзьями; в сообщениях нет ссылок, телефонов, почты и грубых слов; у родителя в настройках три выключателя — игра по сети, переписка и «меня можно найти по имени»; можно заблокировать. Нужны вход (Google или Telegram) и база Neon — см. docs/online-play.md.
Вид доски и звук ходов — ребёнок (в «🎨 Моя доска и звук» на странице «Играть») или родитель (настройки) выбирает цвета доски (дерево, зелёная, морская, фиалка, ягодная; src/lib/boardLook.ts) и набор звуков: «Деревянные» — записанные звуки хода, взятия, рокировки, превращения, шаха и неверного хода (public/audio/sfx, сделаны ElevenLabs Sound Effects, играют через Web Audio с лёгкой вариацией высоты) или «Мягкие» — синтезированные. Выбор хранится на устройстве и не синхронизируется.
Озвучка — только записи диктора ElevenLabs (все записи — модель Eleven v4, язык задаётся явно): условия всех задач по математике, карточки уроков шахматной школы, вопросы и ответы «Знаешь ли ты?», приветствие, легенды шести уровней, 32 истории «Тайн и легенд» и похвала — на обоих языках (по-русски — один голос «Anna Zub – Warm Multilingual Voice» во всех записях, public/audio; по-узбекски — голос «Uzbekcha», public/audio/uz). Кнопка «🔊 Прочитать» есть только там, где есть запись на языке интерфейса; голос браузера не используется. Оглавление записей src/content/voice-clips.json хранит отпечаток озвученного текста: изменился текст задачи или урока — тест voice.test.ts напомнит перезаписать клип; после записи оглавление обновляется командой WRITE_VOICE_MANIFEST=1 npx vitest run tests/voice.test.ts. Озвучку можно выключить в настройках родителя.
Голос после ответа зависит от ситуации (src/lib/voice.ts — CUES, src/lib/feedback.ts — retryCue/praiseCue): в задачах по математике и логике после неверной проверки диктор говорит ту же мысль, что написана на экране («проверь на маленьком примере», «перечитай условие», «часть ответа сходится», «почти — проверь вычисления» для числа рядом с верным), на третьей, шестой… попытке предлагает подсказку или взрослого; похвала — за усилие, а не «ты умный» («с первого раза — внимательность», «получилось — упорство», «помогла подсказка — тоже сила»). Шахматные реплики («посмотри, кто кого атакует», «поищи шах, взятие или угрозу», «король под шахом», «фигура связана») звучат только в шахматах, в том числе при невозможном ходе. Звонкие реплики записаны моделью v4 (ru — Anna Zub, uz — «Uzbekcha»). Короткие записи есть и для вопросов «быстрых примеров» (малышам 4–5 лет вопрос читается сам), шагов знакомства, итога дня и «передохнём?»; условия всех шахматных упражнений озвучены кнопкой «Послушать» (public/audio/exercises, отпечатки текстов в voice-clips.json).
Звуки доски — ход, взятие, рокировка, превращение, шах и «так нельзя» синтезируются прямо в браузере (Web Audio, без файлов), работают без интернета и выключаются отдельно от озвучки.
Школа эндшпиля (/chess/endgames): король и пешка против короля — правило квадрата, оппозиция, ключевые поля, задачи на единственный ход и игра с роботом, который знает эти позиции наизусть (точная таблица всех 200 тысяч позиций строится в браузере за доли секунды).
Доска анализа (/chess/analysis): ходи за обе стороны, возвращайся и пробуй другие ходы, вставь FEN или PGN; робот-подсказчик показывает оценку, шкалу преимущества и стрелку лучшего хода. Из разбора партии любую позицию можно открыть на доске анализа.
Аккаунт (по желанию): вход через Google или Telegram, чтобы прогресс был на всех устройствах. Без входа всё работает, как раньше. Прогресс двух устройств сливается без потерь: решённое остаётся решённым, рекорды — наибольшие.
Без интернета — открытые хотя бы раз страницы, картинки и файлы сборки сохраняются, и платформа работает офлайн (service worker public/sw.js).
Печать
Для родителя (раздел закрыт PIN-кодом)
/parent/report): дни с занятиями, активные минуты по дням (считаются по тому, что ребёнок реально делает на сайте, а не по открытой вкладке), решённое по математике и шахматам, медиана времени на задачу, подсказки как хорошая привычка. Без процентов и рейтингов; тихая неделя описана спокойно. Отчёт можно распечатать.CRON_SECRET (docs/login-setup.md).localStorage браузера. Перенести его на другое устройство можно через «Настройки → Сохранить в файл».lab_progress в базе Postgres на Neon; строка подключения есть только у сервера сайта, таблицу он создаёт сам. Как подключить вход — docs/login-setup.md. Пока переменные окружения не заданы, кнопок входа нет.robots.txt, X-Robots-Tag: noindex), кроме двух страниц для родителей: /about («О платформе») и /privacy (какие данные где хранятся). Контакт для вопросов о данных — переменная NEXT_PUBLIC_CONTACT (необязательно), адрес сайта — APP_URL.DELETE /api/account.tests/ru-gender.test.ts), а младшему возрасту уровни и опыт показываются без чисел. Разбор интерфейса и план улучшений — docs/ui-ux-audit.md.Стек: Next.js 16 (App Router, статическая генерация), React 19, TypeScript, Tailwind CSS 4, Vitest, Playwright. Шахматы: chess.js (правила на доске, BSD-2-Clause), react-chessboard (доска, MIT) и собственный движок в src/lib/engine (генератор ходов 0x88, альфа-бета с перебором взятий, решатель «мат в N ходов») — он играет за робота и проверяет задачи.
npm install
npm run dev # http://localhost:3000
npm run check # ESLint + TypeScript + тесты + Prettier
npm run test # проверка контента и ответов
npm run test:e2e # сквозные тесты в браузере (собирает и запускает сайт)
npm run build # production-сборка
Для test:e2e без установленных браузеров Playwright укажите свой Chromium: PLAYWRIGHT_CHROMIUM_PATH=/путь/к/chrome. Чтобы проверить уже запущенный сайт, задайте E2E_BASE_URL=http://localhost:3000.
src/
content/ контент программы (данные, без кода отображения)
types.ts схема: день, задача, иллюстрации, способы ответа
meta.ts разделы дня, уровни, лестница подсказок
week1/ … week3/ задачи недель 1–3 (day1..7.ts и index.ts)
chess/ шахматная школа: 6 уровней (pawn.ts … king.ts), задачи (puzzles.ts), дебюты
(openings.ts), знаменитые партии (games.ts), энциклопедия (encyclopedia.ts),
картинки: подписи (images.ts) и манифест с авторами и лицензиями (images.json)
review.ts 10 вопросов недельного обзора
guide.ts методичка для родителя
program.ts список недель и вспомогательные функции
*.uz.ts, chess/uz/ узбекская версия: накладки на русский контент (только тексты; ответы, позиции
и id берутся из оригинала — см. localize.ts и docs/uzbek-style.md)
uz.ts сборка узбекских дней и недель на сервере
chess/endgames.ts школа эндшпиля: уроки и задания (позиции проверяет таблица KPK)
lib/ логика: робот (BFS), фигуры, развёртки куба, кратчайший путь,
калькулятор, волшебный треугольник, исполнитель, ханойская башня,
переправа, переливания, судоку, числовая стенка, круги Эйлера, весы,
игра с камешками, шифр Цезаря, гири, росчерк, шахматы (chess.ts, play.ts),
шахматный движок (engine/), проверка ответов, прогресс
lib/lang.ts, i18n.ts языки: пары t("…", "…"), запись ходов фигурками, выбор языка
lib/engine/kpk.ts точная таблица «король и пешка против короля» (ретроградный анализ)
lib/sync.ts, server/ аккаунт: слияние прогресса двух устройств, вход через Google и Telegram, хранилище
lib/leaderboard.ts рейтинг: недели, возрастные группы, направления (чистая логика)
lib/online.ts, server/playStore.ts игра по сети: правила партии и часов, имена, друзья, переписка
components/ интерфейс: занятие, иллюстрации, задачи-инструменты, шахматы, печать, раздел родителя
app/ страницы (Next.js App Router); app/api — вход в аккаунт, прогресс, игра по сети (/api/play)
docs/ uzbek-style.md — как писать по-узбекски; login-setup.md — как подключить вход; online-play.md — игра по сети
public/images/chess/ уменьшенные картинки энциклопедии (webp) — см. «Картинки и лицензии»
scripts/ fetch-chess-images.mjs — загрузка картинок с Wikimedia Commons;
build-puzzles.mjs — банк задач из базы Lichess (public/puzzles, src/content/chess/puzzle-bank.json)
tests/ Vitest: структура контента, правила инструментов и перебором — правильность
каждого ответа (answers.test.ts — неделя 1, answers-week2.test.ts, answers-week3.test.ts,
chess.test.ts — шахматная школа, chess-content.test.ts — задачи, дебюты, партии,
engine.test.ts — движок: perft и сверка с chess.js,
analysis.test.ts — разбор партии, фора, часы, тренажёр координат,
bundle2.test.ts — повторение, шторм, награды, календарь, PGN, voice.test.ts — озвучка,
chess-images.test.ts — картинки: файлы, лицензии, подписи, ссылки из контента,
puzzle-bank.test.ts — банк задач Lichess: законность каждой задачи, маты — своим движком,
скрытый рейтинг, подбор задач, «Дятел»; gamification.test.ts — опыт, задание дня, мягкая серия,
сертификат, короны, тренажёры; activity.test.ts, report.test.ts, weekly-reports.test.ts — активное время и ограничение, итоги недели, рассылка в Telegram)
e2e/ Playwright: главные сценарии на компьютере и телефоне; puzzles.spec.ts — задачи из базы,
уровень и сложность, «Дятел»; uzbek.spec.ts — все страницы
на узбекском без единой русской буквы, переключение языка, эндшпиль, доска анализа;
gamification.spec.ts — задание дня, сертификат, короны, тренажёры;
parent-time.spec.ts — итоги недели, дневное ограничение и карточка отдыха, приглашение на неделю;
ux.spec.ts — замок родителя, выход из партии, режим «Сам», мягкая проверка;
no-hscroll.spec.ts — на телефоне нет горизонтальной прокрутки
src/content/week4/day1.ts … day7.ts по образцу недель 1–3 (типы подскажет TypeScript).src/content/week4/index.ts и добавьте её в массив WEEKS в src/content/program.ts.tests/answers-week4.test.ts и запустите npm run check.Страницы, печать и раздел родителя для новой недели появятся автоматически.
Все фотографии и картины шахматной энциклопедии берутся с Wikimedia Commons и только с лицензиями, которые не требуют разрешения: общественное достояние, CC0, CC BY, CC BY-SA. Под каждой картинкой и в разделе «Откуда картинки» показаны автор, лицензия и ссылка на источник — так требуют лицензии CC BY и CC BY-SA.
scripts/fetch-chess-images.mjs — список нужных статей Википедии (или конкретных файлов Commons). Скрипт запрашивает свободную заглавную картинку каждой статьи, у Commons — лицензию и автора файла, отбрасывает всё несвободное, скачивает, уменьшает (sharp, не больше 960 px, плюс квадратная миниатюра 240 px) и записывает src/content/chess/images.json. Исходники кэшируются в node_modules/.cache/chess-images.src/content/chess/images.ts — подписи и описания по-русски для каждой картинки; контент ссылается на картинки по id (pictures у партий, image у событий, чемпионов, рекордов и дебютов).ENTRIES скрипта, запустите node scripts/fetch-chess-images.mjs --only id, добавьте подпись в images.ts и ссылку из контента. tests/chess-images.test.ts проверит, что файл на месте, лицензия свободная, подпись есть, а каждая картинка где-то используется.Банк задач собирается из открытой базы Lichess (https://database.lichess.org/#puzzles, лицензия CC0) и лежит в репозитории: public/puzzles/<тема>.json (задачи одной темы по возрастанию рейтинга), public/puzzles/mix.json (понемногу из каждой темы и ступеньки сложности — для «Задач по силам», «Шторма», «Серии» и «Дятла») и src/content/chess/puzzle-bank.json (оглавление и версия для кэша). Страница загружает только нужную тему; офлайн-кэш подгружает остальные, пока есть интернет.
Пересобрать банк (например, раз в полгода, когда база пополнится):
curl -O https://database.lichess.org/lichess_db_puzzle.csv.zst # ~300 МБ
node scripts/build-puzzles.mjs lichess_db_puzzle.csv.zst # Node 22.15+, ~30 секунд
Скрипт берёт популярные задачи (popularity ≥ 85, решали ≥ 500 раз, рейтинг устоялся) с рейтингом 400–1900 и решением не длиннее трёх своих ходов, раскладывает их по нашим темам (порядок и соответствие меткам Lichess — в THEMES скрипта), поровну по ступенькам сложности, и проверяет каждую через chess.js. tests/puzzle-bank.test.ts ещё раз проверяет каждую задачу: ходы законны, мат — это мат, а часть матов перепроверяет своим движком.
Тесты tests/answers*.test.ts независимо пересчитывают каждый ответ:
tests/uz-content.test.ts проверяет узбекскую версию: в ней не осталось ни одной кириллической буквы, накладки не ссылаются на несуществующие id и не трогают позиции и ходы, переведено всё, клетки карт и шифры согласованы с ответами (шифр пересчитывается заново), в загадках ответ — один из вариантов. tests/endgame.test.ts сверяет задания эндшпиля с точной таблицей: правильные ответы, единственный верный ход, робот честно защищается и выигрывает. tests/account.test.ts — подпись сессии, проверка подписи Telegram, разбор id_token Google, слияние прогресса.
tests/content.test.ts следит за правилами программы в каждой неделе: 6–10 задач в дне, 5 подсказок, баланс разделов, не больше 4 задач уровня 🔴 и ⭐, сложность растёт к концу недели и от недели к неделе, привычки и названия не повторяются, ключ ответа согласован с вариантами. Он же проверяет качество текста: нет латинских букв в русских словах, в формулах стоит настоящий минус «−», нет слова «неправильно».
Проект разворачивается на Vercel как обычное Next.js-приложение (npm run build). Переменные окружения нужны только для необязательного входа в аккаунт — см. docs/login-setup.md; без них сайт работает как раньше, с прогрессом в браузере.
/chess/certificate/<уровень>): когда звание получено, открывается лист A4 (альбомный) с именем ребёнка, званием, датой и местом для подписи родителей — его можно распечатать. Ссылки — на странице уровня и в наградах./chess/drills): «Кто в опасности?» — в позиции из настоящей партии найти свои фигуры, которые можно забрать (нет защиты или нападает фигура дешевле); «Запомни» — несколько секунд смотреть на доску и показать, где стояла фигура; «Путь коня» — довести коня до звезды за наименьшее число ходов, потом — в обход клеток, которые бьют пешки. Рекорды сохраняются./chess/awards): 25 наград за задачи, партии, дебюты, звания и привычку заниматься, календарь занятий за 14 недель и серия дней подряд.