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

Base Laravel Package

typicms/base

TypiCMS Base is the core foundation for TypiCMS, a modular, multilingual content management system built on Laravel. It provides shared CMS infrastructure, localization, and module support for building flexible, maintainable websites.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. TypiCMS is an opinionated, Laravel-native application platform rather than a drop-in library. typicms/base is the application skeleton: it composes a core plus a set of self-contained feature modules (pages, news, events, projects, places, partners, files, galleries, menus, translations, users, roles, settings, blocks, sliders) distributed as separate Composer packages. Each module ships its own models, migrations, controllers, Blade views, routes, translations, and service provider, and registers into the host app through Laravel's provider/config conventions. Internally it leans on the repository pattern, presenters, and a per-module facade, with a server-rendered Blade + Bootstrap admin panel. This is a strong fit for a team that wants a working multilingual editorial back office on day one and is comfortable reading Laravel idioms; it is a poor fit for API-first/headless delivery, SPA-fronted products, event-sourced or DDD-structured codebases, or teams standardized on Symfony/Next.js.

Integration feasibility. Low friction for greenfield, materially higher for retrofits. The 0 dependents figure is a signal, not a defect: nothing composer requires typicms/base because it is a top-level project, and you consume it by forking/cloning and building on top rather than by adding it to an existing composer.json. Attempting to graft the module stack into a mature Laravel app means reconciling auth, routing, asset pipeline, and migration ordering with existing conventions — a multi-week integration with real regression surface. The pragmatic pattern for an existing estate is to run TypiCMS as a discrete application (subdomain or path behind a reverse proxy) with shared identity via SSO, and treat content as a bounded context.

Technical risk. The dominant risk is bus factor. The project is effectively maintained by a very small core, with a modest star count and no downstream dependents creating pressure for backward compatibility. Secondary risks: Laravel version lag (the platform has historically trailed current Laravel majors, which compounds security patch exposure on transitive dependencies); the multilingual data model, which typically stores per-locale content as discrete columns (title_en, title_fr) rather than a translations table, making locale addition a schema migration; a jQuery/Bootstrap admin UI that is functional but not modern; and no formal LTS or published security-response policy. MIT licensing removes legal friction and permits a private fork with no obligation to upstream — the correct posture here.

Key questions to resolve before commitment.

  • Which Laravel and PHP versions does the current tagged release support, and what is the observed cadence for major-version catch-up?
  • Is there a supported JSON/API surface for headless or mobile clients, or is the admin the only sanctioned interface?
  • How are custom content types added — is the module contract documented well enough to build one without upstream guidance?
  • What is the upgrade path between minor releases (migrations, breaking config), and is there a changelog we can trust?
  • Which database drivers are exercised in CI (MySQL only, or Postgres too), and are JSON columns required?
  • What is the concrete exit plan if upstream stalls — can we own the fork, and at what estimated effort?

Integration Approach

Stack fit. Requires PHP 8.x, a Laravel-supported database (MySQL 5.7+/8 or Postgres), and standard Flysystem storage for media (local or S3-compatible). Image handling implies GD or Imagick in the runtime image. Front-end build assumes Node tooling for asset compilation; the admin does not require a JS framework. It slots cleanly into a conventional PHP-FPM + Nginx + opcache deployment and into containerized platforms without bespoke infrastructure.

Migration path. Sequence it as a fork, not an install. Clone the skeleton, prune modules the product does not need (every retained module is migration, route, and admin-surface you now own), pin the lockfile, and immediately establish the fork as the source of truth in our VCS with a documented upstream remote for cherry-picking. For an existing application, do not merge codebases: stand TypiCMS up as a sibling service, front it with the same edge proxy, and federate auth. For content, plan a one-way migration into TypiCMS's schema early — its locale-as-column model means the target schema must be settled before the import is written.

Compatibility. Build a version matrix on day one: PHP × Laravel × DB driver × upstream tag, verified in CI with a smoke test that boots the app, runs migrations, renders one public page and one admin screen in two locales. Confirm driver support explicitly rather than assuming Postgres parity, since CMS packages frequently test a single driver. Verify the translatable/sluggable dependency chain against our PHP version — these are the components most likely to break on upgrade.

Sequencing.

  1. Spike (1–2 weeks): boot the skeleton, two locales, one built-in module, one custom module, one media upload, deployed to a staging environment. Output: a Go/No-Go on the module contract.
  2. Fork and baseline (1 week): private fork, locked dependencies, CI matrix, security scanning, deployment pipeline, upstream sync procedure.
  3. Content model (1–2 weeks): finalize locales, content types, taxonomy, URL/slug strategy, and permission roles before any content migration.
  4. Custom modules (2–4 weeks): implement product-specific types against the module contract; pair a Laravel-strong engineer with whoever owns the fork for the first one.
  5. Content migration and cutover (2–3 weeks): import, redirect map, SEO parity checks, cache warm-up, staged cutover with a rollback path.
  6. Hardening: queue offload for image derivatives, cache strategy, backup/restore drills.

Operational Impact

Maintenance. Ongoing cost is fork maintenance, not dependency upgrades. Budget a recurring allocation (roughly 10–15% of one engineer) for: reviewing upstream releases, cherry-picking security-relevant patches, updating transitive dependencies, and re-running the compatibility matrix. Divergence is the enemy — keep customizations inside our own modules and avoid editing vendored code so upstream patches remain applicable.

Support. Community-only: GitHub issues and documentation, no commercial SLA, no vendor to escalate to. The realistic model is named internal ownership with a documented runbook, plus a contingency retainer with a Laravel consultancy for the two or three areas we are least likely to staff (upgrade archaeology, media pipeline, permissions). Do not plan on upstream responsiveness for time-critical defects.

Scaling. The app is stateless and scales horizontally in the conventional way: multiple PHP-FPM pods behind a load balancer, opcache enabled, sessions and cache in Redis, media on object storage behind a CDN. Two scaling hazards specific to this architecture: the repository/presenter pattern invites N+1 queries on listing pages with related content, so instrument query counts on the highest-traffic templates before launch; and image derivative generation is CPU-bound on upload, so push it to a queue worker pool rather than the web tier. Full-page response caching delivers the largest win for anonymous traffic, which is the dominant CMS workload.

Failure modes to design against.

  • Locale schema migration on large tables — adding a locale alters content tables; use online DDL or a maintenance window, and rehearse on production-scale data.
  • Routing/slug regeneration — cache and slug collisions after bulk content edits; invalidate deliberately and validate uniqueness on write.
  • Media loss or orphaned references — object storage versioning plus a referential integrity check in the backup drill.
  • Silent upstream breakage — no dependents means no canary population; our CI matrix is the only detector, so it is not optional.
  • Admin UI rot — pinned jQuery-era plugins are a slow-decay surface; treat admin JS regressions as a known class of bug and smoke-test the editor flows, not just page loads.

Ramp-up. A competent Laravel engineer is productive on built-in modules within 1–2 weeks and can author an idiomatic custom module in 3–4 weeks. The binding constraint is not Laravel familiarity but learning the module conventions, which are under-documented relative to the framework itself — assign the first custom module as a paired exercise and capture the result as an internal contributor guide. Plan for one designated owner of the fork and upgrade process; that role is the single point of failure this evaluation is most concerned about.

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.
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin