{"adoption": {"forks": 154, "observed_at": "2026-08-28T04:09:45.197603+00:00", "stars": 6560}, "canonical_url": "https://ross.abutalabs.com/products/pgroll", "card": {"archived": false, "artifact_type": "cli-tool", "description": "PostgreSQL zero-downtime migrations made easy", "domain": ["databases", "developer-tools"], "enriched": true, "function": ["database", "deployment", "cli", "developer-tools"], "health_score": 98, "homepage": "https://pgroll.com", "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["xataio/pgroll"], "name": "xataio/pgroll", "platform": ["windows", "cli", "cross-platform"], "pushed_at": "2026-08-19T06:03:51+00:00", "repo": "xataio/pgroll", "stars": 6560, "tags": ["postgresql", "schema-migrations", "zero-downtime", "database-migrations", "expand-contract", "backfill", "devops", "linux", "macos"], "topics": ["golang", "migrations", "postgresql", "zero-downtime", "hacktoberfest", "postgres", "schema"], "urls": [], "use_cases": ["run zero-downtime schema migrations on postgres", "add a column to a large table without locking the database", "roll back a database schema change instantly", "migrate a production postgres schema while the app keeps running", "backfill column data automatically during a migration", "apply breaking schema changes safely to an existing database"], "what_it_is": "pgroll is an open-source command-line tool for safe, reversible, zero-downtime schema migrations on PostgreSQL. It serves multiple schema versions simultaneously so client applications keep working during migrations, with automatic backfills and instant rollbacks.", "when_to_avoid": ["you use a database other than PostgreSQL", "you only need simple migrations on small databases where brief locks are acceptable", "you want a full ORM-integrated migration framework rather than a standalone CLI"], "when_to_choose": ["you run PostgreSQL 14+ in production and need schema changes without downtime or locks", "you want reversible migrations with instant rollback capability", "you need old and new schema versions to coexist during application rollout", "you work with managed Postgres like RDS or Aurora and need a dependency-free single binary"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pgroll", "repo": "xataio/pgroll", "role": "main", "score": 86}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.197603+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:44:03.712164+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee554ce4a77168202cc1250a61edb3c267c01264d7cd43b0a6542ac52a3cd24b", "fetched_at": "2026-08-28T04:09:45.197603+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xataio/pgroll"}, {"content_hash": "9fe7bfc8b6b1260e205b0adf2a10181ecd6d5f27e8e10095bc9dfa62679bffcc", "fetched_at": "2026-08-29T08:40:15.132756+00:00", "kind": "homepage", "missing": false, "url": "https://pgroll.com"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.197603+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:44:03.712164+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee554ce4a77168202cc1250a61edb3c267c01264d7cd43b0a6542ac52a3cd24b", "fetched_at": "2026-08-28T04:09:45.197603+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xataio/pgroll"}, {"content_hash": "9fe7bfc8b6b1260e205b0adf2a10181ecd6d5f27e8e10095bc9dfa62679bffcc", "fetched_at": "2026-08-29T08:40:15.132756+00:00", "kind": "homepage", "missing": false, "url": "https://pgroll.com"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:44:03.712164+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee554ce4a77168202cc1250a61edb3c267c01264d7cd43b0a6542ac52a3cd24b", "fetched_at": "2026-08-28T04:09:45.197603+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xataio/pgroll"}, {"content_hash": "9fe7bfc8b6b1260e205b0adf2a10181ecd6d5f27e8e10095bc9dfa62679bffcc", "fetched_at": "2026-08-29T08:40:15.132756+00:00", "kind": "homepage", "missing": false, "url": "https://pgroll.com"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.197603+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.197603+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.197603+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:44:03.712164+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee554ce4a77168202cc1250a61edb3c267c01264d7cd43b0a6542ac52a3cd24b", "fetched_at": "2026-08-28T04:09:45.197603+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xataio/pgroll"}, {"content_hash": "9fe7bfc8b6b1260e205b0adf2a10181ecd6d5f27e8e10095bc9dfa62679bffcc", "fetched_at": "2026-08-29T08:40:15.132756+00:00", "kind": "homepage", "missing": false, "url": "https://pgroll.com"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.197603+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.197603+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:44:03.712164+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee554ce4a77168202cc1250a61edb3c267c01264d7cd43b0a6542ac52a3cd24b", "fetched_at": "2026-08-28T04:09:45.197603+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xataio/pgroll"}, {"content_hash": "9fe7bfc8b6b1260e205b0adf2a10181ecd6d5f27e8e10095bc9dfa62679bffcc", "fetched_at": "2026-08-29T08:40:15.132756+00:00", "kind": "homepage", "missing": false, "url": "https://pgroll.com"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.197603+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.197603+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.197603+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:44:03.712164+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee554ce4a77168202cc1250a61edb3c267c01264d7cd43b0a6542ac52a3cd24b", "fetched_at": "2026-08-28T04:09:45.197603+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xataio/pgroll"}, {"content_hash": "9fe7bfc8b6b1260e205b0adf2a10181ecd6d5f27e8e10095bc9dfa62679bffcc", "fetched_at": "2026-08-29T08:40:15.132756+00:00", "kind": "homepage", "missing": false, "url": "https://pgroll.com"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.197603+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:45.197603+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:44:03.712164+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee554ce4a77168202cc1250a61edb3c267c01264d7cd43b0a6542ac52a3cd24b", "fetched_at": "2026-08-28T04:09:45.197603+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xataio/pgroll"}, {"content_hash": "9fe7bfc8b6b1260e205b0adf2a10181ecd6d5f27e8e10095bc9dfa62679bffcc", "fetched_at": "2026-08-29T08:40:15.132756+00:00", "kind": "homepage", "missing": false, "url": "https://pgroll.com"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:44:03.712164+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee554ce4a77168202cc1250a61edb3c267c01264d7cd43b0a6542ac52a3cd24b", "fetched_at": "2026-08-28T04:09:45.197603+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xataio/pgroll"}, {"content_hash": "9fe7bfc8b6b1260e205b0adf2a10181ecd6d5f27e8e10095bc9dfa62679bffcc", "fetched_at": "2026-08-29T08:40:15.132756+00:00", "kind": "homepage", "missing": false, "url": "https://pgroll.com"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:44:03.712164+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee554ce4a77168202cc1250a61edb3c267c01264d7cd43b0a6542ac52a3cd24b", "fetched_at": "2026-08-28T04:09:45.197603+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xataio/pgroll"}, {"content_hash": "9fe7bfc8b6b1260e205b0adf2a10181ecd6d5f27e8e10095bc9dfa62679bffcc", "fetched_at": "2026-08-29T08:40:15.132756+00:00", "kind": "homepage", "missing": false, "url": "https://pgroll.com"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:44:03.712164+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ee554ce4a77168202cc1250a61edb3c267c01264d7cd43b0a6542ac52a3cd24b", "fetched_at": "2026-08-28T04:09:45.197603+00:00", "kind": "readme", "missing": false, "url": "https://github.com/xataio/pgroll"}, {"content_hash": "9fe7bfc8b6b1260e205b0adf2a10181ecd6d5f27e8e10095bc9dfa62679bffcc", "fetched_at": "2026-08-29T08:40:15.132756+00:00", "kind": "homepage", "missing": false, "url": "https://pgroll.com"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 83, "rhythm": 71}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1168, "days_push": 14, "days_rel": 113, "gap_med": 38, "n_releases_24m": 16}, "score": 86, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}