UGC Reactions from Real Creators
실제 크리에이터 영상은 11달러, 이미지 8달러. 맞춤 제작은 영상당 25달러부터, 최소 250달러, 상업 라이선스 포함
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Sistema multicliente de inteligência de tráfego pago. Conecta a conta de anúncios da Meta de cada cliente, cruza a mídia com as vendas e mostra quais anúncios trazem venda, não só clique ou conversa.
Stack: Next.js 16 (App Router), Supabase (Postgres com RLS, Auth, Storage, pgmq, pg_cron, pg_net, Vault) e Vercel.
O roteiro para validar o piloto (GN Coleciona, campanha de 3/11) está em docs/roteiro-teste-piloto.md.
| Pasta | O quê |
|---|---|
supabase/migrations/ | Esquema, RLS e funções. Toda tabela de dados tem organizacao_id, e o isolamento entre clientes é feito no banco. |
src/lib/auth/sessao.ts | Quem está logado e com que papel (dono, gestor, leitura) em qual organização. |
src/lib/integracoes/ | Clientes da Meta (só leitura) e do Stripe. |
src/lib/meta/sincronizacao.ts | Sincronização da Meta: fatiada por mês, retomável pelo cursor. |
src/lib/vendas/ | Entrada de leads e vendas, comum a todas as fontes (webhook, Stripe, CSV). |
src/lib/rastreio/ | Regras de rastreio e o teste de ponta a ponta. |
src/lib/jobs/worker.ts | Worker da fila. |
tests/banco/ | Testes de RLS e das consultas num Postgres em memória (PGlite). |
Crie um projeto em supabase.com (região São Paulo).
Em Authentication → Sign In / Providers:
Em Authentication → URL Configuration:
https://ads.seudominio.com.br);https://ads.seudominio.com.br/** às Redirect URLs.Aplique as migrações:
npm install
npx supabase login
npm run db:vincular -- --project-ref <ref-do-projeto>
npm run db:aplicar
Elas criam as tabelas, o RLS, a fila jobs (pgmq), os agendamentos (pg_cron) e o bucket privado criativos.
No SQL Editor, crie os dois segredos que o agendador usa para acordar o worker:
select vault.create_secret('https://ads.seudominio.com.br/api/jobs/processar', 'worker_url');
select vault.create_secret('<mesmo valor de SEGREDO_WORKER>', 'worker_segredo');
Copie .env.example para .env.local (desenvolvimento) e preencha as mesmas variáveis na Vercel (Settings → Environment Variables):
| Variável | Onde pegar |
|---|---|
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY | Supabase → Project Settings → API |
CHAVE_CIFRAGEM | Gere com node -e "console.log(require('crypto').randomBytes(32).toString('base64'))". Ela cifra as credenciais dos clientes. Guarde num cofre: se ela se perder, todas as conexões precisam ser cadastradas de novo. |
SEGREDO_WORKER | Gere com o mesmo comando. Use o mesmo valor no segredo worker_segredo do Vault. |
URL_SISTEMA | Endereço público do sistema |
META_API_VERSION | v26.0 |
Importe o repositório. É preciso o plano Pro: o worker roda até 5 minutos por chamada (maxDuration = 300), e o plano gratuito corta antes.
npm run criar-admin -- [email protected]
Se a conta não existir, o comando a cria e mostra uma senha provisória uma vez.
Em /o/<organização>/configurar, o assistente leva a pessoa por seis etapas: negócio, Meta, página de destino, fonte de venda, teste completo e resumo. Uma organização nova cai direto nele, e a tela Início mostra onde retomar.
O andamento não é marcado à mão: vem do que o sistema confere (src/lib/onboarding/modelo.ts). Um token removido, por exemplo, volta a aparecer como pendente. As respostas ficam em organizacoes.onboarding.
gn-coleciona). Você entra como dono da organização.Em Configurações → Meta, cole o token de um usuário do sistema do portfólio empresarial do cliente, com ads_read e acesso à conta de anúncios. O passo a passo aparece na própria tela.
/me e /me/adaccounts) e guardado cifrado.offsite_conversion.fb_pixel_complete_registration. A lista mostra as ações que já apareceram nas campanhas.Webhook genérico (qualquer site ou ferramenta de automação):
POST /api/webhook/eventos, com Authorization: Bearer whk_….lead, teste_iniciado, venda e reembolso, um por vez ou { "eventos": [...] }.Stripe:
user_id).invoice.paid, customer.subscription.created, customer.subscription.updated, customer.subscription.deleted e charge.refunded.whsec_… na tela e clique em Importar histórico para trazer os últimos 365 dias.여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