Começar na Soccius

Do zero até um cliente no ar: o que a Soccius é, como o trabalho flui entre nós, e o passo a passo de cada ferramenta — incluindo criar o banco e publicar, para quem nunca fez.

Para Bryan, Lucca e Zé Soccius v0.2.0 · plugin 0.3.0 30/09/2026
01 · O modelo

O que estamos construindo

A Soccius é um CRM B2B personalizado por cliente, vendido junto de consultoria de processo comercial. Não é um SaaS: o cliente não se cadastra e sai usando. Ele recebe um sistema com a cara e o processo dele.

Isso tem uma consequência que organiza todo o resto: um cliente, uma instalação, um banco exclusivo. Nada é compartilhado entre clientes.

CamadaDe quem éMuda por cliente
O schema do bancoo produtoNão
As telas nativaso produtoNão
A configuraçãoo clienteSim
Módulos próprioso clienteSim

Personalizado não quer dizer banco diferente. O schema é o mesmo em todo cliente — ele é o produto. O que muda é a configuração (funis, etapas, campos, produtos, vocabulário) e, quando o produto não atende, um módulo só daquele cliente.

A regra que sustenta tudo: o código do produto nunca é copiado para dentro do cliente. Ele chega como dependência — os pacotes @soccius/app, @soccius/core e @soccius/db, na versão que aquele cliente declarou.

Se copiar fosse permitido, cada cliente viraria um fork que envelhece sozinho, e atualizar deixaria de ser trocar um número.

Os dois repositórios nossos

soccius-software

O produto. Telas, regras, schema, migrations. É daqui que saem os pacotes versionados.

soccius-foundry

A fábrica. A ferramenta que conduz uma implantação, o Design System e o registro dos clientes. Nunca contém código de produto.

E cada cliente ganha um repositório privado próprio, inst-<slug>. O slug é o apelido curto do cliente (acme) e é a mesma palavra no repositório, no banco e na hospedagem — é o que liga tudo.

02 · Como o trabalho anda

A dinâmica

Você conversa. Não precisa saber o nome de nenhum comando nem de nenhuma skill: o agente entende o pedido em português e traduz.

Você dizO sistema entende
“Quero a tela de clientes diferente para esse cliente”substituir uma tela nativa — só ela
“Quero rentabilidade como área nova no menu”um módulo próprio do cliente
“O ERP precisa criar pedidos”uma API de integração, com identidade de sistema
“Isso precisa guardar o histórico”persistência, contra a versão instalada
“Terminamos”revisão de segurança, documentação, registro

Não existe etapa fixa

Implantar software vai e volta: tela, backend, volta para a tela, dados, integração, regra nova, ajusta tudo. Quando alguém disser “volta na tela porque o backend mudou”, isso é normal — não é retrabalho e não é erro de planejamento.

O planejamento de cada cliente guarda continuidade, não ordem: o que já foi definido, o que está em andamento, as decisões tomadas, as que continuam abertas e o que depende de quê. Mexer no backend traz de volta a tela que dependia dele, em vez de deixá-la marcada como pronta quando já não está.

O que abre uma sessão de trabalho

Claude Code · qualquer pasta
/soccius-start

Ele pergunta se é cliente novo ou existente, lista os clientes por nome, e conduz daí. Dizer “vamos começar” ou “continua a ACME” chega no mesmo lugar.

03 · Uma vez por máquina

Instalar na sua máquina

São quatro passos, e cada um destrava o seguinte. Antes de começar, confira que você tem:

Terminal · conferir
node --version    # precisa ser 24 ou maior
pnpm --version
gh auth status    # precisa estar logado no GitHub
claude --version  # precisa ser 2.1.233 ou maior
  1. Clonar a fábrica Escolha uma pasta fora do OneDrive — o OneDrive sincronizando node_modules deixa tudo lento e às vezes corrompe.
    Terminal
    git clone https://github.com/Soccius/soccius-foundry.git
    cd soccius-foundry
    pnpm install
    agora você tem a ferramenta, mas o Claude ainda não sabe onde ela está
  2. Dizer ao Claude onde a fábrica está Grava o caminho em ~/.soccius/foundry.json. Só um caminho, nenhum segredo.
    Terminal · dentro de soccius-foundry
    node packages/cli/src/index.ts vincular --escrever
    agora o comando funciona de qualquer pasta, não só desta
  3. Instalar o plugin
    Terminal
    claude plugin marketplace add Soccius/soccius-foundry
    claude plugin install soccius-foundry-operator@soccius
    agora o Claude tem as 14 skills e o comando /soccius-start
  4. Reiniciar o Claude Code Plugin novo só entra em sessão nova. Feche e abra. Depois, de qualquer pasta: /soccius-start.

