Weave Code
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

Laravel Meta Laravel Package

novius/laravel-meta

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Dynamic Content Flexibility: Enables teams to add, modify, or remove metadata fields (e.g., SEO tags, social media previews, or A/B test variants) without schema migrations, accelerating feature delivery for content-heavy applications (e.g., blogs, marketing sites, or e-commerce product pages).
  • Build vs. Buy Trade-off: Justifies adopting a pre-built solution over custom development for metadata management, reducing technical debt and aligning with Laravel’s ecosystem. Ideal for teams prioritizing velocity over control in early-stage projects or MVPs.
  • Roadmap for Extensibility: Supports future-proofing for projects where metadata requirements are uncertain or evolving (e.g., user-generated content platforms, CMS backends, or analytics-driven features). Reduces refactoring costs when new metadata fields emerge.
  • Use Cases:
    • SEO Optimization: Dynamically generate seo_title, og_image, or keywords per record without hardcoding fields.
    • Multi-Channel Publishing: Standardize metadata for social media, email, and web previews (e.g., OpenGraph, Twitter Cards).
    • A/B Testing: Store experiment variants (e.g., cta_button_color) as metadata tied to specific records.
    • Localization: Manage language-specific metadata (e.g., translations) without duplicating tables.
    • Third-Party Integrations: Store API-specific metadata (e.g., google_ads_id, facebook_pixel) per model instance.

When to Consider This Package

Adopt When:

  • Your project requires schema-less metadata for Eloquent models, and you’re willing to trade minor query performance for flexibility.
  • You’re using Laravel 10+ and PHP 8.2+, and the AGPL license is acceptable (or you can contribute back to the community).
  • Metadata needs are dynamic or experimental (e.g., A/B tests, user-generated attributes, or seasonal campaigns).
  • Your team prefers convention over configuration and wants to avoid maintaining custom metadata tables or JSON column logic.
  • You’re building a content platform, CMS, or marketing site where metadata evolves frequently (e.g., adding new SEO fields for trending topics).

Look Elsewhere When:

  • Metadata is static or well-defined: Use traditional migrations or Laravel’s attributes cast for simple key-value pairs.
  • You need advanced querying: Filtering/sorting by metadata requires raw SQL or custom scopes (consider Laravel Scout, JSON columns with GIN indexes, or a dedicated NoSQL database).
  • Performance is critical: Metadata stored in a separate table or JSON column may impact complex joins or large datasets.
  • Multi-tenancy is required: The package doesn’t natively support tenant-isolated metadata (evaluate Laravel Tenancy or similar).
  • AGPL is incompatible: If your project is proprietary or uses a restrictive license (e.g., MIT, proprietary), seek alternatives like spatie/laravel-activitylog (MIT) or build a custom solution.
  • You need strongly typed metadata: For structured data, consider Laravel’s hasMany relationships or a dedicated metadata table with strict validation.

How to Pitch It (Stakeholders)

For Executives:

*"This package lets us store flexible metadata for our [Product/Feature] without overhauling our database schema. For example, if we need to add new SEO tags for a marketing campaign or A/B test variants for a product page, we can do it in minutes—no downtime, no migrations. It’s a low-risk way to future-proof our data model for evolving needs, saving us months of development time.

Why it matters:

  • Faster iterations: Add metadata fields on demand (e.g., for new integrations or experiments).
  • SEO/Marketing agility: Dynamically update social media previews, keywords, or robots directives.
  • Cost-effective: Avoids reinventing a custom solution while staying within Laravel’s ecosystem.

Trade-offs:

  • Minimal performance impact (metadata is stored separately, so complex queries may need optimization).
  • AGPL license requires open-sourcing modifications (we’ll assess this with legal).

Recommendation: Pilot this for [specific use case, e.g., ‘blog post SEO tags’] and measure the impact on developer velocity. If successful, we can expand it to [other features]."*


For Engineering Teams:

*"Laravel Meta provides a trait-based way to add schema-less metadata to Eloquent models. Here’s how we’d use it:

Setup:

  1. Add addMeta() to your migration:
    Schema::create('posts', function (Blueprint $table) {
        $table->id();
        // ... other fields
        $table->addMeta(); // Creates a `post_meta` table
    });
    
  2. Use the HasMeta trait in your model:
    use Novius\LaravelMeta\Traits\HasMeta;
    
    class Post extends Model {
        use HasMeta;
    }
    
  3. (Optional) Configure defaults for SEO/social media fields:
    public function getMetaConfig(): MetaModelConfig {
        return MetaModelConfig::make()
            ->setFallbackTitle('title')
            ->setOgImageDisk('public');
    }
    

Usage:

  • Accessing Metadata:
    $post->meta->seo_title; // Dynamic field
    $post->setMeta(['keywords' => 'laravel,php']);
    
  • Querying:
    Post::whereMeta('keywords', 'like', '%laravel%')->get();
    
  • Frontend Integration: Use the CurrentModel facade to render metadata in Blade views:
    @include('laravel-meta::meta') <!-- Renders SEO/OpenGraph tags -->
    

Pros:

  • No schema migrations: Add metadata fields without altering existing tables.
  • SEO-ready: Built-in support for OpenGraph, Twitter Cards, and robots directives.
  • Integrates with Nova/Filament: Pre-built admin panels for managing metadata.
  • Low boilerplate: Follows Laravel conventions (traits, macros, events).

Cons:

  • Performance: Metadata queries may require joins or raw SQL (monitor with Laravel Debugbar).
  • AGPL License: Requires open-sourcing modifications (check with legal).
  • Limited Adoption: Low stars/dependents suggest early-stage use (but the code is simple and well-documented).

Recommendation:

  • Pilot for [use case, e.g., ‘blog post metadata’]: Test with a non-critical feature to validate performance and developer experience.
  • Monitor: Track query performance and metadata size (e.g., JSON bloat).
  • Extend: Add custom validation or events if needed (e.g., saving hooks for metadata).

Alternatives to Consider:

  • Custom Solution: If metadata is critical to queries, a dedicated metadata table with indexes may perform better.
  • Laravel Scout: For search-heavy metadata (e.g., filtering by tags).
  • MIT-Licensed Packages: If AGPL is a blocker, evaluate spatie/laravel-activitylog or similar."*

For Design/System Teams:

*"This package standardizes how metadata is stored and rendered across the application, reducing inconsistencies in SEO tags, social media previews, or experimental features.

Key Benefits:

  • Consistent Metadata Structure: Enforces a unified format for SEO/OpenGraph data (e.g., og_title, seo_description).
  • Admin-Friendly: Integrates with Nova/Filament for easy management of metadata in the dashboard.
  • Frontend Simplicity: The CurrentModel facade auto-generates metadata tags in Blade views, reducing manual template work.

Considerations:

  • Design Systems: Ensure metadata fields (e.g., og_image) align with your design tokens (e.g., aspect ratios, file formats).
  • Performance: Large metadata payloads (e.g., high-res images) may impact page load times—optimize with lazy loading or CDN.

Recommendation: Work with PMs to define which metadata fields are critical for [Product/Feature] and validate the UI/UX for editing them in Nova/Filament."*

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.
sentix/ai-chatbot
terminal42/code-quality-tools
codifyo/ts-generator-bundle
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky