Pular para o conteúdo
Tecnologia

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.

  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

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.

  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

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.

  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 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.

  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 todo sistema separa produtos e preços. Nesse caso, cria tabela products_flat com 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

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.