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 чарга чарнавікоў