{"adoption": {"forks": 1029, "observed_at": "2026-08-28T04:08:15.924364+00:00", "stars": 3740}, "canonical_url": "https://ross.abutalabs.com/products/php-crud-api", "card": {"archived": false, "artifact_type": "application", "description": "Single file PHP script that adds a REST API to a SQL database", "domain": ["web-development", "backend", "apis", "databases", "developer-tools"], "enriched": true, "function": ["api-framework", "http-server", "routing", "middleware", "database", "auth", "geospatial", "api-gateway"], "health_score": 97, "homepage": null, "language": "PHP", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["mevdschee/php-crud-api"], "name": "mevdschee/php-crud-api", "platform": ["php", "self-hosted", "cross-platform"], "pushed_at": "2026-08-12T00:11:22+00:00", "repo": "mevdschee/php-crud-api", "stars": 3740, "tags": ["rest-api", "crud", "single-file", "openapi", "swagger", "mysql", "postgresql", "sqlserver", "sqlite", "postgis", "geo", "treeql", "automatic-api", "web-server"], "topics": ["api-server", "restful", "mysql", "geospatial", "php", "postgresql", "php-api", "postgis", "crud", "rest-api", "openapi", "swagger", "automatic-api", "database", "multi-database", "sql-database", "geojson", "sqlserver", "sqlite"], "urls": [], "use_cases": ["expose a mysql database as a rest api", "generate a crud api for postgresql tables", "instant rest api for sqlite without writing backend code", "serve geo from postgis via an api", "add a restful api layer to an existing sql server database", "auto-generate openapi swagger docs for a database api", "prototype a backend api quickly from a database schema"], "what_it_is": "A single-file PHP script that automatically exposes a full-featured REST API on top of a MySQL/MariaDB, PostgreSQL, SQL Server, or SQLite database. It supports OpenAPI/Swagger documentation, middleware (CORS, auth, pagination), and spatial features via PostGIS or MySQL spatial extensions.", "when_to_avoid": ["you need complex custom business logic beyond CRUD operations", "your stack is not PHP and you prefer a native-language API layer", "you need GraphQL or non-REST protocols", "you require fine-grained per-endpoint control that middleware cannot express"], "when_to_choose": ["you need a REST API over an existing SQL database with minimal setup", "you want a zero-build, single-file deployable API server in PHP", "you need automatic OpenAPI documentation for database endpoints", "you want spatial/geo support in your API"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/php-crud-api", "repo": "mevdschee/php-crud-api", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.924364+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:29:07.622848+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8608f0c198b4fbd007d3d59082d8324edbdc3326c9ad40a616c37dc0c910d72e", "fetched_at": "2026-08-28T04:08:15.924364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mevdschee/php-crud-api"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.924364+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:29:07.622848+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8608f0c198b4fbd007d3d59082d8324edbdc3326c9ad40a616c37dc0c910d72e", "fetched_at": "2026-08-28T04:08:15.924364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mevdschee/php-crud-api"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:29:07.622848+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8608f0c198b4fbd007d3d59082d8324edbdc3326c9ad40a616c37dc0c910d72e", "fetched_at": "2026-08-28T04:08:15.924364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mevdschee/php-crud-api"}], "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:08:15.924364+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.924364+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.924364+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:29:07.622848+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8608f0c198b4fbd007d3d59082d8324edbdc3326c9ad40a616c37dc0c910d72e", "fetched_at": "2026-08-28T04:08:15.924364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mevdschee/php-crud-api"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.924364+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.924364+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:29:07.622848+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8608f0c198b4fbd007d3d59082d8324edbdc3326c9ad40a616c37dc0c910d72e", "fetched_at": "2026-08-28T04:08:15.924364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mevdschee/php-crud-api"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.924364+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.924364+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.924364+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:29:07.622848+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8608f0c198b4fbd007d3d59082d8324edbdc3326c9ad40a616c37dc0c910d72e", "fetched_at": "2026-08-28T04:08:15.924364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mevdschee/php-crud-api"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.924364+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:15.924364+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:29:07.622848+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8608f0c198b4fbd007d3d59082d8324edbdc3326c9ad40a616c37dc0c910d72e", "fetched_at": "2026-08-28T04:08:15.924364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mevdschee/php-crud-api"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:29:07.622848+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8608f0c198b4fbd007d3d59082d8324edbdc3326c9ad40a616c37dc0c910d72e", "fetched_at": "2026-08-28T04:08:15.924364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mevdschee/php-crud-api"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:29:07.622848+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8608f0c198b4fbd007d3d59082d8324edbdc3326c9ad40a616c37dc0c910d72e", "fetched_at": "2026-08-28T04:08:15.924364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mevdschee/php-crud-api"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:29:07.622848+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8608f0c198b4fbd007d3d59082d8324edbdc3326c9ad40a616c37dc0c910d72e", "fetched_at": "2026-08-28T04:08:15.924364+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mevdschee/php-crud-api"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 90}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4223, "days_push": 22, "days_rel": 65, "gap_med": 1, "n_releases_24m": 10}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}