Autorizar o download dos pacotes

Os pacotes do produto ficam num registry privado, e o registry do GitHub sempre pede autenticação — até para ler. Uma vez por máquina:

Terminal · pegar o token
gh auth token
# se der erro de escopo:
gh auth refresh -s read:packages

Copie o token e coloque no arquivo .npmrc da sua pasta de usuário (C:\Users\seu-nome\.npmrc no Windows):

~/.npmrc
//npm.pkg.github.com/:_authToken=COLE_O_TOKEN_AQUI

Esse token é seu, e nunca vai para o Git. Ele mora no .npmrc da sua pasta de usuário — nunca no .npmrc de um projeto, que é versionado.

Atualizar depois

São dois passos porque são duas coisas: o plugin traz as skills, o clone traz a ferramenta.

Terminal
cd soccius-foundry && git pull && pnpm install
claude plugin marketplace update soccius
claude plugin update soccius-foundry-operator@soccius

O @soccius no fim não é opcional: sem ele o comando responde Plugin not found. E reinicie a sessão depois.

04 · Supabase

Criar o banco de um cliente

O Supabase dá duas coisas de uma vez: o banco Postgres e a autenticação (o login do usuário). Um projeto Supabase por cliente, sempre — é o isolamento que a gente prometeu.

Isso gera custo, e é passo de humano. O agente nunca cria projeto de banco: apagar um é definitivo, e o plano é cobrado por mês.

Tudo fica na conta corporativa da Soccius — nunca no Supabase pessoal de ninguém.

  1. Entrar na conta da Soccius supabase.com/dashboard, com a conta administrativa da Soccius. Se você entrar com a sua conta pessoal, o projeto nasce no lugar errado.
  2. New project Dentro da organização da Soccius, não numa pessoal.
  3. Preencher
    CampoO que pôr
    Nameinst-acme — o mesmo slug do repositório
    Database passwordgere uma forte e guarde antes de continuar
    RegionSouth America (São Paulo)
    o projeto leva alguns minutos para ficar pronto
  4. Pegar as três informações que o sistema precisa Em Project Settings:
    OndeO que copiar
    Settings › Database › Connection stringa string de conexão — vira DATABASE_URL
    Settings › API › Project URLvira NEXT_PUBLIC_SUPABASE_URL
    Settings › API › chave publicávelvira NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY
    Settings › API › chave secretavira SUPABASE_SECRET_KEY — só para o bootstrap
    com isso dá para rodar as migrations e criar o primeiro usuário

A senha do banco não é recuperável. Você a define na criação e ela não aparece de novo — nem para quem criou.

Então o certo é: guardar na hora e, assim que o projeto na hospedagem existir, colocar as variáveis lá. Se ela ficar só na sua máquina e a máquina morrer, o caminho é resetar a senha do banco.

Sobre o plano grátis

ItemNo plano grátis
Projetos ativos2 por conta
Inatividadepausa depois de 7 dias sem uso
Backupsem garantia

Serve para experimentar e para o CRM nosso, usado todo dia. Para cliente pagando, o plano pago — e aí a pausa e o backup deixam de ser problema.

05 · Segredos

As variáveis

O sistema precisa de quatro variáveis, e elas nunca entram no Git. O repositório declara os nomes; os valores vivem fora.

VariávelPara quêOnde fica
DATABASE_URL o banco sua máquina e a hospedagem
NEXT_PUBLIC_SUPABASE_URL o login sua máquina e a hospedagem
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY o login sua máquina e a hospedagem
SUPABASE_SECRET_KEY criar o primeiro usuário só sua máquina

A quarta é diferente das outras três. A chave secreta do Supabase passa por cima de qualquer permissão — ela existe para o script que cria o primeiro administrador, e é usada uma vez.

Ela não vai para a hospedagem. O sistema rodando não precisa dela, e deixá-la lá é dar a chave-mestra para todo processo que sobe.

Como um passa para o outro

Quando o projeto na hospedagem existir, ele é a fonte: as variáveis moram lá e cada um puxa.

Terminal · dentro do repositório do cliente
vercel link       # uma vez, liga a pasta ao projeto
vercel env pull   # baixa as variáveis para .env.local

Uma fonte só. Trocou uma chave? Troca lá, e todos puxam de novo. Ninguém manda segredo por conversa, e ninguém fica com uma versão velha.

Antes de a hospedagem existir, quem criou o banco passa os valores por canal privado, uma vez — e o primeiro ato depois disso é colocá-los na hospedagem, para não repetir.

06 · Na sua máquina

Subir o sistema

