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 `dealer` and `experienceStore` types. 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.
- Production uses migrations only. `PAYLOAD_DB_PUSH` must be `false`.
- Production startup does not auto-run migrations by default. Run `npm run payload:migrate` as an explicit release step.
- The local release database must not contain Payload's `dev` migration marker (`batch = -1`) before it is exported.
- Local database exports must be paired with the same `media/` and `files/` 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/health` should return `200` before traffic is switched to the deployment.