Como Compartilhar Dados Entre Postgres e Remix
Sincronize produtos e preços do Stripe com Postgres usando Remix e CDC com wal2json.
Por que isso é importante
Como Compartilhar Dados Entre Postgres e Remix. Sincronize produtos e preços do Stripe com Postgres usando Remix e CDC com wal2json.
Preparando o Ambiente com wal2json e Docker
Pra habilitar CDC no Postgres, você precisa de uma imagem customizada com plugin
wal2json. Cria Dockerfile personalizado antes de subir o container.
- Passo 1: Crie um arquivo
postgres-sql.dockerfilecom base na imagem oficial e adicione o pluginwal2json. - Passo 2: Construa a imagem localmente com
docker build -f postgres-sql.dockerfile -t postgres-wal . - Passo 3: Execute o container com o comando
docker runprovido no guia da ferramenta.
Atenção
Expõe as portas do Postgres e ativa parâmetros de replicação no postgresql.conf e pg_hba.conf .
Modelagem Inicial das Tabelas no Postgres
Começa com duas tabelas: products e prices . Elas armazenam
todos os dados do Stripe.
- Passo 1: Crie as tabelas com os scripts SQL informados na
documentação do projeto. - Passo 2: Verifique com o PGAdmin que ambas as tabelas estão
vazias e prontas.
Dica
Popula as tabelas com dados do Stripe só depois de confirmar que Docker e wal2json
estão rodando direitinho.
Definindo os Modelos de Dados Canônicos via JSON
Arquivos modelos.product.json e modelos.price.json representam estrutura ideal dos seus dados. Qualquer sistema externo transforma dados
pra esse formato.
- Passo 1: Crie
modelos.product.jsoncom campos comoid,nameedefault_price_id. - Passo 2: Crie o modelo
modelos.price.jsoncomid,product_id,currencyeunit_amount.
Criando os Arquivos Remix para Transformação
Arquivos .yaml definem como dados são transformados na entrada
(ReceiveMixer) e saída (PushMixer), tanto pro Stripe quanto pro Postgres.
systems.prodb.yaml
Define como armazenamos dados no Postgres baseado no modelo canônico
systems.payment-gateway.yaml
Responsável por transformar os Webhooks do Stripe em dados do modelo canônico
Atenção
Não compartilhe sua secret API key do Stripe. Guarde-a segura e use
arquivos de ambiente.
Testando a Integração Stripe → Remix → Postgres
Tudo configurado? Você recebe Webhooks do Stripe e vê dados populando Postgres
automaticamente.
- Passo 1: Adicione um produto no dashboard do Stripe com valores
em diferentes moedas. - Passo 2: Confirme no PGAdmin que os dados já aparecem nas
tabelasproductseprices.
Sucesso
Se os dados aparecerem no seu banco de forma correta, parabéns! O pipeline está
funcionando.
Unificando Produtos e Preços em um Único Modelo
Nem todo sistema separa produtos e preços. Nesse caso, cria tabela products_flat com preços embutidos como colunas.
- Passo 1: Altere o schema do Postgres com
DROP TABLESseguido porCREATE TABLE products_flat. - Passo 2: Atualize seu modelo canônico removendo
price.jsone ajustandoproduct.jsoncom o campounit_amount. - Passo 3: Atualize também os arquivos Remix do Stripe e Postgres
para refletirem essa unificação.
Webhook Stripe com Remapeamento Intencional
Stripe envia dois hooks separados: produto e preço. Você correlaciona ambos pelo mesmo Stripe ID pra formar produto completo.
Importante
Utilizamos inserções do tipo upsert idempotente . Independente da
ordem (preço ou produto), o mesmo dado será atualizado ou inserido corretamente.
Suporte a Atualizações e Múltiplos Preços
A qualquer momento, novos preços adicionados a um produto atualizarão o banco com os
dados mais recentes. Isso garante que sua lógica de precificação esteja sempre
atualizada.
Validação
Execute testes adicionando produtos e múltiplos preços no Stripe. Observe os
comportamentos esperados no banco como update e merge .
Transforme sua carreira
Dominar integrações complexas como Stripe + Postgres + Remix é como ser um maestro de
uma orquestra tecnológica - você precisa coordenar múltiplos sistemas para tocarem em
perfeita harmonia. Mas saber a teoria musical não te torna um maestro; você precisa de
experiência prática regendo orquestras reais.
Imagine ter o superpoder de sincronizar dados em tempo real entre qualquer sistema, como
um DJ que mixa faixas perfeitamente sem perder o beat. Esse conhecimento te transforma
em um arquiteto de soluções que empresas disputam a tapa, mas só se você conseguir
demonstrar que já construiu essas pontes tecnológicas antes.
O CrazyStack te oferece projetos reais onde você constrói essas integrações do zero -
desde webhooks até CDC, passando por transformações de dados e pipelines resilientes.
São projetos que você pode mostrar no seu portfólio como prova viva de que domina essas
arquiteturas complexas que fazem a diferença no mercado.
Checklist de Implementação
- Imagem do Postgres com wal2json criada com sucesso
- Modelo canônico definido com arquivos JSON
- Arquivos Remix YAML configurados corretamente
- Stripe integrado e Webhooks recebidos
- Tabelas Populadas no Postgres Local com Dados Reais
- Upserts funcionando conforme esperado
- Unificação opcional implementada para modelos simples
Transforme sua carreira
E foi EXATAMENTE por isso que eu criei um curso de Node.js e React chamado CrazyStack.
A minha maior necessidade no início da carreira era alguém que me ensinasse um projeto
prático onde eu pudesse não só desenvolver minhas habilidades de dev como também
lançar algo pronto para entrar no ar no dia seguinte.
Sabe qual era minha maior frustração? Aplicar conhecimentos teóricos em projetos
práticos e reais, mas não encontrar ninguém que me ensinasse COMO fazer isso na
prática! Era exatamente a mesma frustração que você deve sentir: acumular informação
sem saber como implementar na prática.
Assim como você precisa de estratégias claras e implementação prática para ter
sucesso, todo desenvolvedor precisa de um projeto estruturado para sair do teórico e
partir para a execução. É como ter todas as peças do quebra-cabeça mas não saber como
montá-las - você pode ter conhecimento técnico, mas sem um projeto completo, fica
difícil transformar esse conhecimento em resultados concretos.
No CrazyStack, você constrói um SaaS completo do zero - backend robusto em Node.js,
frontend moderno em React, autenticação, pagamentos, deploy, tudo funcionando. É o
projeto que eu queria ter quando comecei: algo que você termina e pode colocar no ar
no mesmo dia, começar a validar com usuários reais e até monetizar.