Flow Merge e um command center local-first para founders tecnicos, indie hackers e micro-SaaS. A proposta do produto e juntar automacao e analytics no mesmo canvas: capturar sinais do negocio, transformar isso em workflows e entender impacto real em produto, receita e operacao sem trocar de ferramenta.
O projeto roda em duas superficies:
- web app em Next.js 16 hospedada na Vercel
- desktop shell em Tauri 2 com updater por canal (
stable,beta,internal)
- modela workflows visuais com nodes tipados
- executa automacoes localmente no browser ou no desktop
- conecta eventos, logs, metricas e sinais operacionais
- transforma esses sinais em decisoes, alertas e acoes
- expande analytics com runtime local, IA e leitura de impacto no negocio
Exemplos de uso que guiam o produto:
- logs e erros -> impacto em R$
- funil + A/B -> decisao
- padrao comportamental -> insight comercial -> acao
Next.js 16React 19ZustandFramer Motion@xyflow/react
- route handlers em
src/app/api Better Authcom login GooglePrisma ORMSupabase PostgresAxiospara chamadas internas e integracao de billing
Tauri 2- auto-update por canal via GitHub Releases
- shell desktop apontando para a superficie web publicada
AbacatePaycom PIX- trial de 14 dias
- renovacao mensal via nova cobranca PIX
- cancelamento e inadimplencia tratados no backend de licenca
O produto nao salva workspace, nodes, runtime data ou metricas no banco.
No backend ficam apenas:
- identidade
- sessao
- licenca
- metadata minima de billing
Workspaces e dados de execucao ficam locais:
- desktop: armazenamento local do app
- web: armazenamento local do browser
trial_activepayment_pendingactive_monthlyactive_lifetimeblockeddeleted
Planos:
monthlylifetime
Release roles:
stablebetainternal
Importante:
releaseRolevem do banco e define o teto de acesso- a UI tambem permite uma role ativa local para simular visualmente tiers abaixo do seu teto real
src/ App web, UI, stores, runtime e APIs
src/app/api/ Auth, billing e status de licenca
src/components/ Shell, canvas, modais e bridges
src/lib/ Runtime, auth, billing, release access e utilitarios
src/store/ Zustand stores
src-tauri/ Shell desktop, updater e configuracao Tauri
prisma/ Schema e migrations
scripts/ Versionamento, updater, Tauri wrapper e scripts operacionais
tests/ E2E Playwright
docs/ Runbooks e documentacao operacional
reports/ Relatorios de auditoria e testes
Antes de rodar o projeto, tenha instalado:
BunNode.jsatual compativel com Next 16Ruste toolchain do Cargo para Tauri- dependencias de sistema do Tauri, se for empacotar desktop
- acesso a:
- Supabase Postgres
- Google OAuth
- AbacatePay
- Instale dependencias:
bun install- Crie seu
.enva partir do exemplo e preencha os valores reais:
Copy-Item .env.example .env- Gere o client do Prisma:
bun run db:generate- Rode a app web:
bun run dev- Para rodar o shell desktop em desenvolvimento:
bun run tauri devAs variaveis principais sao:
DATABASE_URLDIRECT_URLBETTER_AUTH_SECRETBETTER_AUTH_URLNEXT_PUBLIC_FLOW_MERGE_API_BASE_URLFLOW_MERGE_TRUSTED_ORIGINSGOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETABACATEPAY_API_KEYFLOW_MERGE_DESKTOP_FRONTEND_DIST
Observacoes:
- em desenvolvimento local,
BETTER_AUTH_URLeNEXT_PUBLIC_FLOW_MERGE_API_BASE_URLnormalmente apontam parahttp://localhost:3000 - no desktop release,
FLOW_MERGE_DESKTOP_FRONTEND_DISTdeve apontar para a URL publica da web app
O schema Prisma fica em prisma/schema.prisma.
Ele cobre:
- usuarios e sessoes do Better Auth
releaseRole- estado de acesso/licenca
- cobrancas PIX reconciliadas no backend
Gerar client:
bun run db:generateAplicar migration localmente:
bunx prisma migrate devbun run dev-> sobe a app web comversion:synceprisma generatebun run build-> build de producao do Next com sync de versaobun run tauri dev-> shell desktop em modo devbun run lint-> lint com Biomebun run test:coverage-> testes unitarios/integracao com coberturabun run test:e2e-> E2E com Playwrightbun run audit:deps-> auditoria de dependenciasbun run version:sync-> sincronizapackage.json,Cargo.tomletauri.conf.jsonbun run release:prepare X.Y.Z-> faz sync da versao, cria o commit de bump e valida com buildbun run release:publish X.Y.Z-> faz push domain, cria a tag e envia a tagbun run release:verify-tag-> falha se a tagvX.Y.Znao bater com os arquivos de versao do commitbun run updater:doctor-> diagnostico do setup de updater desktop
Estado esperado antes de release:
bun run lint
bun run test:coverage
bun run test:e2e
bun run build
bun run audit:depsA malha atual cobre:
- auth
- licenca
- billing
- rate limiting
- roles e release access
- lifecycle de conta bloqueada e wipe local
- E2E dos fluxos principais de conta e sessao
O processo de release desktop nao deve ser improvisado no terminal. Use o runbook:
docs/desktop-release-runbook.md
Pontos criticos:
- feature branches nao recebem tag de release
- a release nasce em
main, depois do merge - a tag sempre vem depois do commit de versao
version:syncprecisa refletir a versao alvo antes da tag- o workflow
release-desktopagora valida isso combun run release:verify-tag FLOW_MERGE_DESKTOP_FRONTEND_DISTprecisa existir nas repository variables do GitHub
Fluxo recomendado com branches:
git checkout main
git pull origin main
git merge --no-ff feat/minha-feature
bun run release:prepare X.Y.Z
bun run release:publish X.Y.ZSe preferir continuar manualmente, o fluxo antigo continua valido. Os scripts acima apenas empacotam a mesma ordem correta com guardas de branch, tag e arvore limpa.
- a chave de IA permanece em armazenamento local por decisao de produto
- o backend nao recebe workspace nem runtime data
- billing usa API da AbacatePay com reconciliacao pelo backend
- o runtime dinamico foi endurecido, mas ainda exige cuidado por usar execucao programavel
- Desktop release runbook
reports/test-and-security-audit-2026-03-30.md
No estado atual do repositorio:
- app web + shell desktop coexistem na mesma base
- auth usa Google via Better Auth
- banco usa Supabase Postgres com Prisma
- billing usa AbacatePay PIX
- updater desktop usa canais
stable,betaeinternal