Covil do Mineiro — Docs

Setup local

Como rodar o Covil do Mineiro do zero na sua máquina.

Pré-requisitos

  • Node.js 20+ e npm.
  • Um projeto no Supabase (gratuito serve para dev).
  • (Opcional) Para exercitar o checkout PIX: o sandbox do Sicoob (SICOOB_ENV=sandbox, o padrão) valida o fluxo sem certificado — basta uma SICOOB_PIX_KEY (o SICOOB_CLIENT_ID é opcional no sandbox).

Passo a passo

# 1. Instale as dependências
npm install

# 2. Crie o arquivo de ambiente
cp .env.example .env.local
  1. Preencha o .env.local (ver a tabela abaixo). O mínimo para o site público subir é o bloco do Supabase.

  2. Aplique o schema no SQL Editor do Supabase, na ordem das migrations (ver banco-de-dados.md), começando por supabase/migrations/20260407120000_initial_covil.sql, e depois o supabase/seed.sql.

  3. Após o primeiro cadastro, promova seu usuário a administrador:

    update public.profiles
    set role = 'super_admin'
    where id = '<auth_user_uuid>';
  4. Rode o projeto:

    npm run dev

    Acesse http://localhost:3000. O admin fica em /admin.

Sem as variáveis do Supabase, o site público usa fallback local (src/data/site-fallback.ts) e o admin redireciona ao login com aviso de setup. Ou seja: dá para ver o site sem banco, mas não para operar.

Variáveis de ambiente

VariávelVisibilidadePara que serve
NEXT_PUBLIC_SITE_URLpúblicaURL base (metadata, retorno do pagamento PIX, QR da carteirinha). Dev: http://127.0.0.1:3000
NEXT_PUBLIC_SUPABASE_URLpúblicaEndpoint do Supabase
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEYpúblicaChave publishable/anon do Supabase
SUPABASE_SERVICE_ROLE_KEYsecretaClient admin (ignora RLS) — webhook e escrita de pedidos
SICOOB_ENVservidor (opcional)sandbox (padrão) ou production. Sandbox valida o fluxo PIX sem certificado
SICOOB_PIX_KEYsecretaChave PIX da conta recebedora (onde as cobranças caem). Obrigatória
SICOOB_CLIENT_IDsecretaclient_id do portal developers.sicoob.com.br (opcional no sandbox)
SICOOB_CERT_PFX_BASE64secretaCertificado ICP-Brasil A1 (.pfx em base64) para o mTLS — só produção
SICOOB_CERT_PASSWORDsecretaSenha do .pfx — só produção
GMAIL_USERsecretaE-mail remetente (Gmail SMTP)
GMAIL_APP_PASSWORDsecretaSenha de app do Google (espaços são removidos automaticamente)
CARD_SIGNING_SECRETsecretaHMAC do código de autenticidade da carteirinha (cai para a service role se vazio)
NEXT_PUBLIC_GA_IDpública (opcional)ID do Google Analytics 4 (sem ela, o GA é no-op)

Rodar os testes

npm run typecheck   # tipos
npm run test        # unitários (Vitest)
npm run e2e         # end-to-end (Playwright; sobe o dev server sozinho)

Dicas

  • Para virar sócio de teste: crie o usuário, e como super_admin aprove em /admin/usuarios (isso ativa a associação e credita o bônus de boas-vindas).
  • Assets da marca ficam em public/brands.

On this page