🚀 Oferta especial: 60% OFF no CrazyStack - Últimas vagas!Garantir vaga →
Remix

Como Compartilhar Dados Entre Postgres e Remix

Sincronize produtos e preços do Stripe com Postgres usando Remix e CDC com wal2json.

CrazyStack
17 min de leitura
PostgresRemixStripeDocker

Por que isso é importante

Conectar sistemas como Stripe e Postgres exige modelos de dados bem definidos, transformações confiáveis e pipelines resilientes. Usar Remix com CDC (Change Data Capture) permite sincronização em tempo real, ideal para apps globais e sistemas de precificação dinâmica.

Preparando o Ambiente com wal2json e Docker

Para habilitar o CDC em Postgres, é necessário usar uma imagem customizada com o plugin wal2json embutido. Por isso, criamos um Dockerfile personalizado antes de subir o container.

1
Passo 1: Crie um arquivo postgres-sql.dockerfile com base na imagem oficial e adicione o plugin wal2json.
2
Passo 2: Construa a imagem localmente com docker build -f postgres-sql.dockerfile -t postgres-wal .
3
Passo 3: Execute o container com o comando docker run provido no guia da ferramenta.

⚠️Atenção

Certifique-se de expor as portas do Postgres e de ativar os parâmetros de replicação no postgresql.conf e pg_hba.conf.

Modelagem Inicial das Tabelas no Postgres

Iniciamos com duas tabelas separadas: products e prices. Essas tabelas serão responsáveis por armazenar todos os dados do Stripe.

1
Passo 1: Crie as tabelas com os scripts SQL informados na documentação do projeto.
2
Passo 2: Verifique com o PGAdmin que ambas as tabelas estão vazias e prontas.

ℹ️Dica

Recomenda-se popular as tabelas com dados do Stripe apenas após garantir que o Docker e wal2json estão funcionando corretamente.

Definindo os Modelos de Dados Canônicos via JSON

Os arquivos modelos.product.json e modelos.price.json representam a estrutura idealizada de dados do seu negócio. Qualquer sistema externo deve transformar seus dados para esse formato.

1
Passo 1: Crie modelos.product.json com campos como id, name e default_price_id.
2
Passo 2: Crie o modelo modelos.price.json com id, product_id, currency e unit_amount.

Criando os Arquivos Remix para Transformação

Arquivos .yaml indicam como os dados serão transformados na entrada (ReceiveMixer) e na saída (PushMixer), tanto para o Stripe quanto para o 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

Depois de tudo configurado, você estará pronto para receber Webhooks do Stripe e ver dados populando o Postgres automaticamente.

1
Passo 1: Adicione um produto no dashboard do Stripe com valores em diferentes moedas.
2
Passo 2: Confirme no PGAdmin que os dados já aparecem nas tabelas products e prices.

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 todos os sistemas separam produtos e preços. Nesse cenário, criamos uma nova tabela products_flat que contém os preços embutidos como colunas.

1
Passo 1: Altere o schema do Postgres com DROP TABLES seguido por CREATE TABLE products_flat.
2
Passo 2: Atualize seu modelo canônico removendo price.json e ajustando product.json com o campo unit_amount.
3
Passo 3: Atualize também os arquivos Remix do Stripe e Postgres para refletirem essa unificação.

Webhook Stripe com Remapeamento Intencional

O Stripe envia dois hooks separadamente: um para produto e outro para preço. É necessário correlacionar ambos usando o mesmo Stripe ID para formar o 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.

Domine React e Node com o CrazyStack

Aprenda técnicas avançadas de React com nosso curso completo