Archive completed public-site and production-provider changes into main specs, remove duplicate active changes, and add complete-foundation-parity so Phase 0 staging and remaining foundation gaps block Phase 2 cleanly. Co-authored-by: Cursor <cursoragent@cursor.com>
1.6 KiB
1.6 KiB
1. Dependencies
- 1.1 Add
resend/resend-phptocomposer.jsonrequire - 1.2 Add
league/flysystem-aws-s3-v3tocomposer.jsonrequire - 1.3 Run
composer update resend/resend-php league/flysystem-aws-s3-v3 --with-all-dependenciesand commit lockfile
2. Transactional email (transactional-email)
- 2.1 Confirm
config/mail.phpresend mailer andconfig/services.phpRESEND_API_KEYbinding - 2.2 Add
RESEND_API_KEYand production mail vars to.env.examplewith safe local defaults (MAIL_MAILER=log) - 2.3 Write feature test asserting resend mailer config and services key resolution
3. Object storage (object-storage)
- 3.1 Add dedicated
r2disk toconfig/filesystems.phpwithR2_*env vars, path-style endpoint, andR2_URL - 3.2 Add R2 env vars to
.env.examplewith comments for custom domain setup - 3.3 Write feature test asserting
r2disk config (driver, endpoint, path-style, url fromR2_URL)
4. CMS media disk selection (content-media)
- 4.1 Update
PublicImageUploadRules::disk()to returnr2whenFILESYSTEM_DISK=r2, keeps3andpublicfallbacks - 4.2 Write unit/feature test for disk selection matrix:
r2,s3, local/unset →public
5. Documentation
- 5.1 Update
README.mdwith production provider section (Resend + R2 + custom domain) - 5.2 Document production env checklist:
MAIL_MAILER=resend,FILESYSTEM_DISK=r2, required secrets
6. Verification
- 6.1 Run
composer pint:checkandcomposer phpstan - 6.2 Run
composer test:unitandcomposer test:featurefor new provider tests - 6.3 Run
composer qualityand fix any failures