Credits

pgpm stands on the shoulders of giants. We're proud contributors to and fans of open source.

Built On

pgpm is built on the incredible work of the JavaScript package management ecosystem:

  • pnpm - Fast, disk space efficient package manager
  • npm - The world's largest software registry
  • Lerna - A tool for managing JavaScript projects with multiple packages

Inspired By Sqitch

Nearly 10 years ago, our founder Dan started building this project in JavaScript, deeply inspired by sqitch's brilliant approach to database change management. Originally built as a wrapper around sqitch to add new capabilities, shelling out to Perl became a bottleneck as customization needs grew. The TypeScript rewrite delivered 50X+ speedups in some cases—likely due to eliminating the Node↔Perl overhead rather than any sqitch limitation.

What We Loved About Sqitch

  • Framework-free, pure SQL approach - No ORM, no framework lock-in. Just database-native change management giving developers full control
  • Human-readable file format - Unlike other migration systems with cryptic names like migration00000001.sql, sqitch let you use intuitive, descriptive filenames
  • Sensible file organization - Files and folders structured in a way that actually makes sense to developers
  • Built for humans - The entire design philosophy centered around developer experience

What pgpm Adds

Building on sqitch's foundation, we've evolved the project with new capabilities:

  • Recursive deploys - Automatically resolve and deploy complex dependency chains
  • Complete TypeScript rewrite - Rebuilt from the ground up in TypeScript while maintaining compatibility with the sqitch file format
  • All in on Postgres - Unlike sqitch's multi-database support, we focused exclusively on PostgreSQL to keep things simple and leverage Postgres-specific features
  • Package ecosystem - Brought npm-style modularity and package management to Postgres
  • Deterministic installs - Reproducible deployments across every environment
  • End-to-End testing - pgsql-test works seamlessly with pgpm for isolated database integration testing in JS/TS

We've made a few changes along the way, but pgpm should still work with sqitch-formatted projects.

Design

Julius Lattke

UX/UI and Brand Designer

We're grateful to the entire open-source community for making projects like pgpm possible. If you're interested in contributing or learning more, check out our GitHub.