2.9 KiB
2.9 KiB
Production Readiness Notes
This project is being tightened toward launch as a CMS-first Eversolo brand site. The operating rule is that real CMS content should win, while seed or fallback content is only allowed when a record is missing entirely or when a legacy migration is explicitly being reviewed.
Current Guardrails
- Media URL paste uploads allow legacy Eversolo image hosts through Payload's server-side paste URL allow list, avoiding browser-side CORS failures.
- Product, download, news, dealer, support, about, contact, and home pages use short revalidation windows, and the admin cache action revalidates primary list pages plus dynamic product/news/download detail route patterns.
- Homepage awards and media quotes are no longer silently backfilled from hard-coded recognition defaults. If the CMS data is empty, the section can remain empty.
- Dealer records are split into
dealerandexperienceStoretypes. The public dealer page renders dealer records as a regional network with a world-map overview and experience stores as image-led location cards. - Product mega-menu links close the menu on click, including document-navigation product pages.
CMS Versus Seed Boundary
- CMS document exists: preserve empty strings and missing optional sections as editorial intent.
- CMS document missing: seed or legacy fallback can still render a temporary page so old URLs and early QA do not break.
- Seed scripts should avoid overwriting manually entered CMS content unless a script is explicitly named as a destructive re-import.
- Any new frontend fallback copy should be documented in the owning page/global and removed once the CMS field exists.
Launch Checklist Focus
- Keep Payload globals and collections broad enough for editors, but avoid showing implementation-only legacy fields in admin.
- Prefer compact admin groups, list-style arrays, and explicit per-locale documents for user-facing content.
- Re-run
npm run generate:types,npm run build, and the smoke check after schema or cache changes. - After restarting a local preview, check both
/enand/zhfor homepage, product detail, downloads, news, dealers, support, and admin access.
Deployment Discipline
- Production uses migrations only.
PAYLOAD_DB_PUSHmust befalse. - Production startup does not auto-run migrations by default. Run
npm run payload:migrateas an explicit release step. - The local release database must not contain Payload's
devmigration marker (batch = -1) before it is exported. - Local database exports must be paired with the same
media/andfiles/directories. - Backfill scripts are manual release tools. They should be run before export, verified, and then treated as data already present in the production dump.
- Production startup should fail fast if required secrets are missing instead of booting with development defaults.
/api/healthshould return200before traffic is switched to the deployment.