DEV Community

Keiver Luna
Keiver Luna

Posted on

I got tired of migration tools that do too much — so I built one that does exactly one thing

Every time I started a new Node.js + PostgreSQL project, I ran into the same friction.

I'd reach for a migration tool and suddenly I was also choosing an ORM, reading
docs about dialect configs, and wiring up a connection object that duplicated what
I already had in my DATABASE_URL. I didn't want a framework. I just wanted to
run SQL files in order and know which ones already ran.

That's it.

So I built Runway — a PostgreSQL migration CLI for Node.js projects that
doesn't try to be anything else.

What it does

  • Runs .sql migration files in order
  • Tracks applied migrations in a runway_migrations table (nothing else touches your schema)
  • Reads your existing DATABASE_URL — no extra config object needed
  • Works with encoded passwords out of the box
  • Has a baseline command for existing databases you're adopting mid-life
npx @vlynk-studios/runway migrate
Enter fullscreen mode Exit fullscreen mode

What it doesn't do

No ORM. No query builder. No schema introspection. If you already write raw SQL
and just want something to apply it reliably, Runway is exactly the right amount
of tool.

Current state

  • v0.3.5 on npm as @vlynk-studios/runway
  • 13 test suites, 77 passing tests
  • Integration tests use Testcontainers (real Postgres, no mocking)
  • ESLint clean, 6 production dependencies

Try it

npm install --save-dev @vlynk-studios/runway
Enter fullscreen mode Exit fullscreen mode

Source and docs: github.com/vlynk-studios/runway


First post on dev.to — feedback welcome, especially if you've solved this
differently. Curious what tradeoffs looked like for you.

Top comments (0)