ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Асабісты слоўнік: беларускае слова ці выраз кірыліцай і лацінкай, пераклад на ангельскую і рускую, малюнак, камент і тэгі.
Стэк: Next.js 16 (App Router, Server Actions), Supabase (Postgres, Storage, Auth), Tailwind CSS 4, дэплой на Vercel.
supabase/schema.sql і націсніце Run. Гэта створыць табліцу words, bucket images і правілы доступу: чытаць могуць усе, пісаць толькі аўтарызаваныя.supabase/seed.sql, каб дадаць пачатковыя словы.Project URL і публічны ключ (anon ці publishable).cp .env.example .env.local
Запоўніце NEXT_PUBLIC_SUPABASE_URL і NEXT_PUBLIC_SUPABASE_ANON_KEY у .env.local, потым:
npm install
npm run dev
Адкрыйце http://localhost:3000, увайдзіце і дадайце першае слова.
NEXT_PUBLIC_SUPABASE_URL і NEXT_PUBLIC_SUPABASE_ANON_KEY. Ключ SUPABASE_SERVICE_ROLE_KEY і GEMINI_API_KEY у Vercel дадаваць не трэба, яны патрэбныя толькі лакальнаму скрыпту.Уручную. Згенеруйце малюнак у дадатку Gemini (Nano Banana) ці ў Whisk, спампуйце і загрузіце праз форму слова.
Пачкамі праз дадатак Gemini, без API. Gem «Беларускія карткі» малюе малюнкі ў адным стылі па спісе слоў, а скрыпты рыхтуюць спіс і загружаюць спампаваныя малюнкі на сайт. Падрабязна ў docs/gemini-gem.md.
npm run images:batch -- 10
npm run images:upload -- images-batch/<папка>
Аўтаматычна праз Gemini API. Скрыпт бярэ апублікаваныя словы без малюнка, генеруе ілюстрацыю ў адзіным стылі, сціскае яе ў WebP 768×768 і захоўвае ў Supabase Storage. Чарнавікі прапускаюцца.
.env.local дадайце GEMINI_API_KEY і SUPABASE_SERVICE_ROLE_KEY (Project Settings → API → service_role). Гэты ключ дае поўны доступ да базы, не публікуйце яго.npm run generate-images -- 5 --dry-run
npm run generate-images -- 5
Стыль малюнкаў задаецца зменнай IMAGE_STYLE у .env.local. Мадэлі задаюцца праз GEMINI_IMAGE_MODELS спісам праз коску, па змаўчанні gemini-3.1-flash-image,gemini-2.5-flash-image. Калі мадэль недаступная, скрыпт бярэ наступную.
Скрыпт чытае HTML-экспарт канала, дзе кожнае паведамленне пачынаецца радком «Кірыліца / Lacinka / English / Русский». Тлумачэнне і цытата трапляюць у камент, дата паведамлення становіцца датай дадання, кожнае слова атрымлівае тэг verbarium. Паведамленні без такога радка прапускаюцца, а словы, якія ўжо ёсць у базе, не дублююцца.
npm run import-telegram -- words/messages2.html --dry-run
Калі ў .env.local ёсць SUPABASE_SERVICE_ROLE_KEY, скрыпт без --dry-run запісвае словы наўпрост у базу. Без ключа ён стварае побач SQL-файл, які трэба выканаць у Supabase SQL Editor.
Папка words/ і файл Словы.txt не трапляюць у git.
Скрыпт раз на дзень чытае публічныя каналы са спіса src/lib/telegram-channels.ts і дадае новыя словы і выразы ў базу. Уваход у Telegram не патрэбны: чытаецца вэб-версія канала t.me/s/<канал>.
Як разбіраюцца пасты
autoPublishExact: true такія словы публікуюцца адразу.readImages: false.scripts/telegram/lacinka.ts, а не ШІ./drafts, дзе кожнае можна апублікаваць, выправіць ці выдаліць.Падрыхтоўка, адзін раз
supabase/migrations/2026-10-11_telegram_sync.sql у Supabase SQL Editor.SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, GEMINI_API_KEY.Пасля гэтага workflow .github/workflows/sync-telegram.yml запускаецца сам штодня а 05:23 UTC. Запусціць уручную можна на ўкладцы Actions → Сінхранізацыя Telegram → Run workflow.
Лакальны запуск
npm run sync-telegram -- --dry-run
Без --dry-run скрыпт запісвае ў базу. Іншыя параметры: --channel <назва> для аднаго канала і --pages <N> для глыбіні першага запуску.
Ліміты Gemini. Бясплатны тарыф дае каля 20 запытаў на дзень на мадэль. Скрыпт траціць адзін запыт на пачку пастоў і пры вычарпанні бярэ наступную мадэль са спіса. Калі ліміт скончыўся ва ўсіх мадэлях, ён спыняецца і наступным разам працягвае з таго ж паста.
Як дадаць канал. Дапішыце радок у src/lib/telegram-channels.ts: з назвай, апісаннем і тэгам. Канал мусіць быць публічным. Ён адразу з'явіцца і ў спасылках унізе сайта.
supabase/schema.sql схема базы і палітыкі доступу
supabase/seed.sql пачатковыя словы
supabase/migrations/ змены схемы для ўжо створанай базы
src/proxy.ts абнаўленне сесіі, абарона старонак дадання і рэдагавання
src/lib/supabase/ кліенты Supabase для браўзера і сервера
src/lib/words.ts запыты да табліцы words
src/app/page.tsx спіс слоў з пошукам
src/app/words/[id]/page.tsx старонка слова
src/app/words/new/page.tsx дадаць слова
src/app/words/[id]/edit/ рэдагаваць слова
src/app/words/actions.ts Server Actions: стварэнне, абнаўленне, выдаленне
src/app/login/ уваход і выхад
src/components/WordForm.tsx форма з загрузкай малюнка наўпрост у Storage
scripts/generate-images.ts пакетная генерацыя малюнкаў праз Gemini
scripts/import-telegram.ts імпарт слоў з экспарту Telegram
scripts/sync-telegram.ts штодзённая сінхранізацыя з каналаў
scripts/telegram/ спіс каналаў, чытанне, разбор, лацінка
.github/workflows/ расклад запуску ў GitHub Actions
src/app/drafts/page.tsx чарга чарнавікоў