waaseyaa / framework
Waaseyaa monorepo — a modern, entity-first, AI-native CMS
Requires
- php: >=8.5 <8.6
- ext-pdo_sqlite: *
- ext-sodium: *
- ext-sqlite3: *
- dragonmantank/cron-expression: ^3.0
- symfony/console: ^8.0
- symfony/dotenv: ^8.0
- symfony/html-sanitizer: ^8.0
- waaseyaa/access: v0.1.0-alpha.308
- waaseyaa/admin-surface: v0.1.0-alpha.308
- waaseyaa/ai-pipeline: v0.1.0-alpha.308
- waaseyaa/ai-schema: v0.1.0-alpha.308
- waaseyaa/ai-tools: v0.1.0-alpha.308
- waaseyaa/analytics: v0.1.0-alpha.308
- waaseyaa/api: v0.1.0-alpha.308
- waaseyaa/attachment: v0.1.0-alpha.308
- waaseyaa/auth: v0.1.0-alpha.308
- waaseyaa/billing: v0.1.0-alpha.308
- waaseyaa/bimaaji: v0.1.0-alpha.308
- waaseyaa/cache: v0.1.0-alpha.308
- waaseyaa/cli: v0.1.0-alpha.308
- waaseyaa/config: v0.1.0-alpha.308
- waaseyaa/database-legacy: v0.1.0-alpha.308
- waaseyaa/debug: v0.1.0-alpha.308
- waaseyaa/deployer: v0.1.0-alpha.308
- waaseyaa/entity: v0.1.0-alpha.308
- waaseyaa/entity-storage: v0.1.0-alpha.308
- waaseyaa/error-handler: v0.1.0-alpha.308
- waaseyaa/field: v0.1.0-alpha.308
- waaseyaa/foundation: v0.1.0-alpha.308
- waaseyaa/frankenphp: v0.1.0-alpha.308
- waaseyaa/geo: v0.1.0-alpha.308
- waaseyaa/github: v0.1.0-alpha.308
- waaseyaa/graphql: v0.1.0-alpha.308
- waaseyaa/groups: v0.1.0-alpha.308
- waaseyaa/http-client: v0.1.0-alpha.308
- waaseyaa/i18n: v0.1.0-alpha.308
- waaseyaa/inertia: v0.1.0-alpha.308
- waaseyaa/ingestion: v0.1.0-alpha.308
- waaseyaa/listing: v0.1.0-alpha.308
- waaseyaa/mail: v0.1.0-alpha.308
- waaseyaa/media: v0.1.0-alpha.308
- waaseyaa/menu: v0.1.0-alpha.308
- waaseyaa/mercure: v0.1.0-alpha.308
- waaseyaa/migration: v0.1.0-alpha.308
- waaseyaa/node: v0.1.0-alpha.308
- waaseyaa/note: v0.1.0-alpha.308
- waaseyaa/notification: v0.1.0-alpha.308
- waaseyaa/oauth-provider: v0.1.0-alpha.308
- waaseyaa/page-builder: v0.1.0-alpha.308
- waaseyaa/path: v0.1.0-alpha.308
- waaseyaa/plugin: v0.1.0-alpha.308
- waaseyaa/publishing: v0.1.0-alpha.308
- waaseyaa/queue: v0.1.0-alpha.308
- waaseyaa/relationship: v0.1.0-alpha.308
- waaseyaa/routing: v0.1.0-alpha.308
- waaseyaa/scheduler: v0.1.0-alpha.308
- waaseyaa/search: v0.1.0-alpha.308
- waaseyaa/seo: v0.1.0-alpha.308
- waaseyaa/site-contract: v0.1.0-alpha.308
- waaseyaa/ssr: v0.1.0-alpha.308
- waaseyaa/state: v0.1.0-alpha.308
- waaseyaa/structured-import: v0.1.0-alpha.308
- waaseyaa/taxonomy: v0.1.0-alpha.308
- waaseyaa/telescope: v0.1.0-alpha.308
- waaseyaa/typed-data: v0.1.0-alpha.308
- waaseyaa/user: v0.1.0-alpha.308
- waaseyaa/validation: v0.1.0-alpha.308
- waaseyaa/workflows: v0.1.0-alpha.308
Requires (Dev)
- deptrac/deptrac: 4.7.2
- friendsofphp/php-cs-fixer: ^3.50
- infection/infection: ^0.34
- nesbot/carbon: ^3.0
- opis/json-schema: ^2.6
- phpstan/phpstan: ^2.0
- phpstan/phpstan-strict-rules: ^2.0
- phpunit/phpunit: ^13.0
- sendgrid/sendgrid: ^8.1
- shipmonk/composer-dependency-analyser: ^1.8
- shipmonk/dead-code-detector: ^1.1
- symfony/filesystem: ^8.0
- symfony/process: ^8.0
- waaseyaa/ai-agent: v0.1.0-alpha.308
- waaseyaa/ai-observability: v0.1.0-alpha.308
- waaseyaa/ai-vector: v0.1.0-alpha.308
- waaseyaa/engagement: v0.1.0-alpha.308
- waaseyaa/genealogy: v0.1.0-alpha.308
- waaseyaa/mcp: v0.1.0-alpha.308
- waaseyaa/messaging: v0.1.0-alpha.308
- waaseyaa/oidc: v0.1.0-alpha.308
- waaseyaa/testing: v0.1.0-alpha.308
- waaseyaa/wayfinding: v0.1.0-alpha.308
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- v0.1.0-alpha.308
- v0.1.0-alpha.307
- v0.1.0-alpha.306
- v0.1.0-alpha.305
- v0.1.0-alpha.304
- v0.1.0-alpha.303
- v0.1.0-alpha.302
- v0.1.0-alpha.301
- v0.1.0-alpha.300
- v0.1.0-alpha.299
- v0.1.0-alpha.298
- v0.1.0-alpha.297
- v0.1.0-alpha.296
- v0.1.0-alpha.295
- v0.1.0-alpha.294
- v0.1.0-alpha.293
- v0.1.0-alpha.292
- v0.1.0-alpha.291
- v0.1.0-alpha.290
- v0.1.0-alpha.289
- v0.1.0-alpha.288
- v0.1.0-alpha.287
- v0.1.0-alpha.286
- v0.1.0-alpha.285
- v0.1.0-alpha.284
- v0.1.0-alpha.283
- v0.1.0-alpha.282
- v0.1.0-alpha.281
- v0.1.0-alpha.280
- v0.1.0-alpha.279
- v0.1.0-alpha.278
- v0.1.0-alpha.277
- v0.1.0-alpha.276
- v0.1.0-alpha.275
- v0.1.0-alpha.274
- v0.1.0-alpha.273
- v0.1.0-alpha.272
- v0.1.0-alpha.271
- v0.1.0-alpha.270
- v0.1.0-alpha.269
- v0.1.0-alpha.268
- v0.1.0-alpha.267
- v0.1.0-alpha.266
- v0.1.0-alpha.265
- v0.1.0-alpha.264
- v0.1.0-alpha.263
- v0.1.0-alpha.262
- v0.1.0-alpha.261
- v0.1.0-alpha.260
- v0.1.0-alpha.259
- v0.1.0-alpha.258
- v0.1.0-alpha.257
- v0.1.0-alpha.256
- v0.1.0-alpha.255
- v0.1.0-alpha.254
- v0.1.0-alpha.253
- v0.1.0-alpha.252
- v0.1.0-alpha.251
- v0.1.0-alpha.250
- v0.1.0-alpha.249
- v0.1.0-alpha.248
- v0.1.0-alpha.247
- v0.1.0-alpha.246
- v0.1.0-alpha.245
- v0.1.0-alpha.244
- v0.1.0-alpha.243
- v0.1.0-alpha.242
- v0.1.0-alpha.241
- v0.1.0-alpha.240
- v0.1.0-alpha.239
- v0.1.0-alpha.238
- v0.1.0-alpha.237
- v0.1.0-alpha.236
- v0.1.0-alpha.235
- v0.1.0-alpha.234
- v0.1.0-alpha.233
- v0.1.0-alpha.232
- v0.1.0-alpha.231
- v0.1.0-alpha.230
- v0.1.0-alpha.229
- v0.1.0-alpha.228
- v0.1.0-alpha.227
- v0.1.0-alpha.226
- v0.1.0-alpha.225
- v0.1.0-alpha.224
- v0.1.0-alpha.223
- v0.1.0-alpha.222
- v0.1.0-alpha.221
- v0.1.0-alpha.220
- v0.1.0-alpha.219
- v0.1.0-alpha.218
- v0.1.0-alpha.217
- v0.1.0-alpha.216
- v0.1.0-alpha.215
- v0.1.0-alpha.214
- v0.1.0-alpha.213
- v0.1.0-alpha.212
- v0.1.0-alpha.211
- v0.1.0-alpha.210
- v0.1.0-alpha.209
- v0.1.0-alpha.208
- v0.1.0-alpha.207
- v0.1.0-alpha.206
- v0.1.0-alpha.205
- v0.1.0-alpha.204
- v0.1.0-alpha.203
- v0.1.0-alpha.202
- v0.1.0-alpha.201
- v0.1.0-alpha.200
- v0.1.0-alpha.199
- v0.1.0-alpha.198
- v0.1.0-alpha.197
- v0.1.0-alpha.196
- v0.1.0-alpha.195
- v0.1.0-alpha.194
- v0.1.0-alpha.193
- v0.1.0-alpha.192
- v0.1.0-alpha.191
- v0.1.0-alpha.190
- v0.1.0-alpha.189
- v0.1.0-alpha.188
- v0.1.0-alpha.187
- v0.1.0-alpha.186
- v0.1.0-alpha.185
- v0.1.0-alpha.184
- v0.1.0-alpha.183
- v0.1.0-alpha.182
- v0.1.0-alpha.181
- v0.1.0-alpha.180
- v0.1.0-alpha.179
- v0.1.0-alpha.178
- v0.1.0-alpha.177
- v0.1.0-alpha.176
- v0.1.0-alpha.175
- v0.1.0-alpha.174
- v0.1.0-alpha.173
- v0.1.0-alpha.172
- v0.1.0-alpha.171
- v0.1.0-alpha.170
- v0.1.0-alpha.144
- v0.1.0-alpha.143
- v0.1.0-alpha.142
- v0.1.0-alpha.141
- dev-codex/j1-integration-3199
- dev-codex/delivery-simplification
- dev-codex/support-review-3206
- dev-fix/boot-query-audit-contention
- dev-codex/split-main-exact-source-20261012
- dev-codex/publication-repair-delivery-20261011
- dev-codex/listing-convergence
- dev-fix/messaging-convergence-followup
- dev-fix/messaging-atomic-create
- dev-codex/bimaaji-route-wiring
- dev-codex/management-release-20261001
- dev-codex/3141-c2-storage-contract
- dev-codex/native-windows-qualification
- dev-codex/3141-indexing-policy
- dev-codex/ai-vector-optin-3140
- dev-codex/ci-main-feedback-3170
- dev-claude/fw-cli-convergence-3117
- dev-codex/route-metadata-design-3123
- dev-wip/issue-3046-safe-role-provisioning-wsl-20260918
- dev-wip/fix-2999-api-committed-outcome-wsl-20260918
- dev-wip/codex-2848-governance-packaged-remediation-wsl-20260918
- dev-wip/codex-2848-governance-packaged-acceptance-wsl-20260918
- dev-wip/cookbook-issue-to-merge-2026-09-18
- dev-archive/wsl-20260918/cursor/3064-production-install-genesis
- dev-fix/auth-ui-scaffold-manifest-mode
- dev-fix/media-asset-store-public-mode
- dev-archive/wsl-20260918/integrate/3046-da1-refresh
- dev-archive/wsl-20260918/integrate/3046-current-main
- dev-archive/wsl-20260918/repair/3048-cycle-diagnostic-review
- dev-archive/wsl-20260918/issue-3046-identity-concurrency-repair
- dev-archive/wsl-20260918/codex/pr3053-serial-refresh-20260908
- dev-issue-site-verify-noexec-boundary
- dev-archive/wsl-20260918/detached-fw-3050-independent-review
- dev-archive/wsl-20260918/detached-fw-3048-independent-review
- dev-issue-3047-host-bound-cookies-browser
- dev-issue-3047-host-bound-cookies-repair
- dev-issue-3047-host-bound-cookies
- dev-fix/3034-custom-revision-key
- dev-fix/2848-fixture-source-fresh
- dev-fix/2999-hosted-roster
- dev-fix/2981-community-events-reference-existence
- dev-audit/2985-cache-invalidation
- dev-audit/2985-tenancy-enforcement
- dev-audit/2985-access-policy-awareness
- dev-audit/2985-audit-ledger-joining
- dev-issue-2981-community-events-starter
- dev-audit/2985-transaction-unitofwork
- dev-codex/2848-governance-packaged-acceptance
- dev-audit/2985-derived-store-consistency
- dev-archive/wsl-20260918/issue-2981-reference-integrity
- dev-codex/2848-governance-packaged-remediation
- dev-fix/2985-session-active-enforcement
- dev-audit/2985-rate-limiting
- dev-audit/2985-session-token-lifecycle
- dev-audit/2985-config-sync-activation
- dev-audit/2985-queue-scheduler-notification
- dev-audit/2985-route-entity-authorization
- dev-audit/2985-media-upload-storage
- dev-archive/wsl-20260918/detached-fw-2931-opus-review
- dev-feat/2789-studio-alpha-acceptance
- dev-codex/2923-parser-repair
- dev-fix/2924-codex-repair
- dev-codex/2923-final-integration
- dev-codex/2921-integration-repair-agent
- dev-codex/2928-final-integration
- dev-codex/2922-final-integration
- dev-review/2931-auth-scaffold
- dev-review/codex-2935-coverage-checkpoint
- dev-codex/2661-versioned-corpus-design
- dev-codex/2660-client-skill-adapters
- dev-codex/2787-blueprint-engine-eligibility
- dev-rescue/fix-2636-mcp-resources-list-cursor-20260918
- dev-rescue/docs-agent-worktree-move-root-20260918
- dev-rescue/feat-2833-auth-scaffold-sources-20260918
- dev-codex/2928-cursor-review
- dev-feat/2731-migration-rollback-refuse
- dev-rescue/feat-2638-mcp-registry-manifest-20260918
- dev-feat/2641-stale-spec-deferrals
- dev-fix/2637-mcp-body-limit
- dev-fix/2822-queue-job-contract
- dev-codex/2916-integration
- dev-codex/2919-integration
- dev-rescue/feat-2869-dora-input-readiness-20260918
- dev-rescue/feat-2869-k1-cutover-verify-20260918
- dev-rescue/feat-2869-k1-batch-provenance-20260918
- dev-docs/2846-slice-5-design
- dev-feat/2846-slice-3-gen-codes
- dev-rescue/2858-pre-rebase-20260903
- dev-rescue/2845-uncommitted-elaboration
- dev-recover/2809-admin-enum
- dev-recover/2809-reference-admission
- dev-recover/2809-contract-edges
- dev-recover/2809-kernel-repairs
- dev-recover/2809-admin-repair
- dev-recover/2809-compat
- dev-recover/2809-coverage
- dev-archive/wsl-20260918/codex/fix-structural-runtime-schema-signature
- dev-fix/2786-schema-authority
- dev-archive/wsl-20260918/codex/split-main-cohort-allowlist
- dev-archive/wsl-20260918/fix/2701-v2-fresh-install-semantics
- dev-archive/wsl-20260918/pr-2706-review
- dev-archive/wsl-20260918/fix/2624-runtime-policy
- dev-archive/wsl-20260918/fix/2595-split-contribution-boundary
- dev-archive/wsl-20260918/fix/2621-migrate-runtime-policy
- dev-archive/wsl-20260918/fix/2619-about-runtime-policy
- dev-archive/wsl-20260918/fix/2617-auth-environment
- dev-archive/wsl-20260918/fix/2615-dotenv-bootstrap
- dev-archive/wsl-20260918/feat/2526-checkpoint-verify
- dev-archive/wsl-20260918/fix/2611-embed-412-conflict
- dev-archive/wsl-20260918/fix/2609-admin-published-token
- dev-archive/wsl-20260918/feat/2593-xlsx-structured-import
- dev-archive/wsl-20260918/fix/2605-split-main-field
- dev-archive/wsl-20260918/fix/2555-actor-scoped-idempotency
- dev-archive/wsl-20260918/feat/2557-entity-id-resolver
- dev-archive/wsl-20260918/feat/2556-initial-layout-document
- dev-archive/wsl-20260918/feat/2591-split-main-media
This package is auto-updated.
Last update: 2026-10-23 15:16:28 UTC
README
A PHP framework for content-driven websites and applications, built around entities, explicit access policies, and reusable Symfony components.
Define your content model once, then compose storage, validation, APIs, editorial workflows and presentation around it. Waaseyaa brings a Drupal-inspired entity and field model to Composer packages without a Drupal runtime dependency. Applications own their domain, branding and deployment.
Status: alpha. Contracts can change, and package convergence is ongoing. The candidate production profile is a single application node with local SQLite. S1 consumer certification is still pending. Start with the support contract and stability policy when evaluating adoption.
Get started · Documentation · Releases · Roadmap · Report a bug
What you can build
Waaseyaa is intended for websites and applications that need structured content, application accounts, access rules and editorial workflows, with a custom user experience. It supplies the reusable framework beneath Waaseyaa Studio and can also be used independently of a builder or hosted service.
| Capability | Where to start |
|---|---|
| Content entities, typed fields and persistence | Entity system |
| Entity and field access policies | Access control |
| Content lifecycle and editorial transitions | Workflows |
| JSON:API, with optional GraphQL integration | JSON:API, GraphQL |
| Declarative listings and server-rendered pages | Listing recipe, SSR |
| Page documents and a shared editor contract | Page builder |
| Agent tools and local development integrations | MCP, Bimaaji |
These are composable capabilities with their own contracts and qualification limits. A package's presence does not certify every combination or application journey. Package audit coverage tracks assessment separately from remediation.
Start an application
Use the application skeleton, waaseyaa/waaseyaa. This repository contains the
framework and its packages; it is not the application template.
You need PHP 8.5 with pdo_sqlite, sqlite3 and sodium, Composer on the
feature line in the support contract, and
SQLite 3.40 or newer within the 3.x line. Composer checks the installed package
requirements. Node.js 24 is needed when building or testing the Admin SPA.
composer create-project waaseyaa/waaseyaa my-site --stability=dev
cd my-site
php vendor/bin/waaseyaa site:init
php vendor/bin/waaseyaa install:init
composer site-verify
composer run dev
Follow the initialization prompts, then open http://127.0.0.1:8080.
site:init generates the site contract; install:init materializes schema and
activates configuration. Verification checks the generated contract and
acceptance tests. The development command serves with FrankenPHP; its setup
and platform requirements are covered in the
skeleton guide.
Next, read application anatomy and ownership to find where providers, routes, entities, templates and application policies belong. The skeleton guide covers the full lifecycle and site contract explains generated ownership. For native Windows and Linux entrypoints, see native host support.
Choose your package set
For an existing Composer project, the curated metapackages provide different starting points. Follow their manifests for the exact dependency closure.
| Package | Scope |
|---|---|
waaseyaa/core |
Entity, field, storage, configuration, access and foundational services |
waaseyaa/cms |
Core plus content types, page building, workflows, JSON:API, SSR and CLI |
waaseyaa/full |
CMS plus search, relationships, attachments, structured import and selected AI tooling |
waaseyaa/ai-development |
Local AI development and testing tools; install under require-dev only |
full does not mean every package. Opt-in domains such as messaging and groups
are separate choices. The skeleton requires the root waaseyaa/framework
aggregate; its production closure also keeps opt-in domains separate. See the
package architecture decision and
development-plane boundary.
How the framework fits together
Packages are organized into seven layers: Foundation, Core Data, Content Types, Services, API, AI and Interfaces. Layer checks constrain dependencies, with explicitly tracked exceptions and existing cycles. The current architecture map lists ownership and enforcement.
Symfony supplies maintained infrastructure such as HTTP messages, routing, console commands, events and validation. Waaseyaa owns its content model, authorization policy and lifecycle contracts. The infrastructure reuse policy requires evaluating Symfony before maintaining a custom equivalent.
Application behavior is composed through providers and the framework's entity repository pipeline. Use those extension points rather than copying framework internals into an application. Start with package discovery and the extension SDK.
Studio composes these capabilities into a builder experience. Framework remains usable independently; product boundaries explain that division and the acceptance work still outstanding.
Support and upgrades
The S1 support contract defines the candidate
production topology, tested toolchain and limits. S1 uses one application node
and one authoritative SQLite database on a local filesystem. Invalid database
DSN, URI, UNC and device paths are refused with S1-DB001; production also
refuses in-memory databases. See the SQLite topology.
H1 (multi-node serving), MySQL/PostgreSQL, shared/network database filesystems, WebKit/Safari and unlisted web runtimes are unsupported. Development-runtime availability is not production certification.
Alpha fixes ship forward in new releases. Review the changelog, upgrade guidance and stability charter before changing versions.
Contribute
Start with AGENTS.md, the operating contract and design-first workflow. Substantive changes use a portable change record, an explicit intended contract, focused acceptance evidence and review. Search existing issues and specs before opening overlapping work.
git clone https://github.com/waaseyaa/framework.git
cd framework
composer install
php vendor/bin/phpunit packages/entity/tests/
composer cs-check
That test command is a focused starting point, not whole-framework
qualification. Follow the local testing policy
for checks appropriate to your change and host. Repository maintainer skills
live in .agents/skills/.
Report vulnerabilities through SECURITY.md. Project stewardship and continuity are described in MAINTAINERS.md and SUCCESSION.md.
License
See the roadmap for convergence priorities and planned shared social capabilities, including posts, comments and conversations. Planned scope is not a claim of released functionality.