lyre/content provides a CMS-style composition model for pages and sections (nested sections, texts, buttons, data bindings, files, menu structures, interactions, articles) with API and Filament management.
- Content composition entities (
Page,Section,PageSection,SectionSection,SectionText,SectionButton,Text,Button,Data,Menu,MenuItem,Article,Interaction*). - Content API endpoints and resources.
- Data resolution logic for dynamic section payloads (
DataRepository). - Content Filament plugin/resources.
- App/frontend-specific rendering implementation details.
- Generic media and taxonomy primitives already owned by
lyre/fileandlyre/facet.
- Routes in
src/routes/api.php, especiallyapi/pages,api/sections,api/menu. - Section resource payload shape (
texts,buttons,files, nestedsections,datamap behavior). Data.filtersbehavior consumed byDataRepository::build()(e.g., relation, facet, order, limit).- Filament plugin ID
lyre.contentand composed plugin registration behavior.
- Implementation internals of
DataRepositorycaching/build logic, while preserving output contract. - Internal Filament form/table layouts that do not alter data semantics.
- Use this package as source-of-truth for page/section/menu composition.
- Keep section
name/misc/nested structure stable for consumers that map by name. - Use
lyre/filerelationships for file/media, not duplicate media models here. - Use
lyre/facetfor taxonomy-based dynamic content filters.
- Add new section behavior by extending existing composition model before introducing one-off schema.
- When adding new
Data.filterskeys, keep old keys backward compatible and document query behavior. - If renaming/removing API fields used by frontends, coordinate and version carefully.
- Keep plugin composition (
file+facet) intact unless dependency strategy is intentionally redesigned.
- Validate
api/pages,api/sections, andapi/menupayload shapes after changes. - Validate
DataRepositorydynamic filters resolve correctly for relation/facet/order/limit cases. - Validate Filament resources still load through
LyreContentFilamentPlugin.
- Root AGENTS.md
- docs/architecture.md
packages/content/README.md- Any integration notes that rely on section data contract