尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Quick mini-games to play solo or with friends: free, in your browser
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Quick mini-games for when you need a short break, solo or against your friends. Free, in the browser, nothing to download.
Play: https://afk-brb.vercel.app
Minijuegos rápidos para desconectar un rato, solo o contra tus amigos. Gratis y en el navegador.
apps/web Next.js (App Router) + PWA
apps/extension Chrome extension (WXT): the website inside the toolbar popup
packages/brand Brand name, copy and colours (single source of truth)
packages/games Pure game logic in TS, shared by client and server
packages/db Types generated from the Supabase schema
packages/avatars Procedural monsters (plain SVG, no React)
packages/ui CSS theme and components shared by the web app and the extension
supabase/ Config, migrations, seed and database tests
pnpm install
pnpm dev # web app at http://localhost:4321
pnpm test # game tests
pnpm typecheck
pnpm lint
Monster gallery to review the generator (development only): http://localhost:4321/dev/monstruos
Node 24 (see .node-version, used by fnm).
Requires Docker. The CLI is a dependency of the monorepo.
pnpm db:start # starts Postgres, Auth, Realtime, Studio…
pnpm db:status # local URLs and keys
pnpm db:migration name # new migration in supabase/migrations
pnpm db:reset # recreates the database from migrations + seed
pnpm db:types # regenerates packages/db/src/database.types.ts after a schema change
pnpm test:db # database tests (pgTAP): permissions, RLS, friendships, games
pnpm db:stop
Copy apps/web/.env.example to apps/web/.env.local and fill in the keys from pnpm db:status.
Ports (553xx, so they don't clash with other local Supabase projects):
API 55321 · Postgres 55322 · Studio http://127.0.0.1:55323 · Mailpit (auth emails) http://127.0.0.1:55324
Auth emails (e.g. "Forgot your password?") end up in Mailpit. Locally, Supabase only sends 2 emails an
hour (auth.rate_limit.email_sent in supabase/config.toml).
Seed test users (password password123): [email protected] (friend code AAAAA),
[email protected] (BBBBB) and [email protected] (CCCCC). Ana and Bob are friends, and Carla has sent
Ana a friend request.
start_run('2048') and gets { id, seed }.@repo/games using that seed.POST /api/runs/:id/finish (session cookie or Authorization: Bearer).finish_run/reject_run with the
secret key. The client never sends the score.In timed games (Minesweeper, Sudoku, Solitaire and Queens) the score is the time measured by the server,
minus pauses (pause_run/resume_run).
Games against friends work the same way: the server validates every move with @repo/games before
saving it with apply_match_move.
To go to the cloud: supabase link --project-ref <ref> and supabase db push.
The name isn't final yet. To change it:
packages/brand/src/index.ts (name, expansion, tagline, description).NEXT_PUBLIC_SITE_URL (see .env.example).Internal packages use the neutral @repo/* scope, so they don't need touching.
No other file should hard-code the name; if you need it, import brand.
The toolbar popup shows the whole website (in an iframe), so it always has the same games as the website
without publishing anything separately. It goes back to the last screen you were on, and right-clicking
the icon opens it in its own window or a tab. The number on the icon is your pending items
(/api/pending, using the website's session; checked every 3 minutes).
cp apps/extension/.env.example apps/extension/.env # WXT_SITE_URL: the website it shows
pnpm --filter extension dev # opens Chrome with the extension loaded and reloads on save
pnpm --filter extension build # builds apps/extension/.output/chrome-mv3
pnpm --filter extension zip # zip ready for the Chrome Web Store
For production, apps/extension/.env.production with WXT_SITE_URL set to the published website.
To load it by hand: chrome://extensions → developer mode → Load unpacked →
apps/extension/.output/chrome-mv3. The name comes from @repo/brand, as on the website.
app/manifest.ts + icons generated from the mascot (/icons/*, app/icon.tsx, app/apple-icon.tsx).public/sw.js: offline page (/offline, self-contained HTML) and push notifications.POST /api/push/dispatch through pg_net, which decides who to notify and sends with web-push. The
URL and the shared secret live in Vault (push_webhook_url, push_webhook_secret); locally the seed
creates them and the secret matches PUSH_WEBHOOK_SECRET in .env.local.If pnpm dev serves old styles or components (e.g. a change in globals.css that doesn't apply),
Turbopack's cache is stuck: stop the server, delete apps/web/.next/dev and start it again.
Found a bug or have an idea? Open an issue. Want to fix it yourself? Send a pull request.
If you write your friend code (you'll find it in the app, under Friends) in the title or description, you earn the "Contributor" achievement and an exclusive colour for your monster when you open the issue or when your pull request is merged.
This is handled by the /api/webhooks/github webhook ("Issues" and "Pull requests" events, signed with
GITHUB_WEBHOOK_SECRET).
Code comments and commit messages are written in Spanish.
Everything comes from apps/web/src/lib/seo.ts (the game texts are in lib/i18n/games-*.ts): title,
description, "How to play" and FAQ for each game. From there we generate the visible section of each page,
the structured data (JSON-LD: VideoGame, FAQPage, BreadcrumbList), sitemap.xml, /llms.txt and the
share images (each game's opengraph-image.tsx, with lib/og.tsx). When you add a game, add its guide too.
robots.txt lets every crawler in (including GPTBot, ClaudeBot, PerplexityBot…) except /api/ and
/dev/.noindex with
PRIVATE_PAGE. They aren't blocked in robots.txt: otherwise search engines couldn't read the
noindex.NEXT_PUBLIC_SITE_URL.Once there's a domain:
NEXT_PUBLIC_SITE_URL set to the domain on Vercel, and a 301 redirect from *.vercel.app to the
domain (Vercel → Settings → Domains).NEXT_PUBLIC_GOOGLE_SITE_VERIFICATION and NEXT_PUBLIC_BING_SITE_VERIFICATION, and submit the sitemap.site_url and the redirect URLs in Supabase (Auth → URL).https://<domain>/api/webhooks/kofi and its
verification token in KOFI_VERIFICATION_TOKEN. GitHub Sponsors: once GitHub approves the account,
put its link in SUPPORT_LINKS.githubSponsors (apps/web/src/lib/support.ts).private.friend_request_attempts and old abandoned games.