CoOp:Anything
Search any game and see how much of it you can play with friends: every co-op mod, its stage, quality and community rating.
Activity bingo for a night out with friends.
GamesTypeScript · PLpgSQLGitHub @Lockop1OnlineOwner 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
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Mobile-first activity bingo for friend groups on a night out. Built with Next.js, Tailwind
CSS and Supabase. Project rules and architecture live in CLAUDE.md; the
build plan is in PHASES.md.
.env.local:
cp .env.example .env.local
Fill in NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY from Project
Settings > API, and set NEXT_PUBLIC_APP_URL=http://localhost:3000.
SUPABASE_SERVICE_ROLE_KEY and CRON_SECRET are only needed to run the cleanup cron
route. Never prefix the service-role key with NEXT_PUBLIC_.npm install
npm run dev
Open http://localhost:3000.Schema changes go through Supabase CLI migrations in supabase/migrations/ (see
CLAUDE.md).
Keep NEXT_PUBLIC_POSTHOG_HOST on PostHog's own origin (us.i.posthog.com / eu.i.posthog.com). Do not proxy it through a same-origin rewrite: same-origin requests would carry the Supabase auth cookies.
Optional, privacy-first product analytics via PostHog (src/lib/analytics.ts). It is off
unless NEXT_PUBLIC_POSTHOG_KEY is set (NEXT_PUBLIC_POSTHOG_HOST defaults to
https://us.i.posthog.com), and off for browsers sending Do Not Track or Global Privacy
Control; when off, posthog-js is never loaded. Only eight events with allow-listed counts
and flags are sent (game_created, player_joined, game_started, square_completed,
media_uploaded, game_ended, recap_viewed, play_again). No names, join codes, game or
user ids, square text, URLs or referrers; no autocapture, pageviews, session recording,
surveys, cookies or stored identifiers (a fresh anonymous id per page load).
e2e/analytics.spec.ts checks the payloads; it is skipped unless the dev server and Playwright
both run with NEXT_PUBLIC_POSTHOG_KEY=phc_test NEXT_PUBLIC_POSTHOG_HOST=http://127.0.0.1:<port>/__ph.
Without a hosted Supabase project you can run against the local stand-in backend
(real Auth + PostgREST; Storage returns 501 and Realtime never emits events, so other
players' changes arrive through the resync poll, every 15 s by default or
NEXT_PUBLIC_SYNC_POLL_MS). See scripts/local-backend/README.md.
npm run backend:status # or: npm run backend:reset && npm run backend:start
node scripts/local-backend/cli.mjs env > .env.local # (not via npm run: npm adds banner lines)
npm run dev # NEXT_PUBLIC_ENABLE_SW=1 npm run dev to run the service worker too
If Turbopack serves stale files in dev, rm -rf .next/dev and restart.
Tests:
npm run test — Vitest unit tests (src/**/*.test.ts): game reducers, optimistic queue,
board state, celebrations, toasts, instant return, settings, media pipeline, service-worker
policy, session handling, cleanup cron, starter-pack content rules, palette contrast.npm run e2e — Playwright (Chromium, 375×812): create / join, lobby, live board (incl.
offline), instant return, settings, media, PWA. Starts npm run dev on 127.0.0.1:3000
(with NEXT_PUBLIC_SYNC_POLL_MS=1500, NEXT_PUBLIC_ENABLE_SW=1) or reuses one already running.npm run db:test — the SQL suite (RLS, RPCs, grants) against a local Postgres 16+ at
127.0.0.1:54329; see CLAUDE.md > Running the DB tests.npm run dev — dev server (Turbopack)npm run build — production buildnpm run start — serve the production buildnpm run lint — ESLintnpm run test — unit tests (Vitest)npm run e2e — end-to-end tests (Playwright)npm run db:test — database tests (scripts/db-test.sh)npm run backend:reset / backend:migrate — recreate the local backend database / apply
pending migrationsnpm run backend:start / backend:stop / backend:status — run (detached), stop or check
the local backendnpm run backend:env — print the .env.local lines for the local backendnpm run backend:smoke — end-to-end check of the local backend with supabase-js