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.
Plataforma para organizar mixes de CS2, acompanhar desempenho e construir comunidades competitivas.
Translation pending
GamesGitHub @ardDiogoOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
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 ↗Plataforma web para organizar mixes de Counter-Strike 2, acompanhar o desempenho dos jogadores e construir comunidades competitivas.
Status: com o Supabase configurado, o site usa dados reais (inscrições, votações, partidas finalizadas, ELO e ranking). Sem ele, roda em modo demonstração com dados fictícios, sinalizados na interface.
docs/regras-do-mix.md — regras e lógica completa do mix.docs/especificacao-tecnica.md — especificação técnica e como o MeuMix a adapta.docs/roadmap.md — o que já foi implementado de cada regra.src/app/globals.css)src/components/uisupabase/migrationsRequisitos: Node.js 20.9+ e npm.
npm install
cp .env.example .env.local # opcional por enquanto
npm run dev
Acesse http://localhost:3000 (redireciona para /dashboard).
Outros comandos:
| Comando | O que faz |
|---|---|
npm run build | Build de produção |
npm start | Sobe o build de produção |
npm run lint | ESLint |
npm run typecheck | Verificação de tipos |
npm run format | Formata o código com Prettier |
meumix do GitHub.MEUMIX_DATA_SOURCE=demo é o padrão).O plano gratuito (Hobby) da Vercel é suficiente para o MVP.
src/
app/
(app)/ # Rotas com o shell (sidebar + topbar)
dashboard/ # Dashboard do jogador
mixes/ # Lista e detalhes ([id])
admin/ # Painel administrativo (mixes e administradores)
entrar/ # Login, cadastro e recuperação de senha
auth/callback/ # Retorno dos links enviados por e-mail
jogadores/ # Busca e perfil ([id])
rankings/ # Ranking com filtro de período e busca
estatisticas/ # Números da comunidade
clipes/ # Clipes e highlights
configuracoes/ # Conta, comunidade e integrações
loading.tsx, error.tsx
components/
brand/ # Marca "meumix"
layout/ # Sidebar, topbar, navegação mobile, busca, menu do usuário
ui/ # Componentes base reutilizáveis
stats/ mixes/ players/ # Componentes de domínio
lib/ # Regras de negócio puras (estatísticas, ELO, times, formatação)
integrations/ # Utilitários de integrações (ainda não implementadas)
services/
data-source.ts # Contrato de acesso a dados
demo/ # Implementação com dados FICTÍCIOS (isolada)
queries.ts # Consultas usadas pelas páginas
types/ # Modelo de domínio e view models
supabase/migrations/ # Schema PostgreSQL planejado
src/services/demo e a UI exibe o selo "Demo" / a faixa "Modo demonstração" sempre que dataSource.kind === "demo".services/queries.ts, que depende apenas da interface DataSource. Para o Supabase, basta criar services/supabase/ implementando a mesma interface e selecioná-la em services/index.ts.community_members).NEXT_PUBLIC_* chegam ao navegador; chaves privadas (Supabase service role, Steam Web API) nunca devem usar esse prefixo.O login usa Supabase Auth (e-mail e senha, confirmação por e-mail e recuperação de senha) em /entrar.
| Papel | Como é definido | Pode |
|---|---|---|
| Super admin | E-mail em SUPER_ADMIN_EMAILS (com e-mail confirmado) | Tudo, inclusive nomear/remover administradores |
| Administrador | profiles.role = 'admin', concedido pelo super admin | Criar e gerenciar mixes |
| Jogador | Padrão de toda conta nova | Usar a plataforma |
src/lib/auth/permissions.ts, verificadas no servidor nas Server Actions (src/app/(app)/admin/actions.ts).role pelo usuário (0002_auth.sql); só o servidor altera com a chave service role, após checar o super admin.MEUMIX_DEV_SESSION_EMAIL simula uma sessão.supabase/migrations/0001_init.sql, 0002_auth.sql, 0003_registrations.sql, 0004_votes_audit_realtime.sql, 0005_draft.sql, 0006_penalties_tiebreaker.sql, 0007_elo_matches.sql, 0008_full_name.sql, 0009_steam.sql, 0010_admin_config.sql, 0011_match_stats.sql, 0012_link_guests.sql, 0013_csrep.sql, 0014_team_suggestion.sql, 0015_badges.sql, 0016_delete_match.sql, 0017_confirm_links.sql, 0018_clips.sql, 0019_clip_media.sql, 0020_badges_seed.sql, 0021_badges_more.sql, 0022_twitch.sql, 0023_profiles_privacy.sql, 0024_account_deletion.sql, 0025_badges_auto.sql, 0026_badges_lanterna.sql, 0027_mix_skips.sql, 0028_badge_progress_detail.sql, 0029_badges_destaques.sql, 0030_player_aliases.sql, 0031_bolao_push.sql, 0032_mix_chronicles.sql, 0033_badges_bolao.sql e 0034_map_cache.sql.https://meumix.vercel.app e adicione https://meumix.vercel.app/auth/callback (e http://localhost:3000/auth/callback) em Redirect URLs.NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, SUPABASE_SECRET_KEY e SUPER_ADMIN_EMAILS, e faça um novo deploy.GEMINI_API_KEY (crie em https://aistudio.google.com/apikey). Envie um print por mapa com o nome do mapa no nome do arquivo (ex.: mirage.png).CRON_SECRET na Vercel com um valor aleatório longo; o cron diário de chama , que apaga IP/navegador com mais de 6 meses.supabase/migrations/0001_init.sql e implementar services/supabase.Regras, PICK e limitações: docs/insignias.md. Testes: npm run test:badges (motor) e npm run test:rls (banco).
Modelo de permissões e ameaças, tabelas e RLS, inventário de dados pessoais, plano de testes, pendências e resposta a incidentes: docs/seguranca/.
GET /api/historico devolve os mixes finalizados em JSON (sem e-mails), com placar, mapas e estatísticas por jogador.
Parâmetros opcionais: jogador (nick ou id), de e ate (AAAA-MM-DD) e limite (1–100, padrão 20).
Exemplo: https://meumix.vercel.app/api/historico?jogador=barker&limite=5.
vercel.json/api/cron/retencaoTWITCH_CLIENT_ID e TWITCH_CLIENT_SECRET. Cada jogador informa o canal em Configurações (ou o admin, em Admin → Jogadores). O site mostra quem está ao vivo, as gravações de cada mix (a Twitch apaga as VODs após 7 dias; transforme em Destaque para guardar) e importa os clipes criados durante o mix.VAPID_PUBLIC_KEY e VAPID_PRIVATE_KEY na Vercel (a privada como Sensitive). Para os avisos por horário (inscrições abrindo, vagas, bolão fechando, lives), crie uma tarefa gratuita em cron-job.org que chama https://meumix.vercel.app/api/cron/avisos a cada 5 minutos com o cabeçalho Authorization: Bearer <CRON_SECRET>. Detalhes em docs/bolao-e-avisos.md.GEMINI_API_KEY (passo 5) a crônica de cada mix é escrita pela IA; sem ela, sai do modelo pronto. Rode 0032_mix_chronicles.sql. Detalhes em docs/cronica-do-mix.md.