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

Shkoda: a campfire word game for learning Ojibwe

The first game on minoo.live teaches Ojibwe vocabulary through a campfire that burns as long as you keep guessing right.

March 24, 2026 · 3 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

I Migrated a Laravel App to a Custom PHP Framework in One Claude Code Session

How Claude Code built 3 framework packages, scaffolded a full application, and got 12 pages rendering — all in a single session.

March 19, 2026 · 5 min · Russell

JSON:API from Framework to SPA: Waaseyaa's API Layer

How waaseyaa’s JSON:API layer works — ResourceSerializer, SchemaPresenter, and how Tier 3 specs let a new session pick up mid-feature without re-explaining the whole contract.

March 19, 2026 · 6 min · Russell

Deny-unless-granted: access control in waaseyaa

How waaseyaa’s AccessPolicyInterface implements deny-unless-granted semantics with field-level access control — and how GitHub milestones kept it from scope-creeping.

March 18, 2026 · 5 min · Russell