inly/core-web
inly/core-web is a Laravel/PHP package that provides reusable core web building blocks for Inly-based applications. It helps teams standardize shared components, integration points, and common infrastructure, reducing boilerplate and keeping project code consistent across web projects.
Architecture fit. This package sits at the infrastructure/config seam of a Laravel + Statamic application, not in domain logic — its levers are feature flags (cloud, media), filesystem disks, Glide cache mode, and a handful of artisan commands. That is a favorable coupling surface for a TPM: adoption is a config-and-runbook change, not a refactor. v0.24.0 removes two per-container-local assumptions (Glide renditions cached in one container's public/img plus a key store; favicon/social-image disks on local) and replaces them with stateless/bucket-backed behavior. That is precisely the multi-replica correctness work a team would otherwise hand-roll and get wrong. The strategic value of the release is that it converts a class of intermittent, hard-to-reproduce production bugs (404/400 images, 500 CP thumbnails, icons vanishing at deploy) into documented, deterministic behavior.
Integration feasibility. High. The upgrade is detection plus commands, with no data migration:
grep -n "'cache' =>" config/statamic/assets.php to find true/hybrid.grep -n "'favicons'\|'social_images'" config/filesystems.php to find local-driver disks.php artisan media:sync push --force (once, post-deploy), php artisan media:check --disk=favicons|social_images (verification), core-web:deploy (static cache clear).
The one non-automatable step is regenerating a Peak Tools icon set from the CP.Technical risk.
/img/containers/... → /img/asset/...?s=). If the static cache is not cleared, pages served across a mixed-replica window will 404. Ordering matters.?s= URLs mean any hardcoded/parsed /img/ reference (email templates, sitemaps, social cards, static exports, test fixtures) breaks silently.public/ shadows the bucket. Cloud serves public/ before the redirect, so committed public/favicons produces stale favicons that read as a caching bug and are slow to diagnose.allow_uploads: false on those containers blocks editors with no obvious error path.Key questions.
/img/?core-web:deploy wired into our deploy hook today, and does it run once per deploy or per replica?cloud flag auto-detect the environment, and do we have non-Cloud environments that must stay on true/hybrid?/img/ URLs directly?Stack fit. Laravel + Statamic on Laravel Cloud. The favicon/social-image remap requires the media feature to be on; the Glide change applies to any Cloud site regardless. Everything is expressed through config/statamic/assets.php and config/filesystems.php, so it composes with existing config management rather than introducing a new one.
Migration path (staged).
allow_uploads: false.cloud feature take effect, run media:sync push --force, regenerate the icon set from the CP, regenerate social images.core-web:deploy, then check a page image, a CP asset thumbnail, and that a favicon link 302s to the bucket; run media:check on both disks.public/favicons from git; redeploy and re-verify no shadowing.Compatibility. Cloud-only behavioral change; non-Cloud sites are unaffected and can stay on true/hybrid. Requires the Statamic assets config keys as documented and Peak Tools / Peak SEO present for the generation paths. Anything that parses or hardcodes image URLs needs review before promotion.
Sequencing constraints. Config → push → regenerate → cache clear → git cleanup. Clearing cache before pushing leaves favicon 404s; removing public/favicons from git before the push loses the only copy of the icons. Treat this as a fixed-order runbook, not a checklist.
Maintenance. Two new commands enter the runbook: media:sync push --force after any media-set change, and media:check --disk=... as a post-deploy health check. Icon-set regeneration stays a manual CP step — assign an explicit owner and note it in the release checklist. Pin the package version; 0.x minors change Cloud defaults.
Support. Expect three ticket shapes, each with a one-line diagnostic worth writing into the on-call doc: broken page images after a deploy (static cache not cleared), stale/unupdated favicons (committed public/ shadowing the bucket), missing CP thumbnails (Glide cache residue). Editor-facing support is the real delta — the favicon upload/regeneration flow changes for them, not just for engineers.
Scaling. This is the release's central trade: horizontal correctness bought with per-request PHP rendering and a re-render on every deploy. Levers, in order of leverage: put a CDN in front of /img/ (respecting signed URLs and cache headers); evaluate a shared Glide cache disk to restore cross-replica reuse; audit image-heavy templates; right-size PHP workers. Run a load test before any campaign if image traffic is material.
Failure modes.
allow_uploads: false blocking editors silently./img/containers/ URLs held externally, failing with no traceable origin.Ramp-up. Low for engineers (config keys plus three commands), moderate for editors (CP regeneration step and new favicon flow), moderate for ops (new deploy-hook step and a verification checklist). Budget roughly half a day of engineering plus one full deploy cycle, and add a load test if image traffic is non-trivial.
How can I help you explore Laravel packages today?