ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
9세 이상 어린이를 위한 온라인 교실 회로를 아두이노와 연결해 블록이나 코드로 프로그래밍 첫 레슨 바로 체험 회원가입 없이
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.
교육TypeScript · JavaScriptGitHub @weeks-cz온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Educational IoT platform for Weeks camps (Arduino, 21 tasks, star/reward system). Pre-production.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
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.