ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Асабісты слоўнік беларускіх слоў і выразаў з перакладам і малюнкамі
Translation pending
EducationTypeScript · PLpgSQLGitHub @FilippovichSergeyOnlineOwner 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
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 ↗Асабісты слоўнік: беларускае слова ці выраз кірыліцай і лацінкай, пераклад на ангельскую і рускую, малюнак, камент і тэгі.
Стэк: 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 чарга чарнавікоў