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.
Play branded puzzle games and earn real rewards. Where brands create engaging campaigns and users earn money through fun puzzles.
GamesTypeScript · CSSGitHub @PazzellOnlineOwner 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
UI for a gamified marketing platform
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Picture and short-definition trivia across many topics. This repository is the web frontend (Next.js).
There are no points, leaderboards, rankings, ads or prize draws.
| Role | Home | What they do |
|---|---|---|
Player (gamer) | /user/dashboard | Play trivia, build custom trivias, upgrade to Pro |
| Brand | /brand/dashboard | Set up a brand profile, build and pay for campaigns, read campaign results |
| Admin | /admin | Manage topics, cards and global settings; moderate campaigns; view revenue |
src/lib/api.ts) with bearer auth and cookie-based token refreshThe frontend never talks to a database. Everything goes through the backend API, whose contract
is documented in docs/frontend-integration.md. That file is the
source of truth for endpoints, payloads, error codes and state machines.
npm install
cp .env.local.example .env.local # then fill it in
npm run dev # http://localhost:3000
The backend must be running and reachable at NEXT_PUBLIC_API_URL.
| Variable | Required | Purpose |
|---|---|---|
NEXT_PUBLIC_API_URL | Yes | Origin of the backend, without a path (for example http://localhost:4000). The app calls {origin}/api/v1/... |
NEXT_PUBLIC_GOOGLE_CLIENT_ID | No | Enables the Google sign-in button. Left out, the button is hidden |
Three routes are linked to from outside the app, so the backend's FRONTEND_URL must point at
wherever this frontend is served:
/q/:slug — shared custom trivia links/payment/verify?reference= — the return page after a Paystack checkout/reset-password?token= — password reset emailsToken refresh uses a refresh_token cookie, so the frontend and the API need to be able to
share cookies (same site, or a cross-site cookie setup on the backend).
| Command | What it does |
|---|---|
npm run dev | Development server |
npm run build / npm start | Production build and server |
npm run lint | ESLint |
npx tsc --noEmit | Typecheck |
npm run test / npm run test:watch | Vitest |
Docker and deployment scripts are described in DEPLOYMENT.md.
src/
├── app/
│ ├── (routes)/
│ │ ├── (private-pages)/ # Login required
│ │ │ ├── trivia/ # Topic picker and setup
│ │ │ ├── play/[sessionId]/ # Quiz → result, for every kind of trivia
│ │ │ ├── my-quizzes/ # Custom trivia list, builder and preview
│ │ │ ├── pro/ # Plan and Pro checkout
│ │ │ ├── user/ # Player home, profile, settings
│ │ │ ├── brand/ # Brand home, campaigns, profile
│ │ │ └── admin/ # Admin pages
│ │ └── (public-pages)/ # Login, register, /q/[slug], /payment/verify, ...
│ └── _utils/ # endpoints.ts, routes.ts, constants.ts
├── atom/user.ts # Logged-in user (persisted to localStorage)
├── components/
│ ├── ui/ # shadcn/ui primitives and shared widgets
│ ├── match/ trivia/ cards/ # Game screens and the shared card editor
│ ├── quizzes/ campaigns/ pro/ admin/
│ └── layout/ auth/
├── hooks/ # Game settings, plan, session start, back-navigation block
├── lib/ # API client, uploads, sound, small helpers
└── types/index.ts # All API types
A few rules shape most of the code:
deadlineAt and
serverTime; the countdown is driven from those, not the device clock. The correct answer is
only returned after a question is settled./play/[sessionId] renders from the server's session status, so a refresh
lands on the same phase and the same question with the time that is left.GET /settings/game; nothing is hard-coded.CAMPAIGN_REQUIRED and the app offers the campaign instead.npm run test covers the trivia quiz (practice pointer, timeout, forward only, resume), the campaign gate, the upgrade prompts and the small validation helpers.
Tests mock @/lib/api and render pages with a fresh query client (see src/test-utils.tsx).
Before a release, walk through docs/qa-checklist.md against a real
backend. It covers what the tests cannot: payments, uploads, sound, and layout on a phone.