Com o banco criado e as variáveis na mão, três comandos deixam o sistema rodando com um usuário que entra.

  1. Escrever o .env Na pasta apps/web do soccius-software.
    apps/web/.env
    DATABASE_URL=...
    NEXT_PUBLIC_SUPABASE_URL=...
    NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=...
    SUPABASE_SECRET_KEY=...
  2. Criar as tabelas As migrations aplicam o schema num banco vazio.
    Terminal · raiz do soccius-software
    pnpm --filter @soccius/db db:migrate
    o banco passa a ter as 49 tabelas do produto, vazias
  3. Criar a empresa e o primeiro usuário Cria a empresa da instalação, o perfil de administração, o catálogo de permissões e a conta de login. Roda uma vez só por instalação.
    Terminal · dentro de apps/web
    pnpm bootstrap:dev --empresa "Soccius" --nome "Seu nome" --email voce@soccius.com
    ele imprime um link para você definir a senha e entrar
  4. Rodar
    Terminal · raiz do soccius-software
    pnpm dev
    localhost:3000 — e o login já funciona

Os outros dois sócios ainda não conseguem entrar. O bootstrap cria um usuário só, e o convite por e-mail não está implementado: a tela cria o registro da pessoa, mas não a conta de login.

Por enquanto, quem tem acesso ao Supabase cria a conta de cada um em Authentication › Users, e o registro na tela de Usuários é ligado a ela. É chato, e é uma vez por pessoa.

07 · Vercel

Publicar na internet

A Vercel pega o repositório, builda e põe no ar. Um projeto Vercel por cliente, ligado ao repositório daquele cliente.

Também gera custo, e também é passo de humano. E também fica na conta corporativa da Soccius.

  1. Entrar com a conta da Soccius vercel.com/new, na equipe da Soccius.
  2. Importar o repositório do cliente Add New › Project, escolher inst-acme. A Vercel reconhece que é Next.js sozinha — não mexa nos comandos de build.
  3. Colocar as variáveis Em Environment Variables, as três primeiras — DATABASE_URL, NEXT_PUBLIC_SUPABASE_URL e NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY.

    A chave secreta do Supabase não entra aqui. O sistema rodando não precisa dela.

    agora o build tem como falar com o banco
  4. Deploy O primeiro leva alguns minutos. Depois disso, todo merge na branch principal publica sozinho.
  5. Ajustar a região Project Settings › Functions, escolher São Paulo (gru1). Sem isso o sistema responde do outro lado do mundo e tudo fica lento.
  6. Baixar o teto de gasto O padrão é alto para o nosso tamanho. Ajuste nas configurações de faturamento da equipe — é o que evita susto no fim do mês.
08 · Domínio

O endereço do cliente

Cada cliente entra num subdomínio nosso — acme.soccius.com — vê a tela de login dele e usa o sistema.

  1. Declarar na Vercel Project Settings › Domains, adicionar acme.soccius.com. Ela mostra o registro de DNS que falta.
  2. Apontar no DNS No painel do domínio soccius.com, criar o registro que a Vercel pediu. Leva de minutos a algumas horas para propagar. o cliente passa a entrar pelo endereço dele

Um subdomínio liberado não se reaproveita. Se a ACME sair e você der acme.soccius.com para outro cliente, links antigos e cookie que ficou no navegador apontam para o lugar errado.

A sessão de um cliente não vale no subdomínio de outro — o sistema já está certo nisso, e é uma coisa a não quebrar.

09 · Colaboração

Trabalhar em dois sem se atropelar

Cada um na sua branch, no seu tempo. Ninguém edita a branch principal direto.

O ciclo
git checkout -b lucca/tela-de-produtos   # sua branch
# ... trabalha, testa local ...
git add -A && git commit -m "feat: ..."
git push -u origin lucca/tela-de-produtos
gh pr create                              # abre o PR

A Vercel cria uma URL de preview para cada PR. Você vê online, antes de integrar. Quando estiver bom, merge — e o merge publica.

SituaçãoO que acontece
Vocês mexeram em arquivos diferenteso Git junta sozinho
Vocês mexeram no mesmo arquivodá conflito — quem mergear depois resolve
Alguém precisa do seu trabalho antes do mergeele pega sua branch, ou usa a URL de preview

Código e dado seguem caminhos diferentes

Código

Branch, PR, preview, merge, deploy. Histórico completo: autor, o que mudou, por quê.

Ex.: mudar como um modal abre.

Dado

Direto no banco. Sem Git, sem PR. Aparece na hora para quem está no mesmo banco.

Ex.: cadastrar os produtos do cliente.

Isso importa na prática: para um ver o que o outro cadastrou, os dois precisam apontar para o mesmo banco. Cada um no banco da própria máquina, o trabalho não se encontra.

10 · Dentro do sistema

Configurar o CRM

Aqui é onde a personalização de verdade acontece, e nada disso é código: é configuração, feita dentro do sistema rodando.

