尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Základ webu pro online kurzy s uživatelskými účty, postaveno na Next.js.
prisma/schema.prisma # datový model: User, Course, Lesson, Enrollment, ...
src/lib/prisma.ts # Prisma klient (singleton)
src/lib/auth.ts # NextAuth konfigurace
src/app/
page.tsx # úvodní stránka
kurzy/page.tsx # výpis kurzů
prihlaseni/page.tsx # přihlašovací formulář
registrace/page.tsx # registrační formulář
api/auth/[...nextauth]/ # NextAuth route handler
api/registrace/ # endpoint pro vytvoření účtu
.env.example do .env a doplň DATABASE_URL (PostgreSQL) a AUTH_SECRET
(vygeneruješ pomocí openssl rand -base64 32).npm install
npm run db:migrate
npm run dev
Žáci si školu mohou přidat sami, ale je lepší naplnit tabulku School skutečnými školami
z Rejstříku škol MŠMT (open data) nebo z vlastního CSV (název;obec):
node prisma/import-schools.cjs vrejcelk.xml
node prisma/import-schools.cjs skoly.csv
U XML lze názvy tagů změnit parametry --record-tag, --name-tag a --city-tag. Duplicity se přeskočí.
Aplikace běží na Cloudflare Workers přes OpenNext (@opennextjs/cloudflare), databáze PostgreSQL zůstává externí a připojuje se přes Hyperdrive.
id):
npx wrangler hyperdrive create ucimesehrou --connection-string="postgresql://USER:PASS@HOST:5432/DB"
Vlož id do wrangler.jsonc (místo REPLACE_WITH_HYPERDRIVE_ID).npx wrangler secret put AUTH_SECRET
ucimesehrou.org musí být přidána do účtu Cloudflare. Vlastní doména se nastavuje v routes ve wrangler.jsonc.npm run deploy # build přes OpenNext + wrangler deploy
npm run preview # lokální náhled v prostředí Workers
DATABASE_URL ukazující na produkční Postgres):
npx prisma migrate deploy
Lokálně se Prisma připojuje přes DATABASE_URL z .env. Na Workers se použije binding HYPERDRIVE.
Enrollment) a sledování postupu (LessonProgress).src/lib/auth.ts.Stránka /hrat-spolecne: kdokoliv založí hru (kvíz, závod nebo zlatá horečka), ostatní se připojí kódem. Stav se čte pollingem (~1 s), takže stačí Next.js a Postgres.
prisma/sql/live-games.sql v databázi (nové tabulky QuestionSet, LiveRoom, LivePlayer, LiveAnswer).prisma/sql/economy-feed.sql (nová tabulka EconomyEvent).src/lib/live/logic.ts, testy: npm test.src/lib/live/service.ts a src/app/api/live/, obrazovky: src/components/live/, texty: src/i18n/live.ts.Obsah kurzů je v prisma/content/*.cjs, SQL se generuje příkazem node prisma/build-courses-sql.cjs.
Předmět Fyzika je nová hodnota enumu Subject, proto se v databázi spouští ve dvou krocích:
prisma/sql/subject-fyzika.sql (přidá hodnotu FYZIKA),prisma/sql/courses-fyzika-6-9.sql, courses-cestina-mezery.sql, courses-matematika-mezery.sql, courses-fyzika-stredni.sql a courses-matematika-stredni.sql (kurzy a otázky; opakované spuštění nic nezdvojí).Farma, Město a Základna mají panel Výzvy (src/components/idle/ChallengePanel.tsx, API src/app/api/stale-hry/vyzvy/route.ts,
logika src/lib/idle/challenge.ts, testy v challenge.test.ts). Stav je v IdleState pod klíčem vyzvy, nové tabulky nejsou potřeba.
Stránka /kontakt (odkaz v menu Nastavení, v patičce a u výběru školy): formulář s kategoriemi Podpora (chyba v učivu, chyba ve stránce, chyba s účtem), Partnerství (partnerská škola, influenceři, učebnice pro materiály) a Přidání školy. Odkaz /kontakt?tema=add-school (nebo jiné id tématu či kategorie) formulář rovnou předvyplní.
prisma/sql/contact.sql v databázi (nová tabulka ContactMessage).ContactMessage (stav new), čtou se zatím přímo v databázi (např. npm run db:studio).src/lib/contact.ts (testy v npm test), API: src/app/api/kontakt/, texty: src/i18n/contact.ts.Záložka Craftování v profilu (/profil#craftovani): Bonusy, Avatary, Doplňky a Materiály.
CRAFT_ASSETS.md).src/lib/craft.ts (testy v npm test), server: src/lib/craft-server.ts, src/app/api/craft/, obrazovka: src/components/CraftPanel.tsx, texty: src/i18n/craft.ts. Stav je v IdleState (hra craft), takže není potřeba měnit databázi.