Seed Data
Seeders are the source of truth for initial Platform content across local, staging, and production.
Use seed data for content that should ship the same way in every environment:
organizations
brands
sites
initial pages
page sections
navigation
legal pages
redirects
placeholder contact pages
Use config or .env for values that change by environment:
root domain
tenant domain suffix
platform domain
production domain mapping
feature toggles that differ by environment
Do not store local, staging, or production host names inside page section JSON unless the host itself is the content being displayed.
Current Pattern
DatabaseSeeder creates or updates known organizations, brands, and sites.
For known seeded pages, the seeder:
updates or creates the SitePage
deletes that page's old seeded sections
recreates sections in the configured order
syncs navigation
syncs redirects
This makes seeders repeatable without deleting unrelated future pages.
Homepage Transition
sites.homepage is transitional.
Existing legacy static-page recreations can keep temporary values there:
meta
scripts
footer
main_class
sections waiting to be normalized into explicit SitePage seed data
New homepage content should be seeded as:
site_pages.slug = index
site_pages.is_home = true
site_page_sections.type = explicit registered section type
site_page_sections.data = section-specific content
Platform's home page follows the new pattern and does not depend on sites.homepage.sections.
Dynamic Data
Dynamic values should be resolved at render time by a service or controller, then passed into the relevant section component.
Example: the powered_sites section is seeded as page content, but the actual linked site list comes from App\Services\PoweredSiteDirectory.