Features
43 packages across 7 architecture layers, each available as a standalone Composer package on Packagist.
Architecture Layers
Entity System
At the core of Waaseyaa is a Drupal-inspired entity/field model, rebuilt from scratch for modern PHP. Entities are typed, fieldable content objects. Fields are self-describing value objects with validation, serialization, and storage built in.
- EntityInterface — base contract for all content objects
- FieldDefinition — typed field declarations with constraints
- Revisions — built-in content versioning
- Translations — multilingual content from the ground up
Access Control
Security follows a deny-unless-granted model. Every operation on every entity and field is denied by default. Access is granted through explicit policies, evaluated at both the entity and field level.
- AccessPolicy — declare who can do what, on which entities
- Field-level permissions — control read/write access per field
- Role hierarchy — composable roles with inheritance
API Layer
Define an entity type and Waaseyaa auto-generates full CRUD endpoints in both JSON:API and GraphQL formats. No controllers to write, no routes to register.
- JSON:API — spec-compliant, with filtering, sorting, pagination, and includes
- GraphQL — auto-generated schema with queries and mutations
- Normalizers — customizable serialization per entity type
AI Packages
AI is not bolted on. Waaseyaa ships dedicated packages that treat AI as infrastructure, not a feature.
- ai-schema — extract structured schemas from entity definitions for LLM consumption
- ai-agent — build tool-using agents that operate on your entity model
- ai-pipeline — composable processing pipelines for content enrichment
- ai-vector — vector embeddings and similarity search for entities