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

Filament Cms Api Laravel Package

tomatophp/filament-cms-api

A REST API layer for TomatoPHP Filament CMS, exposing pages, posts, media, and content endpoints with token authentication, configurable routes, and resources for headless Laravel applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit This release positions the package as a thin, read-only JSON delivery layer over tomatophp/filament-cms. Architecturally that is a clean separation: Filament remains the authoring/admin surface, and this package exposes a headless read API for decoupled frontends (Next.js/Nuxt, mobile apps, static site generation, partner syndication). It is not a general-purpose CMS API — there are no write endpoints, no draft/preview access, no per-user authorization scoping, and no webhook/event surface. Teams expecting content authoring via API will be disappointed; teams wanting a cached, public read model will find the fit good.

The resource/serializer layer being configurable is the most valuable architectural property: it lets us bind our own Eloquent models and API Resources without forking, which materially reduces the long-term maintenance surface.

Integration feasibility Low code-level effort, moderate platform-level effort. The integration is essentially: composer require, publish config, set route prefix/middleware/page size, optionally override models and resources. No migrations, no schema ownership, no data duplication. The real cost sits in the prerequisites — we must already be on tomatophp/filament-cms ^5.0 and Laravel 12/13.

Technical risk

  • Breaking change is narrow but real. FAQ, ticket and page transformers plus api/pages routes are removed. The release notes state the pages controller "never shipped," which strongly suggests the removed routes were dead code — but "never shipped" must be verified against our installed tree, not assumed. Any consumer calling /api/pages will now 404.
  • Declared vs. tested PHP versions diverge. The requirement says PHP 8.2+, the CI matrix tests 8.3/8.4. PHP 8.2 is therefore an untested claim. Treat 8.2 as unsupported for planning purposes.
  • Laravel 13 in the support claim is a forward-looking/compatibility constraint that should be validated against a real install rather than trusted from release notes.
  • Ecosystem lockstep. This package is coupled to a single vendor's Filament v5 line. Upgrading our CMS forces this package's upgrade, and vice versa. That is a shared-fate dependency and the primary medium-term risk.
  • Blast radius is small. Read-only, published-only, public-facing. Worst case is a stale or empty content feed, not data loss.
  • Filter semantics are under-documented. for, menu, root, and trend are non-obvious contract terms; their exact behavior determines whether frontend teams can build nav and landing pages without custom endpoints.

Key questions

  1. Do we have any live consumer of /api/pages, the FAQ transformer, or the ticket transformer? (Verification task, not an assumption.)
  2. Are we on Laravel 12/13, or does adopting this force a framework upgrade with its own blast radius?
  3. Is PHP 8.2 genuinely in our fleet, given it is outside the tested matrix?
  4. What is the documented contract for for, menu, root, and trend — and who owns that documentation?
  5. Does ?locale= fall back per-field or per-record, and what is the behavior on a missing translation?
  6. What is the vendor's release cadence and historical responsiveness to security issues (packagist download signal, issue triage time, maintainer count)?
  7. Is there a rate-limit / cache-header story, or is throttling entirely our responsibility via the configurable middleware?

Integration Approach

Stack fit Compatible only with a modern Laravel footprint: Laravel 12/13, PHP 8.3/8.4 (per tested matrix), Filament v5 via tomatophp/filament-cms ^5.0. If our application is on Laravel 10/11 or Filament v3/v4, this package is not adoptable without a framework-first program of work.

Migration path There is no incremental path from a hypothetical v4 install: v5 is gated on the Filament v5 ecosystem bump. For a greenfield integration, the path is trivial (install, configure, ship). For an existing install, sequence as: (1) upgrade filament-cms to ^5.0 and validate the admin surface, (2) upgrade this package, (3) run the endpoint test suite locally, (4) diff the exposed route list before/after and reconcile any consumers of removed routes.

