{"adoption": {"forks": 403, "observed_at": "2026-08-28T04:04:11.826830+00:00", "stars": 1270}, "canonical_url": "https://ross.abutalabs.com/products/propel2", "card": {"archived": false, "artifact_type": "library", "description": "Propel2 is an open-source high-performance Object-Relational Mapping (ORM) for modern PHP", "domain": ["databases", "web-development", "backend", "developer-tools"], "enriched": true, "function": ["orm", "database", "database-driver", "cli"], "health_score": 99, "homepage": "http://propelorm.org/", "language": "PHP", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["propelorm/Propel2"], "name": "propelorm/Propel2", "platform": ["php", "cross-platform", "cli"], "pushed_at": "2026-08-21T10:05:22+00:00", "repo": "propelorm/Propel2", "stars": 1270, "tags": ["active-record", "query-builder", "schema-migration", "reverse-engineering", "code-generation", "mysql", "postgresql", "sqlite", "symfony-components"], "topics": ["php", "orm"], "urls": [], "use_cases": ["map php objects to mysql or postgresql tables", "generate php model classes from an xml schema", "run database schema migrations without losing data", "reverse engineer an orm from an existing database", "build crud queries with a fluent query builder", "add reusable behaviors like sluggable or timestampable to models", "use an orm with symfony or silex"], "what_it_is": "Propel2 is an open-source, high-performance Object-Relational Mapping (ORM) library for modern PHP (7.4+/PHP8), built on code generation and Symfony components. It provides Active Record and query classes, schema migrations, reverse engineering of existing databases, and a behavior system for reusable model features.", "when_to_avoid": ["you prefer Doctrine's entity manager / data mapper approach, the dominant PHP ORM ecosystem", "you need a database unsupported by Propel (e.g., beyond MySQL, PostgreSQL, SQLite, MSSQL, Oracle)", "you want a runtime-only ORM without a code generation build step", "you need NoSQL or non-SQL data mapping"], "when_to_choose": ["you want a fast, code-generation-based ORM in PHP with IDE-friendly generated getters/setters", "you need schema migrations and reverse engineering for MySQL, SQLite, or PostgreSQL", "you prefer Active Record patterns and a behavior/plugin system", "you're integrating an ORM into Symfony or Silex applications"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/propel2", "repo": "propelorm/Propel2", "role": "main", "score": 94}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:11.826830+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:03:27.633137+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daaf3fb0d5d2a047924f3411e6693526f7a0d14234b1097ecc047c67cfe7e09d", "fetched_at": "2026-08-28T04:04:11.826830+00:00", "kind": "readme", "missing": false, "url": "https://github.com/propelorm/Propel2"}, {"content_hash": "55a469bb208bdda70cba38aefa353e83601d174f88ab3dbb7066746e9454224d", "fetched_at": "2026-08-29T12:14:57.113377+00:00", "kind": "homepage", "missing": false, "url": "http://propelorm.org/"}, {"content_hash": "7ee4ddf9edd4a48d4daaa9d23e97227b90cfbf956cca886a2fa75c11237c653d", "fetched_at": "2026-08-29T12:14:57.116018+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation"}, {"content_hash": "cab3aeba1c00687254bd9c2b9bfc7b63b8645b3cfd12e7751d9ec70d83ecd8f6", "fetched_at": "2026-08-29T12:14:57.118053+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation/01-installation.html"}, {"content_hash": "a116f6b643a500d8cc6aabfe503c12581946b6a99d593a99883aeced3c25c0d6", "fetched_at": "2026-08-29T12:14:57.119833+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/about-us.html"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:11.826830+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:03:27.633137+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daaf3fb0d5d2a047924f3411e6693526f7a0d14234b1097ecc047c67cfe7e09d", "fetched_at": "2026-08-28T04:04:11.826830+00:00", "kind": "readme", "missing": false, "url": "https://github.com/propelorm/Propel2"}, {"content_hash": "55a469bb208bdda70cba38aefa353e83601d174f88ab3dbb7066746e9454224d", "fetched_at": "2026-08-29T12:14:57.113377+00:00", "kind": "homepage", "missing": false, "url": "http://propelorm.org/"}, {"content_hash": "7ee4ddf9edd4a48d4daaa9d23e97227b90cfbf956cca886a2fa75c11237c653d", "fetched_at": "2026-08-29T12:14:57.116018+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation"}, {"content_hash": "cab3aeba1c00687254bd9c2b9bfc7b63b8645b3cfd12e7751d9ec70d83ecd8f6", "fetched_at": "2026-08-29T12:14:57.118053+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation/01-installation.html"}, {"content_hash": "a116f6b643a500d8cc6aabfe503c12581946b6a99d593a99883aeced3c25c0d6", "fetched_at": "2026-08-29T12:14:57.119833+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/about-us.html"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:03:27.633137+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daaf3fb0d5d2a047924f3411e6693526f7a0d14234b1097ecc047c67cfe7e09d", "fetched_at": "2026-08-28T04:04:11.826830+00:00", "kind": "readme", "missing": false, "url": "https://github.com/propelorm/Propel2"}, {"content_hash": "55a469bb208bdda70cba38aefa353e83601d174f88ab3dbb7066746e9454224d", "fetched_at": "2026-08-29T12:14:57.113377+00:00", "kind": "homepage", "missing": false, "url": "http://propelorm.org/"}, {"content_hash": "7ee4ddf9edd4a48d4daaa9d23e97227b90cfbf956cca886a2fa75c11237c653d", "fetched_at": "2026-08-29T12:14:57.116018+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation"}, {"content_hash": "cab3aeba1c00687254bd9c2b9bfc7b63b8645b3cfd12e7751d9ec70d83ecd8f6", "fetched_at": "2026-08-29T12:14:57.118053+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation/01-installation.html"}, {"content_hash": "a116f6b643a500d8cc6aabfe503c12581946b6a99d593a99883aeced3c25c0d6", "fetched_at": "2026-08-29T12:14:57.119833+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/about-us.html"}], "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:04:11.826830+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:11.826830+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:11.826830+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:03:27.633137+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daaf3fb0d5d2a047924f3411e6693526f7a0d14234b1097ecc047c67cfe7e09d", "fetched_at": "2026-08-28T04:04:11.826830+00:00", "kind": "readme", "missing": false, "url": "https://github.com/propelorm/Propel2"}, {"content_hash": "55a469bb208bdda70cba38aefa353e83601d174f88ab3dbb7066746e9454224d", "fetched_at": "2026-08-29T12:14:57.113377+00:00", "kind": "homepage", "missing": false, "url": "http://propelorm.org/"}, {"content_hash": "7ee4ddf9edd4a48d4daaa9d23e97227b90cfbf956cca886a2fa75c11237c653d", "fetched_at": "2026-08-29T12:14:57.116018+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation"}, {"content_hash": "cab3aeba1c00687254bd9c2b9bfc7b63b8645b3cfd12e7751d9ec70d83ecd8f6", "fetched_at": "2026-08-29T12:14:57.118053+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation/01-installation.html"}, {"content_hash": "a116f6b643a500d8cc6aabfe503c12581946b6a99d593a99883aeced3c25c0d6", "fetched_at": "2026-08-29T12:14:57.119833+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/about-us.html"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:11.826830+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:11.826830+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:03:27.633137+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daaf3fb0d5d2a047924f3411e6693526f7a0d14234b1097ecc047c67cfe7e09d", "fetched_at": "2026-08-28T04:04:11.826830+00:00", "kind": "readme", "missing": false, "url": "https://github.com/propelorm/Propel2"}, {"content_hash": "55a469bb208bdda70cba38aefa353e83601d174f88ab3dbb7066746e9454224d", "fetched_at": "2026-08-29T12:14:57.113377+00:00", "kind": "homepage", "missing": false, "url": "http://propelorm.org/"}, {"content_hash": "7ee4ddf9edd4a48d4daaa9d23e97227b90cfbf956cca886a2fa75c11237c653d", "fetched_at": "2026-08-29T12:14:57.116018+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation"}, {"content_hash": "cab3aeba1c00687254bd9c2b9bfc7b63b8645b3cfd12e7751d9ec70d83ecd8f6", "fetched_at": "2026-08-29T12:14:57.118053+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation/01-installation.html"}, {"content_hash": "a116f6b643a500d8cc6aabfe503c12581946b6a99d593a99883aeced3c25c0d6", "fetched_at": "2026-08-29T12:14:57.119833+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/about-us.html"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:11.826830+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:11.826830+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:11.826830+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:03:27.633137+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daaf3fb0d5d2a047924f3411e6693526f7a0d14234b1097ecc047c67cfe7e09d", "fetched_at": "2026-08-28T04:04:11.826830+00:00", "kind": "readme", "missing": false, "url": "https://github.com/propelorm/Propel2"}, {"content_hash": "55a469bb208bdda70cba38aefa353e83601d174f88ab3dbb7066746e9454224d", "fetched_at": "2026-08-29T12:14:57.113377+00:00", "kind": "homepage", "missing": false, "url": "http://propelorm.org/"}, {"content_hash": "7ee4ddf9edd4a48d4daaa9d23e97227b90cfbf956cca886a2fa75c11237c653d", "fetched_at": "2026-08-29T12:14:57.116018+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation"}, {"content_hash": "cab3aeba1c00687254bd9c2b9bfc7b63b8645b3cfd12e7751d9ec70d83ecd8f6", "fetched_at": "2026-08-29T12:14:57.118053+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation/01-installation.html"}, {"content_hash": "a116f6b643a500d8cc6aabfe503c12581946b6a99d593a99883aeced3c25c0d6", "fetched_at": "2026-08-29T12:14:57.119833+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/about-us.html"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:11.826830+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:11.826830+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:03:27.633137+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daaf3fb0d5d2a047924f3411e6693526f7a0d14234b1097ecc047c67cfe7e09d", "fetched_at": "2026-08-28T04:04:11.826830+00:00", "kind": "readme", "missing": false, "url": "https://github.com/propelorm/Propel2"}, {"content_hash": "55a469bb208bdda70cba38aefa353e83601d174f88ab3dbb7066746e9454224d", "fetched_at": "2026-08-29T12:14:57.113377+00:00", "kind": "homepage", "missing": false, "url": "http://propelorm.org/"}, {"content_hash": "7ee4ddf9edd4a48d4daaa9d23e97227b90cfbf956cca886a2fa75c11237c653d", "fetched_at": "2026-08-29T12:14:57.116018+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation"}, {"content_hash": "cab3aeba1c00687254bd9c2b9bfc7b63b8645b3cfd12e7751d9ec70d83ecd8f6", "fetched_at": "2026-08-29T12:14:57.118053+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation/01-installation.html"}, {"content_hash": "a116f6b643a500d8cc6aabfe503c12581946b6a99d593a99883aeced3c25c0d6", "fetched_at": "2026-08-29T12:14:57.119833+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/about-us.html"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:03:27.633137+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daaf3fb0d5d2a047924f3411e6693526f7a0d14234b1097ecc047c67cfe7e09d", "fetched_at": "2026-08-28T04:04:11.826830+00:00", "kind": "readme", "missing": false, "url": "https://github.com/propelorm/Propel2"}, {"content_hash": "55a469bb208bdda70cba38aefa353e83601d174f88ab3dbb7066746e9454224d", "fetched_at": "2026-08-29T12:14:57.113377+00:00", "kind": "homepage", "missing": false, "url": "http://propelorm.org/"}, {"content_hash": "7ee4ddf9edd4a48d4daaa9d23e97227b90cfbf956cca886a2fa75c11237c653d", "fetched_at": "2026-08-29T12:14:57.116018+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation"}, {"content_hash": "cab3aeba1c00687254bd9c2b9bfc7b63b8645b3cfd12e7751d9ec70d83ecd8f6", "fetched_at": "2026-08-29T12:14:57.118053+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation/01-installation.html"}, {"content_hash": "a116f6b643a500d8cc6aabfe503c12581946b6a99d593a99883aeced3c25c0d6", "fetched_at": "2026-08-29T12:14:57.119833+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/about-us.html"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:03:27.633137+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daaf3fb0d5d2a047924f3411e6693526f7a0d14234b1097ecc047c67cfe7e09d", "fetched_at": "2026-08-28T04:04:11.826830+00:00", "kind": "readme", "missing": false, "url": "https://github.com/propelorm/Propel2"}, {"content_hash": "55a469bb208bdda70cba38aefa353e83601d174f88ab3dbb7066746e9454224d", "fetched_at": "2026-08-29T12:14:57.113377+00:00", "kind": "homepage", "missing": false, "url": "http://propelorm.org/"}, {"content_hash": "7ee4ddf9edd4a48d4daaa9d23e97227b90cfbf956cca886a2fa75c11237c653d", "fetched_at": "2026-08-29T12:14:57.116018+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation"}, {"content_hash": "cab3aeba1c00687254bd9c2b9bfc7b63b8645b3cfd12e7751d9ec70d83ecd8f6", "fetched_at": "2026-08-29T12:14:57.118053+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation/01-installation.html"}, {"content_hash": "a116f6b643a500d8cc6aabfe503c12581946b6a99d593a99883aeced3c25c0d6", "fetched_at": "2026-08-29T12:14:57.119833+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/about-us.html"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:03:27.633137+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "daaf3fb0d5d2a047924f3411e6693526f7a0d14234b1097ecc047c67cfe7e09d", "fetched_at": "2026-08-28T04:04:11.826830+00:00", "kind": "readme", "missing": false, "url": "https://github.com/propelorm/Propel2"}, {"content_hash": "55a469bb208bdda70cba38aefa353e83601d174f88ab3dbb7066746e9454224d", "fetched_at": "2026-08-29T12:14:57.113377+00:00", "kind": "homepage", "missing": false, "url": "http://propelorm.org/"}, {"content_hash": "7ee4ddf9edd4a48d4daaa9d23e97227b90cfbf956cca886a2fa75c11237c653d", "fetched_at": "2026-08-29T12:14:57.116018+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation"}, {"content_hash": "cab3aeba1c00687254bd9c2b9bfc7b63b8645b3cfd12e7751d9ec70d83ecd8f6", "fetched_at": "2026-08-29T12:14:57.118053+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/documentation/01-installation.html"}, {"content_hash": "a116f6b643a500d8cc6aabfe503c12581946b6a99d593a99883aeced3c25c0d6", "fetched_at": "2026-08-29T12:14:57.119833+00:00", "kind": "site_page", "missing": false, "url": "http://propelorm.org/about-us.html"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 86}, "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": 5445, "days_push": 12, "days_rel": 12, "gap_med": 58, "n_releases_24m": 2}, "score": 94, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}