Contribuir com o Fluxo
Monte o monorepo do Fluxo localmente, entenda a estrutura do repositório e envie pull requests prontas para revisão.
Use este guia se você quer contribuir com código, documentação ou exemplos para o Fluxo. Ele percorre a instalação local, os serviços que devem estar rodando, as partes do monorepo que você vai mexer com mais frequência e as verificações a rodar antes de abrir uma pull request.
Pré-requisitos
Antes de começar, confira se a sua máquina tem:
- Docker Desktop: necessário para subir o Postgres e o Redis localmente
- Bun 1.3.1: a versão fixada por este repositório (instalar o Bun)
- Git: para o controle de versão
- Ferramentas de shell compatíveis com Node: úteis para depurar localmente e para os scripts
Início rápido
Clone o monorepo, instale as dependências e suba a stack local:
git clone https://github.com/fluxolat/fluxo.git
cd fluxo
bun install
bun devO comando bun dev da raiz sobe o Docker Compose e todas as tarefas dev dos
workspaces selecionadas pelo Turbo. Hoje isso inclui mais coisas do que a API e
o painel, então use a saída do terminal como fonte da verdade e pare os serviços
de que você não precisa. No mínimo, ele vai:
- Subir o Docker Compose (contêineres de Postgres e Redis)
- Subir o servidor da API com o Upstash Workflow em modo local
- Subir o app web em Next.js, os workers e as tarefas de desenvolvimento do Tinybird
O Upstash Workflow roda localmente: não é preciso conta. Quando o servidor subir, você verá as credenciais do workflow no console. Essas credenciais não mudam entre reinicializações.
Os serviços locais num relance
Quando o bun dev terminar, você deve ter:
- App web:
http://localhost:3000para a landing, a documentação e o painel - Servidor da API:
http://localhost:8787para REST, tRPC, WebSocket e os fluxos de autenticação - Postgres:
localhost:5432para os dados relacionais - Redis:
localhost:6379para as filas, o cache e o suporte em tempo real - Modo local do Upstash Workflow: as credenciais aparecem na saída de console da API
Configuração do banco de dados
Conexão padrão
A string de conexão do banco de dados local é:
postgresql://postgres:postgres@localhost:5432/fluxo
Isso é configurado automaticamente ao rodar bun dev.
Rodar as migrações
Na primeira vez que você subir os serviços, rode as migrações do banco de dados:
cd apps/api
bun db:migrateDados de exemplo (opcional)
Para popular o banco de dados com dados de exemplo para desenvolvimento:
cd apps/api
bun db:seedAlterar o schema
Quando você precisar modificar o schema do banco de dados:
- Atualize os arquivos de schema em
apps/api/src/db/schema - Gere uma migração:
cd apps/api bun run generate - Aplique a migração:
bun db:migrate
Abrir o Database Studio
Para explorar o banco de dados com o Drizzle Studio:
cd apps/api
bun db:studioConfiguração opcional do armazenamento
O armazenamento de arquivos no S3 só é necessário se você for testar uploads de arquivos. Para a maior parte do desenvolvimento, você pode pular isso.
Se você realmente precisar do S3:
- Entre no diretório de infraestrutura:
cd infra/aws/s3-public-setup - Siga o guia de armazenamento para a configuração recomendada da AWS, as variáveis de ambiente que o Fluxo espera em execução e uma lista de verificação.
- A configuração do Terraform criará os recursos da AWS necessários para os uploads assinados e a leitura pública de recursos.
Mapa do repositório para colaboradores
Estes são os diretórios que a maioria de quem contribui mexe:
Apps
-
apps/api: backend com Hono e tRPC, com servidor WebSocket- APIs REST e tRPC
- comunicação por WebSocket em tempo real
- consultas e escritas no banco de dados
- autenticação com o Better Auth
- jobs em segundo plano com o Upstash Workflow
-
apps/web: app em Next.js- landing de marketing
- documentação (Fumadocs)
- interface do painel
Pacotes
-
packages/react: o SDK principal de React- hooks e primitivos headless
- o componente
<Support />pronto - integração com WebSocket em tempo real
-
packages/next: o SDK específico do Next.js- suporte a Server Components
- bindings otimizados para o Next.js
-
packages/core: a lógica de cliente compartilhada- stores de gerenciamento de estado
- clientes REST e WebSocket
- funções utilitárias
-
packages/types: as definições de TypeScript- tipos compartilhados por todos os pacotes
- schemas da API e validação
-
packages/transactional: os templates de e-mail- templates do React Email
- utilitários de e-mail transacional
-
packages/location: utilitários de localização- dados de países e fusos horários
- utilitários de geolocalização
Fluxo de trabalho do colaborador
Comandos da raiz
Rode estes a partir da raiz do repositório:
# Start all services
bun dev
# Build all packages
bun run build
# Build specific package
bun run build --filter @fluxolat/react
# Run linter and auto-fix issues
bun run fix
# Type check all packages
bun run check-types
# Check documentation links
bun run docs:links
# Run all workspace tests
bun run test
# Check generated OpenAPI and published-package release gates
bun run check:openapi
bun run check:browser-embed-sizeComandos específicos da API
Rode estes a partir de apps/api:
# Start API server only
bun run dev
# Run migrations
bun run db:migrate
# Seed database
bun run db:seed
# Open Drizzle Studio
bun run db:studio
# Generate Better Auth schema
bun run better-auth:generate-schemaVerificações de qualidade antes de um pull request
Rode verificações focadas enquanto itera e, antes de uma mudança em um pacote publicado ou em uma release, passe pelos portões do repositório relevantes para a publicação:
# Auto-fix linting issues across the repo
bun run fix
# Verify TypeScript types
bun run check-types
# Run docs link checks for documentation edits
bun run docs:links
# Run tests in the package or app you changed
cd packages/react
bun test
# From the repository root before release-sensitive changes
bun run test
bun run build
bun run check:openapi
bun run check:browser-embed-sizeSe você mexeu na API, rode os testes a partir de apps/api. Se mexeu na
documentação ou nas páginas de marketing, confira se as páginas afetadas
continuam compilando e renderizando bem.
Lista de verificação do pull request
Antes de abrir ou dar merge em um PR:
- Use um título claro com Conventional Commits, como
fix: tighten llms route indexing headers. - Explique o que mudou, por que mudou e qual trabalho de acompanhamento ainda está pendente.
- Vincule a issue, a discussão ou o tópico de suporte relacionado, quando houver.
- Acrescente capturas ou gravações para as mudanças de interface.
- Acrescente um changeset quando mexer em pacotes publicados como
@fluxolat/reactou@fluxolat/next. - Mencione as variáveis de ambiente, migrações ou passos de QA manual de que quem revisa vai precisar.
Notas sobre os testes
O Fluxo usa o executor de testes embutido do Bun. Os testes ficam ao lado do
código-fonte, com *.test.ts e *.test.tsx.
# Run tests in a specific package
cd packages/react
bun test
# Watch mode
bun test --watch
# Coverage report
bun test --coverageSolução de problemas
bun devfalha logo de cara: confira se o Docker Desktop está rodando e se as portas3000,8787,5432,6379,7181e8083estão livres.- Erros de banco de dados depois de puxar a main: rode de novo
bun db:migratea partir deapps/apipara se atualizar com as mudanças de schema. - Faltam dependências ou o lockfile está desatualizado: rode de novo
bun install --workspacesa partir da raiz do repositório. - As páginas de documentação aparecem mas os links falham: rode
bun run docs:linksantes de abrir o PR. - Você só precisa dos testes de um pacote: rode
bun testdentro do pacote que você mudou em vez de no monorepo inteiro.
Formato das mensagens de commit
Seguimos os Conventional Commits para as mensagens de commit:
feat:: novas funcionalidadesfix:: correção de errosdocs:: mudanças na documentaçãochore:: tarefas de manutençãorefactor:: refatoração de códigotest:: mudanças nos testes
Exemplo: feat: add message reactions to timeline items
Changesets
Para mudanças em pacotes publicados (@fluxolat/react, @fluxolat/next),
acrescente um changeset:
bun run changesetSiga as instruções para descrever as suas mudanças. Elas serão usadas para gerar o changelog e os incrementos de versão.
Como obter ajuda
- Documentação: fluxo.lat/docs
- E-mail: hello@fluxo.lat
Licença
O Fluxo é software proprietário da Limly LLC. Todos os direitos reservados. A AGPL permite o uso comercial nos termos dela; não é uma licença “não comercial”. Se você precisa de obrigações diferentes, escreva para hello@fluxo.lat e pergunte por uma licença comercial alternativa.
Esta página foi útil?
Abra uma issue de documentação já preenchida para que a equipe possa agir.
Nesta página
Pré-requisitosInício rápidoOs serviços locais num relanceConfiguração do banco de dadosConexão padrãoRodar as migraçõesDados de exemplo (opcional)Alterar o schemaAbrir o Database StudioConfiguração opcional do armazenamentoMapa do repositório para colaboradoresAppsPacotesFluxo de trabalho do colaboradorComandos da raizComandos específicos da APIVerificações de qualidade antes de um pull requestLista de verificação do pull requestNotas sobre os testesSolução de problemasFormato das mensagens de commitChangesetsComo obter ajudaLicença
