{"adoption": {"forks": 183, "observed_at": "2026-08-28T04:06:31.632555+00:00", "stars": 2259}, "canonical_url": "https://ross.abutalabs.com/products/tempest-framework", "card": {"archived": false, "artifact_type": "framework", "description": "The PHP framework that gets out of your way", "domain": ["web-development", "backend", "developer-tools"], "enriched": true, "function": ["web-framework", "routing", "templating", "cli", "orm", "middleware"], "health_score": 99, "homepage": "https://tempestphp.com", "language": "PHP", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["tempestphp/tempest-framework"], "name": "tempestphp/tempest-framework", "platform": ["php", "cli"], "pushed_at": "2026-08-21T18:03:14+00:00", "repo": "tempestphp/tempest-framework", "stars": 2259, "tags": ["mvc", "zero-config", "php-framework", "code-discovery", "console-commands", "event-driven", "event-handling", "command-line", "web-server"], "topics": ["framework", "mvc", "php"], "urls": [], "use_cases": ["build a web application in PHP with minimal boilerplate", "create REST APIs with attribute-based routing", "write console commands and CLI tools in PHP", "build apps with database migrations and ORM mapping", "use a modern PHP template engine with component syntax", "handle domain events with event handlers and observers"], "what_it_is": "Tempest is a modern, community-driven PHP framework designed to minimize framework-related boilerplate so developers can focus on application code. It uses attribute-based routing, console commands, and event handlers with automatic code discovery, requiring zero configuration.", "when_to_avoid": ["you need a battle-tested framework with a large ecosystem like Laravel or Symfony", "your team relies on extensive third-party packages built for mainstream frameworks", "you need long-term enterprise support guarantees"], "when_to_choose": ["you want a lightweight, zero-configuration PHP framework", "you prefer attribute/annotation-based routing and command definitions", "you want a modern template engine inspired by front-end frameworks", "you like a design between Symfony's robustness and Laravel's eloquence"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/tempest-framework", "repo": "tempestphp/tempest-framework", "role": "main", "score": 90}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.632555+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:42:46.626357+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5d45e59890ea773076e6ad147086073ed896b65b924041ff3247271c31a380db", "fetched_at": "2026-08-28T04:06:31.632555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tempestphp/tempest-framework"}, {"content_hash": "9f73069f2d62d161596bf2d90caeb3dfaed8ebf7973217fc6a1b6862819efd74", "fetched_at": "2026-08-29T10:23:26.525802+00:00", "kind": "homepage", "missing": false, "url": "https://tempestphp.com"}, {"content_hash": "92cd86fe0b1b4d9cdac6b67b6e74fb3fa34f8520b71995f9b5d4fb3a3d063f62", "fetched_at": "2026-08-29T10:23:26.535017+00:00", "kind": "site_page", "missing": false, "url": "https://tempestphp.com/documentation"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.632555+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:42:46.626357+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5d45e59890ea773076e6ad147086073ed896b65b924041ff3247271c31a380db", "fetched_at": "2026-08-28T04:06:31.632555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tempestphp/tempest-framework"}, {"content_hash": "9f73069f2d62d161596bf2d90caeb3dfaed8ebf7973217fc6a1b6862819efd74", "fetched_at": "2026-08-29T10:23:26.525802+00:00", "kind": "homepage", "missing": false, "url": "https://tempestphp.com"}, {"content_hash": "92cd86fe0b1b4d9cdac6b67b6e74fb3fa34f8520b71995f9b5d4fb3a3d063f62", "fetched_at": "2026-08-29T10:23:26.535017+00:00", "kind": "site_page", "missing": false, "url": "https://tempestphp.com/documentation"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:42:46.626357+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5d45e59890ea773076e6ad147086073ed896b65b924041ff3247271c31a380db", "fetched_at": "2026-08-28T04:06:31.632555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tempestphp/tempest-framework"}, {"content_hash": "9f73069f2d62d161596bf2d90caeb3dfaed8ebf7973217fc6a1b6862819efd74", "fetched_at": "2026-08-29T10:23:26.525802+00:00", "kind": "homepage", "missing": false, "url": "https://tempestphp.com"}, {"content_hash": "92cd86fe0b1b4d9cdac6b67b6e74fb3fa34f8520b71995f9b5d4fb3a3d063f62", "fetched_at": "2026-08-29T10:23:26.535017+00:00", "kind": "site_page", "missing": false, "url": "https://tempestphp.com/documentation"}], "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:06:31.632555+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.632555+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.632555+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:42:46.626357+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5d45e59890ea773076e6ad147086073ed896b65b924041ff3247271c31a380db", "fetched_at": "2026-08-28T04:06:31.632555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tempestphp/tempest-framework"}, {"content_hash": "9f73069f2d62d161596bf2d90caeb3dfaed8ebf7973217fc6a1b6862819efd74", "fetched_at": "2026-08-29T10:23:26.525802+00:00", "kind": "homepage", "missing": false, "url": "https://tempestphp.com"}, {"content_hash": "92cd86fe0b1b4d9cdac6b67b6e74fb3fa34f8520b71995f9b5d4fb3a3d063f62", "fetched_at": "2026-08-29T10:23:26.535017+00:00", "kind": "site_page", "missing": false, "url": "https://tempestphp.com/documentation"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.632555+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.632555+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:42:46.626357+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5d45e59890ea773076e6ad147086073ed896b65b924041ff3247271c31a380db", "fetched_at": "2026-08-28T04:06:31.632555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tempestphp/tempest-framework"}, {"content_hash": "9f73069f2d62d161596bf2d90caeb3dfaed8ebf7973217fc6a1b6862819efd74", "fetched_at": "2026-08-29T10:23:26.525802+00:00", "kind": "homepage", "missing": false, "url": "https://tempestphp.com"}, {"content_hash": "92cd86fe0b1b4d9cdac6b67b6e74fb3fa34f8520b71995f9b5d4fb3a3d063f62", "fetched_at": "2026-08-29T10:23:26.535017+00:00", "kind": "site_page", "missing": false, "url": "https://tempestphp.com/documentation"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.632555+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.632555+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.632555+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:42:46.626357+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5d45e59890ea773076e6ad147086073ed896b65b924041ff3247271c31a380db", "fetched_at": "2026-08-28T04:06:31.632555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tempestphp/tempest-framework"}, {"content_hash": "9f73069f2d62d161596bf2d90caeb3dfaed8ebf7973217fc6a1b6862819efd74", "fetched_at": "2026-08-29T10:23:26.525802+00:00", "kind": "homepage", "missing": false, "url": "https://tempestphp.com"}, {"content_hash": "92cd86fe0b1b4d9cdac6b67b6e74fb3fa34f8520b71995f9b5d4fb3a3d063f62", "fetched_at": "2026-08-29T10:23:26.535017+00:00", "kind": "site_page", "missing": false, "url": "https://tempestphp.com/documentation"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.632555+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:31.632555+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:42:46.626357+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5d45e59890ea773076e6ad147086073ed896b65b924041ff3247271c31a380db", "fetched_at": "2026-08-28T04:06:31.632555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tempestphp/tempest-framework"}, {"content_hash": "9f73069f2d62d161596bf2d90caeb3dfaed8ebf7973217fc6a1b6862819efd74", "fetched_at": "2026-08-29T10:23:26.525802+00:00", "kind": "homepage", "missing": false, "url": "https://tempestphp.com"}, {"content_hash": "92cd86fe0b1b4d9cdac6b67b6e74fb3fa34f8520b71995f9b5d4fb3a3d063f62", "fetched_at": "2026-08-29T10:23:26.535017+00:00", "kind": "site_page", "missing": false, "url": "https://tempestphp.com/documentation"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:42:46.626357+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5d45e59890ea773076e6ad147086073ed896b65b924041ff3247271c31a380db", "fetched_at": "2026-08-28T04:06:31.632555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tempestphp/tempest-framework"}, {"content_hash": "9f73069f2d62d161596bf2d90caeb3dfaed8ebf7973217fc6a1b6862819efd74", "fetched_at": "2026-08-29T10:23:26.525802+00:00", "kind": "homepage", "missing": false, "url": "https://tempestphp.com"}, {"content_hash": "92cd86fe0b1b4d9cdac6b67b6e74fb3fa34f8520b71995f9b5d4fb3a3d063f62", "fetched_at": "2026-08-29T10:23:26.535017+00:00", "kind": "site_page", "missing": false, "url": "https://tempestphp.com/documentation"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:42:46.626357+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5d45e59890ea773076e6ad147086073ed896b65b924041ff3247271c31a380db", "fetched_at": "2026-08-28T04:06:31.632555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tempestphp/tempest-framework"}, {"content_hash": "9f73069f2d62d161596bf2d90caeb3dfaed8ebf7973217fc6a1b6862819efd74", "fetched_at": "2026-08-29T10:23:26.525802+00:00", "kind": "homepage", "missing": false, "url": "https://tempestphp.com"}, {"content_hash": "92cd86fe0b1b4d9cdac6b67b6e74fb3fa34f8520b71995f9b5d4fb3a3d063f62", "fetched_at": "2026-08-29T10:23:26.535017+00:00", "kind": "site_page", "missing": false, "url": "https://tempestphp.com/documentation"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:42:46.626357+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5d45e59890ea773076e6ad147086073ed896b65b924041ff3247271c31a380db", "fetched_at": "2026-08-28T04:06:31.632555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tempestphp/tempest-framework"}, {"content_hash": "9f73069f2d62d161596bf2d90caeb3dfaed8ebf7973217fc6a1b6862819efd74", "fetched_at": "2026-08-29T10:23:26.525802+00:00", "kind": "homepage", "missing": false, "url": "https://tempestphp.com"}, {"content_hash": "92cd86fe0b1b4d9cdac6b67b6e74fb3fa34f8520b71995f9b5d4fb3a3d063f62", "fetched_at": "2026-08-29T10:23:26.535017+00:00", "kind": "site_page", "missing": false, "url": "https://tempestphp.com/documentation"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 82, "rhythm": 83}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1150, "days_push": 12, "days_rel": 35, "gap_med": 1, "n_releases_24m": 98}, "score": 90, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}