<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Thiago Rosa da Silva</title>
    <description>The latest articles on Forem by Thiago Rosa da Silva (@thiago_rosadasilva_0688).</description>
    <link>https://forem.com/thiago_rosadasilva_0688</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3163324%2F8c26c08c-5a1e-4411-b862-2cc47db8bdb7.jpg</url>
      <title>Forem: Thiago Rosa da Silva</title>
      <link>https://forem.com/thiago_rosadasilva_0688</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/thiago_rosadasilva_0688"/>
    <language>en</language>
    <item>
      <title>Database documentation fails when it relies on human discipline</title>
      <dc:creator>Thiago Rosa da Silva</dc:creator>
      <pubDate>Wed, 25 Feb 2026 01:02:11 +0000</pubDate>
      <link>https://forem.com/thiago_rosadasilva_0688/database-documentation-fails-when-it-relies-on-human-discipline-346n</link>
      <guid>https://forem.com/thiago_rosadasilva_0688/database-documentation-fails-when-it-relies-on-human-discipline-346n</guid>
      <description>&lt;p&gt;Database documentation usually fails for one simple reason:&lt;br&gt;&lt;br&gt;
it depends on manual discipline.&lt;/p&gt;

&lt;p&gt;Diagrams are created during the design phase, but real projects evolve fast:&lt;br&gt;
requirements change, hotfixes happen, migrations pile up.&lt;/p&gt;

&lt;p&gt;The code moves forward.&lt;br&gt;&lt;br&gt;
The database schema changes.&lt;br&gt;&lt;br&gt;
The diagram stays behind.&lt;/p&gt;

&lt;p&gt;At some point, the ERD no longer represents production, and teams stop trusting it.&lt;/p&gt;

&lt;p&gt;What worked better for me was changing the model entirely.&lt;/p&gt;

&lt;p&gt;Instead of trying to &lt;em&gt;maintain&lt;/em&gt; diagrams and documentation manually, I started treating the &lt;strong&gt;schema model as the source of truth&lt;/strong&gt;, and generating everything else from it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SQL schemas&lt;/li&gt;
&lt;li&gt;Docker environments&lt;/li&gt;
&lt;li&gt;documentation and diagrams&lt;/li&gt;
&lt;li&gt;versioned artifacts in GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key idea is simple:&lt;br&gt;&lt;br&gt;
if the diagram drives the implementation, it cannot become outdated.&lt;/p&gt;

&lt;p&gt;To make this concrete, I created a small public repository demonstrating this workflow, with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a single source model&lt;/li&gt;
&lt;li&gt;generated SQL&lt;/li&gt;
&lt;li&gt;a runnable Docker setup&lt;/li&gt;
&lt;li&gt;and documentation derived from the same model&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repository:&lt;br&gt;
&lt;a href="https://github.com/ThiagoRosa21/schema-versioning-demo" rel="noopener noreferrer"&gt;https://github.com/ThiagoRosa21/schema-versioning-demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The examples in the repo were generated using ForgeSQL:&lt;br&gt;
&lt;a href="https://forgesql.com" rel="noopener noreferrer"&gt;https://forgesql.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The goal is not to promote a tool, but to show a workflow where:&lt;br&gt;
documentation does not depend on memory, discipline, or goodwill.&lt;/p&gt;

&lt;p&gt;I’m curious how other teams deal with this today.&lt;/p&gt;

&lt;p&gt;What actually guarantees that your database diagrams still reflect production?&lt;/p&gt;

</description>
      <category>database</category>
      <category>sql</category>
      <category>architecture</category>
      <category>documentation</category>
    </item>
    <item>
      <title>Database documentation fails when it relies on human discipline</title>
      <dc:creator>Thiago Rosa da Silva</dc:creator>
      <pubDate>Tue, 24 Feb 2026 00:16:54 +0000</pubDate>
      <link>https://forem.com/thiago_rosadasilva_0688/database-documentation-fails-when-it-relies-on-human-discipline-1j56</link>
      <guid>https://forem.com/thiago_rosadasilva_0688/database-documentation-fails-when-it-relies-on-human-discipline-1j56</guid>
      <description>&lt;p&gt;In theory, database documentation is simple:&lt;br&gt;
design first, document everything, keep it updated.&lt;/p&gt;

&lt;p&gt;In practice, that rarely survives real projects.&lt;/p&gt;

