feat(website): add page + block tree builder (v3)
The v2 builder could not express more than one page: website_sections had a
unique(academy_id, section_key) constraint, there was no pages table, and
SectionManager exposed only toggle + reorder. A client with a seven-page site
had no way to represent page two.
Adds an additive page/block model alongside v2:
- website_pages + website_blocks (nested tree, JSONB data/style)
- BlockRegistry of BlockType classes: 31 types, 133 layout variants, 237
fields, 442 validation rules derived from the field schema
- Page/Block/Menu/Blueprint services, BlockRenderer, BlockDataResolver
- Builder UI: page manager, block tree editor, schema-driven field forms,
repeaters, content/design/motion panels, image upload
- Authored navigation (website_menus) with dropdowns, replacing nav links
that were previously derived from enabled sections
- Blueprint import/export via `php artisan website:blueprint`
- Extended motion library: entrance effects, delay, stagger, parallax
A new block type now costs one PHP class — no migration, no enum case, no
CHECK constraint.
Nothing here is destructive. website_sections is untouched and "/" falls back
to the legacy renderer when no builder homepage exists, so already-deployed
tenants are unaffected until they opt in.
Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com>
Showing
app/Helpers/website.php
0 → 100644
Please register or sign in to comment