OhMyGame
OhMyGame은 AI로 게임을 만들 수 있는 오픈소스 스튜디오로, 디자인·구축·플레이테스트·출판을 하나의 앱에서 모델 키와 함께 수행합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A fully customizable video game trivia platform with leaderboards, profiles, and daily challenges.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Bilingual (ru / en) video-game quiz: Classic, Blitz, and Daily Challenge, with image-guess questions, a leaderboard, achievements, and an admin content pipeline.
Status: public beta — live portfolio product, not a private prototype.
Live: https://www.game-mind.ru
USER | ADMIN; JWT session is identity only, current role / isActive come from the databaseMEDIUM × 10 set per Moscow calendar day; one attempt per userTEXT and IMAGE_GUESS (WebP; seed files in public/quiz-images/, uploads via object storage)optionId); weights EASY=1 / MEDIUM=2 / HARD=3; client never sends a scoreQuizResult.score per user; optional difficulty and rolling 7/30-day filters/ru/... and /en/... for UI and question/option text| Layer | Choice |
|---|---|
| App | Next.js 16 (App Router) · React 19 · TypeScript |
| Database | PostgreSQL on Neon — separate local and production projects |
| Access | Prisma ORM + raw pg on Neon-critical paths |
| Auth | Auth.js (next-auth v5) — credentials + JWT |
| Validation | Zod on Server Actions |
| UI | Tailwind CSS v4 · light/dark via CSS variables · Scoreboard Editorial |
| Media | Vercel Blob + same-origin /media rewrite (local: public/media/) |
| Tests | Vitest unit tests · GitHub Actions on master |
| Deploy | Vercel Hobby · custom domain (REG.RU DNS) |
Architecture (layers, Neon queues, quiz invariants): docs/ARCHITECTURE.md.
src/
app/ # [locale] routes, layouts, Route Handlers
proxy.ts # Next.js 16 edge guard (locale + JWT UX only)
features/ # auth, quiz, timed-mode, daily-challenge, leaderboard,
# profile, admin, achievements, content
entities/ # data access (Prisma and/or parameterized pg)
lib/ # prisma, auth guards, direct-pg, rate-limit, storage
shared/ # UI, i18n dictionaries, utils
prisma/ # schema + migrations
scripts/ # seed, Windows migrate helpers, content CLI, smokes
content/drafts/ # bilingual draft JSON batches (import as DRAFT only)
docs/ # architecture, deploy, hot path, content, i18n
Copy env and fill local Neon credentials (see .env.example):
cp .env.example .env
Install and generate the Prisma client:
npm install
npm run db:generate
Apply migrations. On Windows, prisma migrate dev may fail with P1017 — prefer:
node scripts/apply-named-migration.cjs <migration_folder_name>
Optional seed (bootstrap bank only — not the full production catalog):
npm run db:seed
npm run images:update-db
Dev server:
npm run dev
Open http://localhost:3000/ru.
Keep local and production Neon URLs separate. Do not comment out DATABASE_* lines in .env — some scripts regex-match commented values. Use distinct PROD_* names or a temporary swap with restore.
Use two different Postgres URLs:
| Variable | Neon tab | Hostname |
|---|---|---|
DATABASE_URL | Pooled | contains -pooler; add &pgbouncer=true |
DATABASE_URL_UNPOOLED | Direct | without -pooler |
Do not paste the same string into both. Production also needs AUTH_SECRET, AUTH_URL, and Blob vars (BLOB_READ_WRITE_TOKEN, BLOB_PUBLIC_BASE_URL). Full list: .env.example and docs/DEPLOY.md.
| Script | Description |
|---|---|
npm run dev | Dev server (stops a leftover Next process first) |
npm run build | prisma generate + production build |
npm run lint | ESLint |
npm run test | Vitest unit suite (no Neon) |
npm run db:generate | Generate Prisma client |
npm run db:migrate | Prisma migrate dev |
npm run db:seed | Seed bilingual bootstrap questions |
npm run db:studio | Prisma Studio |
npm run content:validate-drafts | Validate draft JSON without DB writes |
npm run content:import-drafts | Import TEXT drafts as DRAFT |
npm run images:optimize | Raw screenshots → WebP |
npm run images:update-db | Point QuestionAsset URLs at WebP |
| Doc | What it is |
|---|---|
docs/ARCHITECTURE.md | Layers, Neon access, quiz hot path, auth, media |
docs/QUIZ_NEON_HOT_PATH.md | Binding rules for start / submit / result on Neon |
docs/DECISIONS.md | ADR-style log (why each choice landed) |
docs/DEPLOY.md | Production Neon + Vercel + domain |
docs/CONTENT_PIPELINE.md | Draft JSON → import → publish |
docs/QUESTION_I18N.md | RU/EN question and option rules |
docs/QUIZ_IMAGES.md | IMAGE_GUESS assets and optimize pipeline |
docs/ROADMAP.md | Roadmap from Oct 2026: phases, steps, status (MVP history in docs/archive/) |
AGENTS.md | How AI assistants work in this repo (CLAUDE.md imports it) |
Quiz setup URL: /:locale/quiz (not /quiz/setup).
Unit tests cover pure domain rules (scoring, publish quality, cycle draw, filter parse, …). They do not talk to Neon.
npm run test
CI: .github/workflows/test.yml runs unit tests plus lint and tsc on push/PR to master. Fragile Windows + Neon paths stay as manual/scripts/smoke-*.cjs checks.