ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
Online učebna pro děti od 9 let. Zapojíš obvod s Arduinem a naprogramuješ ho z bloků nebo v kódu — první lekci si zkusíš hned, bez registrace.
Translation pending
EducationTypeScript · JavaScriptGitHub @weeks-czOnlineOwner 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
Educational IoT platform for Weeks camps (Arduino, 21 tasks, star/reward system). Pre-production.
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Výuková IoT platforma pro děti z Weeks táborů. 21 úkolů s Arduinem ve třech obtížnostech (začátečník, pokročilý, expert), sbírání hvězdiček, témata, avatary a odměnový systém.
strict), Tailwind CSS v4, Framer Motion, Lucide React./api/notify-account je serverless funkce (odesílá potvrzovací e-maily přes Resend).localStorage pod klíčem iot-camp-screen-state-v6. Žádné migrace — když bumpujeme verzi storage, stará data se prostě smažou.Z původní vanilla JS aplikace (v legacy-vanilla/) jsme přešli na Next.js kvůli typovému systému, komponentám a serverovému endpointu pro e-maily — vanilla verze byla dál neudržitelná.
Uděláš jednou.
npm install -g @openai/codex (potřebuje Node 20+). Přihlas se: codex login.git clone https://github.com/lxkask/weeks-iot.git
cd weeks-iot
npm install
cp .env.local.example .env.local
Pro lokální dev můžeš nechat RESEND_API_KEY prázdný — jen e-maily se neodešlou. Reálný klíč mám já (Lukáš), nikdy ho nedávej do repa.npm run dev
Otevře se na http://localhost:3000.dev, nikdy ne na main.
git checkout dev
Hotovo.
Tohle je hlavní část. Codex CLI je nástroj, který upraví kód podle prompty. Trik je dát mu přesné cesty k souborům, jinak hádá a dělá nepořádek.
git pullcodexdev. Vercel postaví preview během ~30 s.Úkoly jsou rozdělené do sekcí podle obtížnosti. Sekce udržují konzistentní reward: 5. Pokud chceš úkol s validací kódu, musíš dotknout taky strict-rules.ts nebo task-solutions.ts.
Přidej nový úkol "Blikání dvěma LED" do sekce "Pokročilý" v src/lib/tasks.ts.
- ID úkolu: blink-two-leds
- Obtížnost: pokročilý
- Reward: 5 hvězdiček (jako ostatní v té sekci)
- Popis: česky, vysvětluje že má student rozblikat dvě LED střídavě
- Image: public/task-images/blink-two-leds.png (obrázek dodám sám)
- Validace: přidej granulární pravidla do src/lib/strict-rules.ts
(musí obsahovat pinMode pro 2 piny, 2x digitalWrite, delay)
- Pokud potřeba, přidej referenční řešení do src/lib/task-solutions.ts
Po úpravě zkontroluj, že všechny TypeScript typy sedí (src/types/index.ts).
Cesty k souborům, které Codex (skoro vždy) musí dotknout:
src/lib/tasks.ts — přidat objekt do pole SECTIONS.src/lib/strict-rules.ts — granulární pravidla (volitelně).src/lib/task-solutions.ts — bulk validátor / referenční řešení (volitelně).public/task-images/<id>.png — obrázek schématu, ručně tam dej PNG ≤ ~200 KB.V src/lib/tasks.ts najdi úkol s ID "led-basic" a v poli description
oprav překlep: "rozsvit" → "rozsviť" (s diakritikou).
Nech vše ostatní beze změny.
Tip: pokud nevíš ID, otevři src/lib/tasks.ts a vygrep si tam část původního textu.
Téma jsou barevné varianty (světlé/tmavé/akcentové). Themes jsou propojené přes 3 soubory + CSS:
Přidej nové téma "ocean" (modrá akcentová) do projektu.
1. src/lib/themes.ts — přidej ThemeOption se všemi metadaty.
2. src/types/index.ts — rozšiř type ThemeId o "ocean".
Pokud chceš nový accent (např. "azure"), rozšiř i ThemeAccent.
3. src/app/globals.css — přidej blok [data-theme="ocean"] { ... }
se VŠEMI 20 CSS proměnnými. Vzor zkopíruj z existujícího tématu.
Dodrž stávající strukturu, neměň nic jiného.
Poznámka: Tailwind v4 v tomhle projektu NEPOUŽÍVÁ tailwind.config.ts. Konfig je inline v src/app/globals.css přes @theme inline. Codex si to občas plete — pokud začne navrhovat tailwind.config.ts, zastav ho.
Topic = velká kategorie (IoT, Python, Web…). Aktuálně má reálný obsah jen iot.
V src/lib/topics.ts přepni "enabled: false" na "enabled: true"
u topicu s ID "python".
POZOR: nezapomeň, že topic musí mít vlastní úkoly / themes / avatars,
jinak bude jen prázdná dlaždice. Pokud obsah nemáme, nedělej nic.
Tohle pusť vždycky, než commitneš. V tomhle pořadí:
npx tsc --noEmit
Musí vrátit 0 chyb. Pokud chyba, hoď výstup zpět Codexu: "Oprav tyhle TS errory: …"npm run build
Catches problémy, které tsc nezachytí (Next.js, React Server Components, importy obrázků).npm run dev
Otevři http://localhost:3000 a ručně projdi to, co jsi měnil. Nový úkol → klikni na něj. Nové téma → přepni v Style Shopu.git add -A
git commit -m "feat(tasks): add blink-two-leds task"
Prefixy: feat(...) nová funkce, fix(...) oprava, docs: dokumentace, chore(...) údržba.git push
Vercel – Preview → Details.dev): https://weeks-iot-git-dev-<team>.vercel.app — link najdeš v GitHubu u commitu (viz krok 6 výše). URL je stabilní, můžeš si ji uložit.https://ucebna.weeks.cz (od 29. 9. 2026; iot.weeks.cz na ni přesměrovává 308). Aktualizuje se jen při mergi do main — to dělám já (Lukáš).Workflow do produkce: dev → otevřu PR → review → merge do main → ~30 s a je to nahoře.
npm run dev → http://localhost:3000.npm run build.npm run lint.npx tsc --noEmit.Env proměnné (.env.local, viz .env.local.example):
RESEND_API_KEY — pro /api/notify-account. Lokálně může být prázdný.ACCOUNT_EMAIL_FROM — odesílatel potvrzovacích e-mailů.NEXT_PUBLIC_TEST_MODE — když 1, nové účty dostanou testovací zůstatek hvězdiček. V produkci nech prázdné.Časté gotchas:
.env.local vyžaduje restart npm run dev (Ctrl+C a znovu).git pull zkus npm install (mohly přibýt deps).iot-camp-screen-state-v6 klíče v kódu smaž localStorage v DevTools.rm -rf .next.Klid. Na dev produkci nerozbiješ. Postup od nejméně po nejvíc destruktivní:
# Co jsem vlastně změnil?
git status
git diff
# Vrátit změny v jednom souboru (ještě před commitem):
git checkout -- src/lib/tasks.ts
# Odložit rozdělanou práci stranou (vrátíš se k ní později):
git stash
# ... později:
git stash pop
# DESTRUKTIVNÍ: zahodit všechny lokální změny a srovnat se s remote dev.
# Použij JEN když víš, že o nic nepřijdeš.
git reset --hard origin/dev
Pokud jsi pushnul rozbitý kód na dev: nepanikař a nedělej force-push. Buď udělej revert commit (git revert <sha> a push), nebo otevři fix branch a pushni opravu normálně. Když nevíš, napiš mi.
Tyhle věci .gitignore už řeší, ale ať víš:
.env.local — obsahuje reálný RESEND_API_KEY. Nikdy to nesmí do gitu.node_modules/, .next/, out/ — generované soubory, váží stovky MB..vscode/settings.json, .idea/ — IDE configy jsou osobní.git status # co se změnilo
git diff # ukaž změny řádek po řádku
git pull # stáhni nejnovější verzi
git checkout dev # přepni na dev branch
git checkout -- <soubor> # zahoď změny v jednom souboru
git add <soubor> # připrav soubor ke commitu
git add -A # připrav vše
git commit -m "feat(x): popis" # commit
git push # pošli na GitHub
git stash # odlož rozdělanou práci
git stash pop # vrať odloženou práci
git log --oneline -10 # posledních 10 commitů
git reset --hard origin/dev # DESTRUKTIVNÍ: zahodit vše lokální
npm install # nainstaluj dependencies
npm run dev # dev server na :3000
npm run build # produkční build (ověření)
npm run lint # ESLint
npx tsc --noEmit # rychlá TypeScript kontrola
codex # spusť interaktivně v rootu projektu
codex login # přihlášení (jen jednou)
Když si nejsi jistý, zeptej se (Lukáš) než zkusíš naslepo. Lepší 5 min konverzace než hodina hledání, co se stalo.