Comece pelos vocabulários. Uma instalação nova nasce com eles vazios, e o primeiro que falta trava o resto: sem tipo de funil o cadastro de funil não fecha — e sem funil não existe negócio.

  1. Configurações › Vocabulários Preencha, no mínimo, Tipos de funil. Depois, com o cliente: origens do negócio, motivos de perda, segmentos, unidades de medida. cada cliente tem o vocabulário dele — não existe padrão nosso
  2. Configurações › Funis Crie o funil e as etapas. Lembre: etapa não é situação — Ganho e Perdido não são etapas, são o desfecho. agora é possível criar negócio
  3. Produtos Cadastre o catálogo do cliente: famílias, grupos, itens. Imagem de produto ainda não sobe — a parte de arquivos não foi construída.
  4. Clientes e negócios Aí o CRM está operando, e a conversa passa a ser sobre o processo do cliente.
11 · Identidade

Padrões visuais

Se você for construir tela, ela segue o Design System — que vive em docs/design-system/ na fábrica. Ele é consultado, nunca copiado: um token copiado para outro lugar vira uma segunda versão que ninguém atualiza.

Uma cor de ação, e só uma

signal (#1FB6C1) é a marca, o botão Criar, o foco, o item ativo e a etapa corrente. Nada mais compete com ela. Verde só para ganho, vermelho só para erro e perda, âmbar só para aviso.

Grotesca para a fala, mono para o dado

Hanken Grotesk faz texto, interface e títulos. Space Mono carrega o que é técnico: identificador, número de negócio, valor em reais. Um valor monetário em Hanken parece errado dentro da Soccius.

O sistema é reto

Raio máximo de 5px, nenhuma pílula, e elemento aninhado nunca tem raio maior que o pai. Borda de 1px é a ferramenta principal de separação; sombra é discreta e funcional.

O que não se negocia

  • Interface em pt-BR, Sentence case, sem emoji.
  • Nenhuma tela desenha o próprio cabeçalho — o shell é da Soccius.
  • Detalhe é página, nunca modal.
  • Toda listagem segue o padrão da tela de Clientes.
  • Toast para todo retorno, uma linha. Nunca alert.
  • Ação destrutiva pede confirmação que diz o que muda e quanto.
  • O vazio explica e oferece saída — nunca “Nada aqui”.
  • Sem foto, ilustração, textura ou gradiente decorativo.
  • Nenhuma tela assume quantidade fixa de campos, etapas ou colunas.

A última é arquitetural, não estética: a Soccius é personalizável por construção, e uma tela que assume três etapas quebra no cliente que tem sete.

12 · Honestidade

O que existe e o que não existe

Esta é a seção mais importante para não prometer o que o sistema não faz.

CapacidadeEstadoObservação
Conduzir a implantação pela conversaExiste14 skills
Criar o repositório do clienteExistegrátis e reversível
Clonar o cliente na sua máquinaExistesoccius start <slug> --clonar
Pacotes do produto publicadosExistev0.2.0
Configurar vocabulário, funil, produtoExistepela interface
Montar o esqueleto do repositório do clienteNão existeo repositório nasce vazio
Criar banco e hospedagemNão existegeram custo — passo de humano
Anexar imagem de produtoNão existea parte de arquivos não foi construída
Convidar usuário por e-mailParcialcria o registro, não a conta de login
Inativar valor de vocabulárioNão existesó criar e renomear

Nenhum comando da fábrica gera custo, e nenhum pede senha de provedor. Ela planeja e registra; quem cria recurso pago é você.

Se alguém pedir “provisiona tudo”, a resposta honesta é que o plano existe e a execução não.

13 · Socorro

Quando travar

O que você vêQuase sempre é
Plugin not found ao atualizarfalta o @soccius no fim do comando
/soccius-start não aparecea sessão do Claude Code não foi reiniciada
“Não encontrei o checkout do Soccius Foundry”falta rodar vincular --escrever, ou a pasta mudou de lugar
“as dependências não foram instaladas”falta pnpm install na fábrica
401 ao baixar @soccius/...falta o token no ~/.npmrc, ou falta o escopo read:packages
“Variável X não definida”o .env está incompleto — a mensagem diz qual falta
O cadastro de funil não fechanão existe nenhum tipo de funil cadastrado
O build reclama do CSS do pacotefalta node-linker=hoisted no .npmrc do projeto
O sistema está lentoa região da hospedagem não é São Paulo
O banco “desapareceu”projeto grátis pausado por 7 dias sem uso — reative no painel

E o caminho que sempre funciona: pergunte ao Claude. Com o plugin instalado ele conhece o sistema, sabe o que existe e o que não existe, e diz onde parar em vez de inventar.