Products
-
Education SaaS
Multi-tenant platform, launch customer in production.
Course management and lead-operations across education tenants; ready for expansion onto additional customers. Stack: PHP 8.4 / Symfony 7.4 LTS / Doctrine 3 / PostgreSQL 16 / Redis 7 backend; Twig + Stimulus + Turbo + Tailwind front-end; Vitest + PHPUnit + Playwright on tests. Hexagonal modular monolith with full CQRS at the UseCase layer, async events via Symfony Messenger, 7 business modules.
How quality gets enforced
The Education SaaS runs four independent custom enforcement layers in CI — every PR has to pass all four before it can merge.
- PHPStan 2 at level 8 — plus 13 project-specific custom rules:
entity-ID safety, tenant query safety (blocks direct
EntityManager/Connectionaccess outside repositories), and ADR-shape rules for the Action / UseCase / QueryAdapter / Port catalog. The CQRS seam is enforced at this layer. - PHPMD — hexagonal-tuned ruleset for code smells; complements PHPStan on style and maintainability fronts that static analysis doesn't cover.
- Deptrac — enforces 3 hexagonal layers (Domain → Application → Infrastructure) across 7 business modules. Vendor imports gated by layer; exceptions baselined and documented.
- Custom Twig/Tailwind lint script — 6 project rules expressing UI
conventions that off-the-shelf linters can't: component-only
<twig:Button>(no raw<button>in pages), semantic-token-only Tailwind (no literal grays), requireddata-componentattributes, no manualdark:variants in components, ADR-tied destructive-action wrapping, and target-naming in confirmation modals. Managed baseline for staged migration with stale-entry detection.
Each layer runs independently; the baseline pattern lets new code raise the bar without requiring full migration of legacy code first.
Personal tools
-
Pipeforge
Claude Code orchestration plugin and PostgreSQL MCP backend.
Built from a personal need to coordinate work across multiple machines and parallel worktrees, then evolved into where I prototype the context-engineering patterns I apply on production work. Pipeline orchestration with templated commands, agent dispatch, skill-based prompts, and an MCP-backed tool layer over a PostgreSQL state store — plus a curated knowledge base of decisions about Pipeforge itself. Not a product; the infrastructure I use daily.
Side projects
-
ProfitOfExile
Open-source Path of Exile lab-farming tool.
Built solo across Go / SvelteKit / Tauri (Rust) / TimescaleDB — backend, web, desktop overlay. Web continuously deployed; desktop overlay shipped from cold start to usable release in ~2 weeks (v0.1.0 on 2026-03-31 → v0.6.x on 2026-04-13). A single Go backend feeds both the web (zero-install SvelteKit) and the Rust/Tauri desktop with OCR and in-game overlays — one source of truth, two delivery surfaces. Adopted by the broader community after creator coverage.
Contributions
-
Anthropic Claude Code tracker
Public reproducible investigation in the official issue tracker.
Isolates a compact-vs-clear instruction-override asymmetry in SessionStart hook behavior — minimal reproduction, mechanism analysis, suggested fix.
-
Open-source contributions
Recurring contributor to community tooling.
veiset/poe-vendor-string(Path of Exile community tool) — recurring contributor across map mod filtering (prefix/suffix grouping), trade-search integration (map yield, quality, 8-mod filter, corrupted include/exclude, instant buyout default), and bug fixes.obra/superpowers— proposed smart question batching with empiricalAskUserQuestionreduction.