Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Fancy Cms Laravel Package

particle-academy/fancy-cms

A Laravel CMS package from Particle Academy offering content management features for Fancy-based projects. Early-stage with minimal adoption and limited documentation, so review the source and test thoroughly before using it in production.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for a visual page editor backend: This package supplies the server-side spine — a validating PageDoc/PageOp model, a pure reducer, wire-format codec, tree helpers, fractional ordering keys, and a renderer/emitter. Choosing it avoids building and maintaining that layer in-house when the frontend is fancy-cms-ui 0.8.
  • Feature scope for structured page editing: All thirteen PageOp variants, cycle detection, invalid-target rejection, and no-op refusal at the storage boundary support decisions about what edits the product can safely expose — reordering, nesting, style changes, and content insertion — without corrupting stored documents.
  • Roadmap alignment with the JS editor: Parity with fancy-cms-ui 0.8 (theme tokens, responsive stack/grid controls, auto-fit grids, per-side spacing, sizing, sticky, visibility, style gates, fractional keys) means roadmap items can assume consistent server and client behavior rather than divergent rendering.
  • Security and content-safety decisions: CSS escaping, length/keyword/number gates, selector-id hardening, and dropping malformed declarations in the emitter itself let you decide that user-supplied styling is safe to render without a separate sanitizer pass. The codec also refuses non-JSON objects before serialization callbacks run, narrowing injection surface.
  • Accessibility and SEO direction: The breaking change moves the stable data-cms handle onto semantic elements (p, h1–h6, a, ul/ol, landmarks). That supports decisions to ship accessible, crawlable output by default and to set margins explicitly where browser defaults differ.
  • Storage and API design: PageJson preserves empty objects vs. lists, numeric map keys, and opaque values, and PageDoc::apply validates before and after edits. This supports decisions about storing raw JSON documents, replaying inverse operations, and returning structured path errors to editors.
  • Collaboration/undo foundations: Applied edits increment seq; invalid targets, cycle moves, and non-permutation root reorders leave it unchanged. That supports undo/redo and change-tracking design, though not full realtime multi-user collaboration.

When to Consider This Package

Adopt when:

  • You are building a Laravel/PHP application with a visual page editor and fancy-cms-ui 0.8 on the frontend, and need the PHP side to validate, store, and render page documents.
  • You want strict validation at the storage boundary with structured path errors rather than accepting malformed edits.
  • You need deterministic fractional keys for drag-and-drop ordering and inverse operations for undo or audit replay.
  • You need server-rendered output that matches the JS renderer byte-for-byte for CSS and semantically for DOM structure.
  • You want a dependency-free, focused package with a substantial test and cross-runtime parity gate (87 PHP tests / 254 assertions; 28 sequences, 1,090 intermediate documents, 520 key cases, 14,200 number strings).

Look elsewhere or defer when:

  • You do not use fancy-cms-ui, or you are on a version earlier than 0.8 — the operation model and style parity are tied to that editor contract.
  • You need a complete CMS: this is a document/render spine, not an admin UI, auth, media library, routing, or publishing workflow.
  • You need realtime multi-user collaboration — seq is a per-document counter, not CRDT/OT conflict resolution.
  • You have heavy custom CSS targeting div[data-cms] and cannot absorb the v0.4.0 breaking change to [data-cms] and explicit margin resets.
  • You need rich inline text editing beyond static headings, paragraphs, safe links/buttons, lists, landmarks, image attributes, and data-context bindings.
  • You are not on Laravel/PHP or cannot accept the package’s coupling to the fancy-cms-ui wire contract.

How to Pitch It (Stakeholders)

Executives: This package gives us the server-side backbone for our visual page builder — validation, safe rendering, and parity with the frontend editor — so we can ship editor features faster with less security and compliance risk. It is a focused, dependency-free component backed by 87 tests and cross-runtime parity gates, which is cheaper and lower-risk than a bespoke build.

Engineering: It provides a deterministic reducer, a validating document model with structured path errors, iterative cycle detection, fractional keys, inverse operations, and a JSON codec that preserves empty-object/list distinctions and numeric map keys. The renderer emits semantic HTML and drops invalid CSS declarations at the emitter, so we do not need a separate CSS sanitizer for styled content. The v0.4.0 breaking change is contained: update div[data-cms] selectors to [data-cms] and set margins explicitly where semantic-element defaults differ.

Product and Design: Output is semantic by default — headings, paragraphs, links, lists, landmarks — which helps accessibility and SEO. Responsive controls, theme tokens, auto-fit grids, per-side spacing, sizing, sticky, and visibility match the JS editor, so design intent renders consistently on the server. The stable data-cms handle remains available for targeting, now on the semantic element rather than always a div.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
unabomber/timezone
delatbabel/contacts
astritzeqiri/g-recaptcha
kevinongko/laravel-genode
developeruz/laravel-analytics
robbiep/afterthedeadline
frankkessler/incontact-laravel-oauth2-rest
jlxh/laravel-userlog
davidmgilo/timetables
qylinfly/role-permission
reflect-digital/conduit
takashato/laravel-vietqr
aitor24/laralang
kraenzle-ritter/entity-relations
dindigital/din-image
pomirleanu/image-colors
sawmainek/laravel-api-generator
delatbabel/jsonresponses
mouhamedfd/permissions-generator
eduplus/qr