&lt;p&gt;Schemas evolve fast. Requirements change. Hotfixes happen.&lt;br&gt;
And the first thing to fall behind is always the diagram.&lt;/p&gt;

&lt;p&gt;Not because teams don’t care — but because manual synchronization does not scale.&lt;/p&gt;

&lt;p&gt;At some point, the ERD stops being a source of truth and turns into a snapshot of the past.&lt;br&gt;
From there, people either stop trusting it… or stop opening it at all.&lt;/p&gt;

&lt;p&gt;What worked better for me was changing the model entirely:&lt;/p&gt;

&lt;p&gt;Instead of maintaining documentation, I started generating it from the actual model, versioned alongside the project, just like code.&lt;/p&gt;

&lt;p&gt;That idea eventually became ForgeSQL — a visual modeling tool where the diagram is not an accessory, but the source that generates:&lt;/p&gt;

&lt;p&gt;real SQL&lt;/p&gt;

&lt;p&gt;real Docker environments&lt;/p&gt;

&lt;p&gt;versioned artifacts in GitHub&lt;/p&gt;

&lt;p&gt;No diagrams “to keep updated”.&lt;br&gt;
No separate documentation to chase.&lt;/p&gt;

&lt;p&gt;Just one model that stays aligned with reality.&lt;/p&gt;

&lt;p&gt;I’m curious how other teams deal with this today:&lt;/p&gt;

&lt;p&gt;What actually guarantees that your database diagram still reflects production?&lt;/p&gt;

</description>
      <category>database</category>
      <category>sql</category>
      <category>architecture</category>
      <category>documentation</category>
    </item>
    <item>
      <title>Diagramas de banco sempre ficam desatualizados. Parei de tentar “manter” e passei a gerar.</title>
      <dc:creator>Thiago Rosa da Silva</dc:creator>
      <pubDate>Sat, 21 Feb 2026 04:36:49 +0000</pubDate>
      <link>https://forem.com/thiago_rosadasilva_0688/diagramas-de-banco-sempre-ficam-desatualizados-parei-de-tentar-manter-e-passei-a-gerar-44nl</link>
      <guid>https://forem.com/thiago_rosadasilva_0688/diagramas-de-banco-sempre-ficam-desatualizados-parei-de-tentar-manter-e-passei-a-gerar-44nl</guid>
      <description>&lt;p&gt;Diagramas de banco sempre ficam desatualizados. Parei de tentar “manter” e passei a gerar.&lt;br&gt;
A maioria dos times começa com diagramas bonitos e bem pensados.&lt;br&gt;
Alguns meses depois, eles viram referência histórica (quando não são ignorados por completo).&lt;/p&gt;

&lt;p&gt;O problema não é falta de ferramenta nem falta de boa vontade.&lt;br&gt;
É que diagramas mantidos manualmente não escalam com migrations, hotfixes e mudanças constantes.&lt;/p&gt;

&lt;p&gt;Depois de passar por isso algumas vezes, mudei a abordagem:&lt;br&gt;
em vez de “manter” diagramas, passei a gerá-los diretamente a partir do schema, tratando o banco como fonte única de verdade.&lt;/p&gt;

&lt;p&gt;Isso acabou virando um projeto chamado ForgeSQL.&lt;br&gt;
A ideia é simples: se o schema muda, o diagrama muda junto — de forma reproduzível, sem depender de IDE específica, screenshot ou disciplina heroica do time.&lt;/p&gt;

&lt;p&gt;Ainda estou validando com quem vive banco no dia a dia, então queria ouvir da galera aqui:&lt;/p&gt;

&lt;p&gt;Vocês ainda usam diagramas de banco?&lt;/p&gt;

&lt;p&gt;Em que momento eles deixam de ser confiáveis?&lt;/p&gt;

&lt;p&gt;O que faria um diagrama voltar a ser útil no projeto de vocês?&lt;/p&gt;

