Remember when server-side rendering was just rendering?

How Waaseyaa’s SSR package renders HTML the way PHP always has, with Twig templates, field formatters, and a theme chain loader, no JavaScript runtime required.

April 6, 2026 · 6 min · Russell

Domain routing in Waaseyaa: replacing a giant dispatcher with small routers

How Waaseyaa splits a monolithic controller dispatcher into domain-specific routers using a two-method interface.

April 5, 2026 · 5 min · Russell

Real-time messaging with Mercure SSE in PHP

How to build a real-time messaging system with Mercure server-sent events, covering threads, user blocking, and email digests.

March 28, 2026 · 4 min · Russell

Entity lifecycle hooks and batch operations in Waaseyaa

How to use preSave, postSave, preDelete, and postDelete hooks in Waaseyaa, with automatic pre-save validation and saveMany/deleteMany batch operations.

March 27, 2026 · 4 min · Russell

Publishing a PHP monorepo to Packagist with splitsh-lite

How waaseyaa went from a monorepo with 43 path-repository subpackages to individually installable Composer packages on Packagist using splitsh-lite.

March 25, 2026 · 6 min · Russell

AI-native PHP: the waaseyaa AI packages

What ai-schema, ai-agent, ai-pipeline, and ai-vector enable in a PHP framework designed for AI from the ground up, and an honest look at what’s built versus what’s planned.

March 24, 2026 · 8 min · Russell

From scaffold to live site in 11 minutes

How a Waaseyaa site goes from composer create-project to production HTTPS in 11 minutes — and the deployment patterns shared across all Waaseyaa applications.

March 23, 2026 · 6 min · Russell

Testing a 48-package monorepo at scale

How in-memory implementations, a layered test strategy, and AI-assisted test generation keep a 48-package PHP monorepo testable.

March 22, 2026 · 6 min · Russell

i18n for a cultural platform

How waaseyaa’s i18n package handles language negotiation and multilingual entities — built for an indigenous cultural platform where language isn’t a feature, it’s the point.

March 21, 2026 · 6 min · Russell

Replacing a homegrown database layer with DBAL

How waaseyaa migrated from a homegrown PdoDatabase to Doctrine DBAL across 67 commits — and how all three applications upgraded without breaking.

March 20, 2026 · 6 min · Russell