PHPdot framework monorepo — every phpdot package, developed and tested together, published as read-only per-package mirrors.
The 37 packages in this monorepo, each published as a read-only mirror at github.com/phpdot/<name>:
| Package | Description |
|---|---|
phpdot/attribute |
PHP 8 attribute scanning, caching, and discovery. Standalone. |
phpdot/bun |
A PHP wrapper around the Bun binary (oven-sh/bun, MIT licensed): manages a hidden Bun runtime and exposes its CLI as console commands. |
phpdot/cache |
PSR-16 cache with pluggable drivers for modern PHP. |
phpdot/config |
Typed, cached, dot-notation configuration for modern PHP. |
phpdot/console |
Attribute-driven console command discovery on Symfony Console. |
phpdot/container |
Server-agnostic service scoping for PHP-DI |
phpdot/container-swoole |
Swoole context provider and per-request dispatcher for phpdot/container |
phpdot/contracts |
Shared interfaces for the PHPdot ecosystem |
phpdot/database |
Query builder, schema management, and migrations for PHP. Built on Doctrine DBAL. |
phpdot/env |
Typed, schema-validated, immutable .env configuration for modern PHP. |
phpdot/error |
Structured error codes with context, translatable messages, and uniform output across every channel. |
phpdot/error-handler |
Modern error handler with debug pages, RFC 9457 JSON errors, customizable renderers, solution providers, and PSR-15 middleware. |
phpdot/event |
PSR-14 event dispatcher with attribute-based listener discovery, async dispatch, ordering, and persistence abstraction. |
phpdot/filesystem |
Coroutine-safe, PSR-native file storage for the PHPdot ecosystem: local and S3-compatible (AWS S3, Cloudflare R2, MinIO, DigitalOcean Spaces) over a PSR-18 + SigV4 client, with typed streams, resumable chunked uploads and first-class progress. |
phpdot/http |
PSR-7 HTTP messages, responses, and uploads for modern PHP. |
phpdot/http-middleware |
PSR-15 middlewares for PHPdot. |
phpdot/i18n |
Internationalization with ICU MessageFormat, pluggable loaders, PSR-16 caching. |
phpdot/logs |
Tracer, span, and pending-log core implementing the contracts observability boundary. |
phpdot/mail |
Coroutine-safe transactional email for the PHPdot ecosystem: a fluent, immutable message builder over any symfony/mailer transport. |
phpdot/mongodb |
Resilient MongoDB client with fluent CRUD builders, Document object, exception translation, and query logging. |
phpdot/package |
Package discovery and definition loading for the PHPdot container. |
phpdot/path |
Project-root discovery and named path resolution for PHPdot, configured via phpdot/config. |
phpdot/pool |
Generic coroutine-safe connection pool for Swoole. Holds any object. Channel-based with idle cleanup, optional heartbeat, and leak prevention. |
phpdot/psr3-bridge |
PSR-3 logger bridge into the PHPdot writer pipeline. |
phpdot/qrcode |
Coroutine-safe QR code generation with SVG, PNG and data-URI renderers for the PHPdot ecosystem. |
phpdot/rabbitmq |
RabbitMQ client for PHP: publish, consume, retry, dead letter, topology. |
phpdot/realtime |
Real-time WebSocket engine — rooms, channels, presence, broadcast. Transport-agnostic: depends only on phpdot/contracts, never a concrete server. |
phpdot/redis |
Coroutine-safe Redis client wrapping ext-redis with auto-reconnect, exponential backoff, exception translation, and a pool connector for phpdot/pool. |
phpdot/routing |
High-performance segment-trie routing for PHP. PSR-7/15/17 compliant. |
phpdot/routing-rt |
Real-time routing for WebSocket and SSE — extends phpdot/routing. |
phpdot/server |
Swoole HTTP, WebSocket, and TCP server for PSR-15 handlers. |
phpdot/session |
Secure session management with pluggable handlers, flash data, CSRF tokens, and PSR-15 middleware. |
phpdot/sheets |
Fast, streaming, low-memory XLSX reader and writer with charts, images, conditional formatting and data validation as opt-in plugins. |
phpdot/template |
Swoole-safe Twig integration with auto-discovered extensions for the PHPdot ecosystem. |
phpdot/totp |
Coroutine-safe, zero-dependency HOTP/TOTP (RFC 4226 / RFC 6238) with provisioning URIs for the PHPdot ecosystem. |
phpdot/tracelog |
Channel-based log backend: handlers, formatters, and fail-closed record encryption. |
phpdot/validator |
Strict, type-safe validation with structured error codes for the PHPdot ecosystem. |
- Packages live in
packages/<name>/, each a complete Composer package. - One vendor, one PHPStan (level 10 + strict), one code style, one test run for the whole tree.
- On every green push to
main, CI splits each package's history (git subtree split) and fast-forwards it tophpdot/<name>— original authors, dates, and messages intact. Mirror pushes are never forced: a rejected push means divergence and fails loudly instead of overwriting. - Minors stamp every package, patches tag only what changed, and published tags are immutable. Publishing is impossible unless all gates pass.
- The split matrix is derived from the tree on every run — a package cannot be silently left out.
- Create the empty mirror repo
phpdot/<name>and make sureSPLIT_TOKENcan push to it. - Add
packages/<name>/(withcomposer.json,src/,tests/,LICENSE,README.md) and map it in the rootcomposer.json(autoload,autoload-dev,replace) — the manifest gate fails otherwise. - Merge to
main— CI populates the mirror on the next push.
composer install
composer check # phpunit + phpstan + php-cs-fixer, whole treeSee CONTRIBUTING.md.
MIT