&lt;p&gt;Se alguém quiser olhar o projeto: &lt;a href="https://forgesql.com" rel="noopener noreferrer"&gt;https://forgesql.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>productivity</category>
      <category>sql</category>
    </item>
    <item>
      <title>Bank diagrams always become outdated. I stopped trying to "maintain" them and started generating them.</title>
      <dc:creator>Thiago Rosa da Silva</dc:creator>
      <pubDate>Sat, 21 Feb 2026 04:27:01 +0000</pubDate>
      <link>https://forem.com/thiago_rosadasilva_0688/bank-diagrams-always-become-outdated-i-stopped-trying-to-maintain-them-and-started-generating-314k</link>
      <guid>https://forem.com/thiago_rosadasilva_0688/bank-diagrams-always-become-outdated-i-stopped-trying-to-maintain-them-and-started-generating-314k</guid>
      <description>&lt;p&gt;Database diagrams always become outdated. I stopped trying to "maintain" them and started generating them.&lt;/p&gt;

&lt;p&gt;Most teams start with beautiful and well-thought-out diagrams.&lt;/p&gt;

&lt;p&gt;A few months later, they become historical references (when they aren't completely ignored).&lt;/p&gt;

&lt;p&gt;The problem isn't a lack of tools or a lack of goodwill.&lt;/p&gt;

&lt;p&gt;It's that manually maintained diagrams don't scale with migrations, hotfixes, and constant changes.&lt;/p&gt;

&lt;p&gt;After going through this a few times, I changed my approach:&lt;/p&gt;

&lt;p&gt;Instead of "maintaining" diagrams, I started generating them directly from the schema, treating the database as the single source of truth.&lt;/p&gt;

&lt;p&gt;This ended up becoming a project called ForgeSQL.&lt;/p&gt;

&lt;p&gt;The idea is simple: if the schema changes, the diagram changes along with it—in a reproducible way, without depending on a specific IDE, screenshots, or heroic team discipline.&lt;/p&gt;

&lt;p&gt;I'm still validating with those who work with databases daily, so I wanted to hear from you guys here:&lt;/p&gt;

&lt;p&gt;Do you still use database diagrams?&lt;/p&gt;

&lt;p&gt;At what point do they cease to be reliable?&lt;/p&gt;

&lt;p&gt;What would make a diagram useful again in your project?&lt;/p&gt;

&lt;p&gt;If anyone wants to look at the project: &lt;a href="https://forgesql.com" rel="noopener noreferrer"&gt;https://forgesql.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>automation</category>
      <category>database</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
    <item>
      <title>ForgeSQL: one diagram, real SQL, real Docker</title>
      <dc:creator>Thiago Rosa da Silva</dc:creator>
      <pubDate>Fri, 20 Feb 2026 16:41:44 +0000</pubDate>
      <link>https://forem.com/thiago_rosadasilva_0688/forgesql-one-diagram-real-sql-real-docker-h7a</link>
      <guid>https://forem.com/thiago_rosadasilva_0688/forgesql-one-diagram-real-sql-real-docker-h7a</guid>
      <description>&lt;p&gt;Most database diagrams don’t survive the first sprint.&lt;br&gt;
SQL changes, Docker drifts, and the diagram becomes a lie.&lt;br&gt;
That’s why I built ForgeSQL.&lt;br&gt;
ForgeSQL lets you:&lt;br&gt;
Design your database visually&lt;br&gt;
Generate real SQL (Postgres, MySQL, SQL Server, Oracle)&lt;br&gt;
Generate Docker Compose from the same model&lt;br&gt;
Keep diagram, schema, and environment in sync&lt;br&gt;
The diagram is the source of truth. Everything else is generated.&lt;br&gt;
No PDFs. No outdated docs. No guessing.&lt;br&gt;
If you’ve dealt with schema drift in real projects, this might help:&lt;br&gt;
&lt;a href="https://forgesql.com" rel="noopener noreferrer"&gt;https://forgesql.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9td461lu3rzq0dg3mo13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9td461lu3rzq0dg3mo13.png" alt=" " width="408" height="612"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>docker</category>
      <category>showdev</category>
      <category>sql</category>
    </item>
    <item>
      <title>Keeping Database Schema in Sync With Production</title>
      <dc:creator>Thiago Rosa da Silva</dc:creator>
      <pubDate>Fri, 13 Feb 2026 19:36:40 +0000</pubDate>
      <link>https://forem.com/thiago_rosadasilva_0688/keeping-database-schema-in-sync-with-production-4pca</link>
      <guid>https://forem.com/thiago_rosadasilva_0688/keeping-database-schema-in-sync-with-production-4pca</guid>
      <description>&lt;p&gt;One recurring problem in backend and data engineering workflows is this:&lt;/p&gt;

&lt;p&gt;We design databases visually.&lt;br&gt;
But we deploy them as SQL.&lt;/p&gt;

&lt;p&gt;Somewhere between diagrams, migrations, CI/CD and Docker environments, things drift.&lt;/p&gt;

&lt;p&gt;Over time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The ER diagram no longer reflects production.&lt;/li&gt;
&lt;li&gt;The production schema evolves through manual migrations.&lt;/li&gt;
&lt;li&gt;Docker setups are maintained separately.&lt;/li&gt;
&lt;li&gt;Version control contains SQL files, not the original intent of the model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This disconnect is subtle at first. But in real systems, it becomes a source of confusion, onboarding friction, and architectural entropy.&lt;/p&gt;

&lt;p&gt;Let’s unpack why this happens — and what alternative approaches might look like.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Drift Problem
&lt;/h2&gt;

&lt;p&gt;Most teams follow something like this workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Initial schema modeled in a diagram tool.&lt;/li&gt;
&lt;li&gt;SQL exported (or manually written).&lt;/li&gt;
&lt;li&gt;Migrations handled via Flyway, Liquibase, Alembic, etc.&lt;/li&gt;
&lt;li&gt;CI/CD pipelines apply migrations.&lt;/li&gt;
&lt;li&gt;Docker environments configured separately.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After a few months:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The diagram is outdated.&lt;/li&gt;
&lt;li&gt;Migrations reflect history, not structure.&lt;/li&gt;
&lt;li&gt;Reconstructing the full schema requires replaying migration history.&lt;/li&gt;
&lt;li&gt;Visual representation becomes documentation-only.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The visual model is no longer the source of truth.&lt;/p&gt;

&lt;p&gt;The migration history is.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is the Real Source of Truth?
&lt;/h2&gt;

&lt;p&gt;There are typically three candidates:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Live Database
&lt;/h3&gt;

&lt;p&gt;Reverse engineer from production.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always accurate (for that environment).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Doesn’t represent intent.&lt;/li&gt;
&lt;li&gt;Environment-specific.&lt;/li&gt;
&lt;li&gt;Hard to reason about evolution.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  2. Migration Files
&lt;/h3&gt;

&lt;p&gt;Treat migrations as canonical.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fully versioned.&lt;/li&gt;
&lt;li&gt;CI/CD friendly.&lt;/li&gt;
&lt;li&gt;Production-aligned.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Represents change history, not final structure.&lt;/li&gt;
&lt;li&gt;Hard to visualize architecture from them.&lt;/li&gt;
&lt;li&gt;Cross-dialect support becomes complex.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Declarative Schema Definition
&lt;/h3&gt;

&lt;p&gt;Define structure once and generate artifacts.&lt;/p&gt;

&lt;p&gt;Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structure-first.&lt;/li&gt;
&lt;li&gt;Easier visualization.&lt;/li&gt;
&lt;li&gt;Potentially dialect-agnostic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Requires strong validation.&lt;/li&gt;
&lt;li&gt;Needs deterministic SQL generation.&lt;/li&gt;
&lt;li&gt;Must integrate with migration workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This third approach is less common in traditional relational tooling, but widely adopted in infrastructure-as-code philosophy.&lt;/p&gt;




&lt;h2&gt;
  
  
  Migration-First vs Structure-First
&lt;/h2&gt;

&lt;p&gt;Most relational workflows are migration-first:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Change is primary. Structure is derived.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But what if we invert that?&lt;/p&gt;

&lt;p&gt;Structure-first approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define schema declaratively (or visually).&lt;/li&gt;
&lt;li&gt;Generate deterministic SQL.&lt;/li&gt;
&lt;li&gt;Generate migration diffs.&lt;/li&gt;
&lt;li&gt;Generate container environment.&lt;/li&gt;
&lt;li&gt;Version the schema definition itself.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now the model becomes the artifact.&lt;/p&gt;

&lt;p&gt;Migrations become derivative, not primary.&lt;/p&gt;




&lt;h2&gt;
  
  
  Multi-Dialect Reality
&lt;/h2&gt;

&lt;p&gt;In modern environments, teams may:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Develop locally in PostgreSQL.&lt;/li&gt;
&lt;li&gt;Use MySQL in staging.&lt;/li&gt;
&lt;li&gt;Maintain compatibility layers.&lt;/li&gt;
&lt;li&gt;Spin up ephemeral Docker environments per branch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This creates a problem:&lt;/p&gt;

&lt;p&gt;SQL dialect differences introduce fragmentation.&lt;/p&gt;

&lt;p&gt;If the schema is defined abstractly, dialect-specific SQL can be generated consistently.&lt;/p&gt;

&lt;p&gt;This reduces duplication and potential inconsistencies.&lt;/p&gt;




&lt;h2&gt;
  
  
  Docker as a Derived Artifact
&lt;/h2&gt;

&lt;p&gt;Another common disconnect:&lt;/p&gt;

&lt;p&gt;The database schema and Docker setup live in separate places.&lt;/p&gt;

&lt;p&gt;But from a reproducibility standpoint:&lt;/p&gt;

&lt;p&gt;Schema definition → should produce → runnable environment.&lt;/p&gt;

&lt;p&gt;If the model knows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Engine&lt;/li&gt;
&lt;li&gt;Version&lt;/li&gt;
&lt;li&gt;Extensions&lt;/li&gt;
&lt;li&gt;Ports&lt;/li&gt;
&lt;li&gt;Initialization SQL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then generating Docker Compose becomes mechanical.&lt;/p&gt;

&lt;p&gt;That reduces setup friction and onboarding time.&lt;/p&gt;




&lt;h2&gt;
  
  
  Treating Schema as a Versioned Artifact
&lt;/h2&gt;

&lt;p&gt;What happens if we treat the schema definition file as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The source of truth&lt;/li&gt;
&lt;li&gt;Versioned in Git&lt;/li&gt;
&lt;li&gt;Used to generate SQL&lt;/li&gt;
&lt;li&gt;Used to generate Docker config&lt;/li&gt;
&lt;li&gt;Used to derive migrations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now we have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deterministic builds&lt;/li&gt;
&lt;li&gt;Reproducible environments&lt;/li&gt;
&lt;li&gt;Visual clarity&lt;/li&gt;
&lt;li&gt;Single canonical representation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This aligns more closely with infrastructure-as-code principles.&lt;/p&gt;




&lt;h2&gt;
  
  
  But What About Migrations?
&lt;/h2&gt;

&lt;p&gt;This does not replace migrations.&lt;/p&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Schema definition changes.&lt;/li&gt;
&lt;li&gt;Diff is computed.&lt;/li&gt;
&lt;li&gt;Migration SQL is generated.&lt;/li&gt;
&lt;li&gt;Migration is reviewed.&lt;/li&gt;
&lt;li&gt;CI/CD applies it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The difference is:&lt;/p&gt;

&lt;p&gt;Migrations are output of structural change — not the primary design interface.&lt;/p&gt;




&lt;h2&gt;
  
  
  An Experiment
&lt;/h2&gt;

&lt;p&gt;I’ve been experimenting with this structure-first approach in a side project.&lt;/p&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model tables and relationships visually.&lt;/li&gt;
&lt;li&gt;Generate SQL for PostgreSQL, MySQL, SQL Server or Oracle.&lt;/li&gt;
&lt;li&gt;Structure the project ready for Git versioning.&lt;/li&gt;
&lt;li&gt;Export Docker Compose to spin up the database instantly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn’t to replace mature tools like Flyway or Alembic.&lt;/p&gt;

&lt;p&gt;It’s to explore whether making the schema definition the central artifact reduces drift between design and production.&lt;/p&gt;




&lt;h2&gt;
  
  
  Open Questions
&lt;/h2&gt;

&lt;p&gt;I’m genuinely curious how others handle this in real systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What do you consider the true source of truth?&lt;/li&gt;
&lt;li&gt;How do you prevent diagram drift?&lt;/li&gt;
&lt;li&gt;Do you rely entirely on migrations?&lt;/li&gt;
&lt;li&gt;Would you trust deterministic SQL generation?&lt;/li&gt;
&lt;li&gt;How do you handle multi-dialect environments?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’ve dealt with this in production, I’d love to understand your workflow.&lt;/p&gt;

&lt;p&gt;The discussion itself is more valuable than any specific tool.&lt;/p&gt;




&lt;p&gt;If you'd like to see the experiment I'm working on, it's called forgesql.com.&lt;br&gt;
But more importantly, I’m interested in how teams solve this at scale.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>database</category>
    </item>
  </channel>
</rss>
