{"id":47244548,"url":"https://github.com/waaseyaa/framework","last_synced_at":"2026-06-07T16:01:06.838Z","repository":{"id":341327665,"uuid":"1169046186","full_name":"waaseyaa/framework","owner":"waaseyaa","description":"Waaseyaa is an entity-first, AI-native PHP framework built on Symfony components. It provides a           7-layer architecture for building content management systems and data-driven applications.","archived":false,"fork":false,"pushed_at":"2026-06-04T12:01:44.000Z","size":43839,"stargazers_count":3,"open_issues_count":39,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-04T14:03:19.698Z","etag":null,"topics":["cms","laravel","php"],"latest_commit_sha":null,"homepage":"https://waaseyaa.org/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/waaseyaa.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security/agent-executor-review.md","support":null,"governance":"docs/governance/m11-periodic-drift-scan-protocol.md","roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":"MAINTAINERS.md","copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-28T05:17:12.000Z","updated_at":"2026-05-30T17:12:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"7e5eb3bd-c9a7-4b79-948d-39d6bfde613a","html_url":"https://github.com/waaseyaa/framework","commit_stats":null,"previous_names":["jonesrussell/aurora-cms","jonesrussell/waaseyaa","waaseyaa/framework"],"tags_count":194,"template":false,"template_full_name":null,"purl":"pkg:github/waaseyaa/framework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waaseyaa%2Fframework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waaseyaa%2Fframework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waaseyaa%2Fframework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waaseyaa%2Fframework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/waaseyaa","download_url":"https://codeload.github.com/waaseyaa/framework/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waaseyaa%2Fframework/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34027670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cms","laravel","php"],"created_at":"2026-03-14T04:13:50.782Z","updated_at":"2026-06-07T16:01:06.825Z","avatar_url":"https://github.com/waaseyaa.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Waaseyaa\n\n[![CI](https://github.com/waaseyaa/framework/actions/workflows/ci.yml/badge.svg)](https://github.com/waaseyaa/framework/actions/workflows/ci.yml)\n[![License: GPL-2.0-or-later](https://img.shields.io/badge/License-GPL--2.0--or--later-blue.svg)](LICENSE.txt)\n[![PHP 8.5+](https://img.shields.io/badge/PHP-8.5%2B-8892BF.svg)](https://www.php.net/)\n\n\u003e Governance: see [MAINTAINERS.md](MAINTAINERS.md) for the current maintainer roster and [SUCCESSION.md](SUCCESSION.md) for the framework's continuity plan across Tiers 0–4.\n\nA modern, entity-first, AI-native content management framework built on PHP 8.5+ and Symfony 7.\n\nWaaseyaa replaces Drupal's legacy runtime with a clean, modular architecture organized as independent Composer packages. Every subsystem — entities, fields, config, caching, routing, access control — is a standalone package with explicit interfaces, no global state, and no hidden coupling.\n\n## Features\n\n- **Entity-first architecture** — Content types, users, config, and taxonomy are all entities with a unified persistence pipeline\n- **JSON:API + GraphQL** — Dual API layer auto-generated from entity type definitions\n- **AI-native** — Entity schemas automatically generate MCP tools, enabling AI agents to create, query, and manage content\n- **Modular monorepo** — 62 active packages (plus 3 meta-packages: `core`, `cms`, `full`) organized in 7 architectural layers; see [CLAUDE.md](CLAUDE.md#layer-architecture) for the full layer table\n- **Nuxt 3 admin SPA** — Vue 3 + TypeScript admin interface with i18n support\n- **In-memory testable** — Every subsystem has in-memory implementations for fast, isolated testing\n- **Zero Drupal dependency** — Clean-room implementation inspired by Drupal's entity model, built on Symfony components\n\n## Requirements\n\n- PHP 8.5 or later\n- Composer 2.x\n- SQLite 3 (default) or MySQL/PostgreSQL via Doctrine DBAL\n\n## Quick Start\n\nThe `composer create-project` target below installs the published Waaseyaa project skeleton package (`waaseyaa/waaseyaa`). This repository is the `waaseyaa/framework` monorepo that supplies the underlying framework packages.\n\n```bash\ncomposer create-project waaseyaa/waaseyaa my-site\ncd my-site\n./vendor/bin/phpunit\nbin/waaseyaa serve\n```\n\nThe scaffold now creates `tests/Unit` and `tests/Integration`, so the default PHPUnit command is usable immediately. For static or marketing-style sites, you can start from the clean scaffold, add a `SiteServiceProvider`, `PageController`, Twig templates, and a small regression test before wiring deploy infrastructure.\n\nCreate your first content:\n\n```bash\ncurl -X POST http://localhost:8080/api/note \\\n  -H \"Content-Type: application/vnd.api+json\" \\\n  -d '{\n    \"data\": {\n      \"type\": \"note\",\n      \"attributes\": {\n        \"title\": \"Hello, Waaseyaa\",\n        \"body\": \"My first note.\"\n      }\n    }\n  }'\n```\n\nWaaseyaa ships with a built-in `core.note` content type that is always available at boot. To define custom content types, see the [`waaseyaa/node`](packages/node) package as a reference.\n\n## Fresh App Workflow\n\nUse this minimal sequence for a new public-facing site:\n\n```bash\ncomposer create-project waaseyaa/waaseyaa my-site --stability=dev\ncd my-site\n./vendor/bin/phpunit\nphp bin/waaseyaa optimize:manifest\nbin/waaseyaa serve\n```\n\nWhen turning the scaffold into a site:\n\n1. Add a failing integration test for your public routes and rendered HTML.\n2. Register your site provider in `composer.json` under `extra.waaseyaa.providers`.\n3. Add your `PageController`, `SiteServiceProvider`, shared Twig layout, and site templates.\n4. Re-run PHPUnit and `php bin/waaseyaa optimize:manifest`.\n5. Add repo-local deployment files (`deploy.php`, `.github/workflows/*`) only after the site passes locally.\n\n## Architecture\n\nWaaseyaa is structured as 7 architectural layers with strict downward-only dependencies:\n\n```\nLayer 6  Interfaces      cli, admin, admin-surface, graphql, mcp, ssr,\n                         telescope, deployer, inertia\nLayer 5  AI              ai-schema, ai-agent, ai-vector, ai-pipeline\nLayer 4  API             api, routing\nLayer 3  Services        workflows, search, notification, billing, github\nLayer 2  Content Types   node, taxonomy, media, path, menu, note, relationship\nLayer 1  Core Data       entity, entity-storage, access, user, config, field, auth\nLayer 0  Foundation      foundation, cache, plugin, typed-data, database-legacy,\n                         testing, i18n, queue, scheduler, state, validation,\n                         mail, http-client, ingestion\n```\n\nThree meta-packages provide convenient installation:\n\n| Meta-package | Includes |\n|---|---|\n| `waaseyaa/core` | Foundation + Core Data |\n| `waaseyaa/cms` | Core + Content Types + API + CLI |\n| `waaseyaa/full` | CMS + AI + GraphQL + SSR + Admin |\n\n## Entity Persistence Pipeline\n\nAll content follows a single, consistent pipeline:\n\n```\nEntity (extends EntityBase or ContentEntityBase)\n  -\u003e EntityType registered via EntityTypeManager\n  -\u003e EntityStorageDriverInterface (SqlStorageDriver)\n  -\u003e EntityRepository (hydration, events, validation)\n  -\u003e DatabaseInterface (Doctrine DBAL)\n```\n\n## CLI\n\nWaaseyaa includes a comprehensive CLI built on Symfony Console:\n\n```bash\nbin/waaseyaa install              # Set up database and initial config\nbin/waaseyaa serve                # Start the dev server\nbin/waaseyaa migrate              # Run pending migrations\nbin/waaseyaa entity-type:list     # List registered entity types\nbin/waaseyaa entity:create node   # Create an entity interactively\nbin/waaseyaa schema:check         # Detect schema drift\nbin/waaseyaa health:check         # Run diagnostic health checks\nbin/waaseyaa optimize:manifest    # Rebuild attribute-discovery manifest\nbin/waaseyaa config:export        # Export config to sync directory\nbin/waaseyaa config:import        # Import config from sync directory\n```\n\nCode generation scaffolding:\n\n```bash\nbin/waaseyaa make:entity          # Generate a content entity class\nbin/waaseyaa make:entity-type     # Generate an entity type class\nbin/waaseyaa make:policy          # Generate an access policy class\nbin/waaseyaa make:provider        # Generate a service provider class\nbin/waaseyaa make:migration       # Generate a migration file\nbin/waaseyaa make:plugin          # Generate a plugin class\nbin/waaseyaa make:listener        # Generate an event listener class\nbin/waaseyaa make:job             # Generate a queue job class\n```\n\n## Testing\n\n```bash\n# All tests\n./vendor/bin/phpunit\n\n# Unit tests only\n./vendor/bin/phpunit --testsuite Unit\n\n# Integration tests only\n./vendor/bin/phpunit --testsuite Integration\n\n# Single package\n./vendor/bin/phpunit packages/entity/tests/\n\n# Pattern matching\n./vendor/bin/phpunit --filter EntityRepository\n```\n\nCode quality:\n\n```bash\ncomposer cs-check    # Check code style (PHP-CS-Fixer dry-run)\ncomposer cs-fix      # Auto-fix code style\ncomposer phpstan     # Static analysis (level 5, PHPStan 2)\n```\n\n## Key Design Principles\n\n- **No global state.** Every service receives its dependencies through constructor injection.\n- **Interface-first.** Public APIs are defined as interfaces. Implementations are swappable.\n- **In-memory testable.** Every subsystem has in-memory implementations for fast, isolated testing.\n- **Layered architecture.** Each layer only depends on layers below it. No circular dependencies.\n- **AI-native.** Entity schemas automatically generate MCP tools, enabling AI agents to interact with content through structured tool calls.\n\n## Contributing\n\nContributions and **AI coding agents** should follow **[Spec Kitty–first workflow](docs/specs/workflow.md)** (missions / work packages under `.kittify/`) with **GitHub** for PRs, CI, and optional issues. Human-oriented entry points: [`CLAUDE.md`](CLAUDE.md) and [`AGENTS.md`](AGENTS.md).\n\n- **Spec Kitty:** `pip install spec-kitty-cli` or `uv tool install spec-kitty-cli`, then `spec-kitty init --here` (or `spec-kitty upgrade`) in a clone; use the PR template line **Active Spec Kitty mission** when the change comes from a mission.\n- **PRs:** Fill [`.github/pull_request_template.md`](.github/pull_request_template.md) — link a GitHub `#N` **or** the mission / WP you used.\n- **GitHub issues:** Optional for every change; when you open one, assign a **Track** milestone (see `docs/specs/workflow.md`). **M11 governed** work still uses the [governed-change template](.github/ISSUE_TEMPLATE/m11-governed-change.md) as the filing front door.\n\n```bash\n# Clone the repository\ngit clone https://github.com/waaseyaa/framework.git\ncd framework\ncomposer install\n\n# Run the full test suite\n./vendor/bin/phpunit\n\n# Check code style\ncomposer cs-check\n```\n\n## License\n\nGPL-2.0-or-later. See [LICENSE.txt](LICENSE.txt).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaaseyaa%2Fframework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwaaseyaa%2Fframework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaaseyaa%2Fframework/lists"}