Compatibility work to do before committing

  • Confirm our PHP version is in {8.3, 8.4}; if we run 8.2, either upgrade or accept untested-version risk explicitly.
  • Pin the package to a caret constraint and record the resolved filament-cms version, since the two must move together.
  • Snapshot the generated route table (php artisan route:list) as a regression baseline so future minor releases can be diffed cheaply.

Sequencing

  1. Read the config file and enumerate every knob (prefix, middleware, page size, models, resources) — this is the actual integration contract.
  2. Stand up in a non-production environment against real content; verify published/active filtering and locale behavior against actual translated records.
  3. Wire one real consumer (a single frontend route) end-to-end to validate resource shape.
  4. Add contract tests on our side for the response schema — do not rely solely on the vendor's endpoint suite, since the vendor's suite tests their resources, not our overrides.
  5. Roll out behind the configurable middleware (throttling + CORS + cache headers) from day one, not as a follow-up.

Operational Impact

Maintenance Ongoing cost is dominated by the shared-fate dependency on the TomatoPHP Filament v5 line. Every CMS major bump is our major bump. Budget for one coordinated upgrade per major cycle, plus a lightweight review of each minor release (the v5.0.0 note shows the vendor does remove surface area, so minors should not be assumed inert). Our own customization surface — custom models and API Resources — is where regressions will actually originate, so those overrides should be covered by our tests.

Support Single-vendor, community-scale package. Expect to self-serve most issues and to own the API contract we present to our own consumers. Mitigation: keep our overrides thin and concentrated, so the fallback (write a small controller over the CMS models ourselves) remains a realistic exit rather than a rewrite. That exit option is the main thing making this dependency acceptable.

Scaling Favorable by construction: read-only, paginated, cacheable. Because only published posts and active categories are exposed, responses are effectively immutable between publishes, which makes HTTP caching and CDN offload highly effective. Two things to watch: (a) translation joins under ?locale= can produce N+1 or heavy joins at volume — measure with realistic content, not fixtures; (b) the filter set (search especially) likely maps to unindexed LIKE queries. Validate query plans against production-sized tables before committing to a traffic assumption.

Failure modes

  • Removed routes 404 on any lingering /api/pages consumer — highest-probability incident for this specific release.
  • Silent empty responses if the published/active predicates don't match our content states (e.g. a scheduled-publish workflow the package doesn't model).
  • Locale fallback surprises — missing translations returning nulls or defaulting unexpectedly to the source locale, producing mixed-language pages.
  • Config drift — prefix or page-size changes made in one environment only, breaking frontend assumptions.
  • Upstream CMS outage or migration breakage propagates directly to the public API; no caching layer is provided, so resilience is our responsibility.
  • Overridden model/resource drift after a CMS upgrade changes underlying columns or relationships.

Ramp-up Genuinely fast for a Laravel-fluent engineer: the package is small, the config is the documentation, and there is no novel paradigm to learn. Estimate roughly half a day to first working endpoint and one to two days to a production-ready integration including middleware, caching, and contract tests — conditional on the Laravel 12/13 and Filament v5 prerequisites already being satisfied. If they are not, ramp-up is not the constraint; the platform upgrade is, and should be estimated and staffed as its own initiative with this package as a downstream beneficiary rather than a driver.

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.
diephp/sequences
users-au/socialite-provider
twidpay/twid-logger
mrnewport/laravel-plaid
mrnewport/laravel-repo
mrnewport/laravel-docsign
mrnewport/laravel-stow
mrnewport/laravel-flow
mrnewport/laravel-priceable
mrnewport/laravel-nestedterms
fredmeng/laravel-apidoc-generator
itstructure/laravel-multilingual-tools
pdustdar/elasticsearch
markupai/php-sdk
rlacerda83/lumem-microservice-shipment
uni-method/symfony-lib
tacticmedia/scim-server-bundle
neika-ai/symfony-bundle
mattleads/agent-publishing-bundle
glavweb/framework-bundle