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 Markdownable Laravel Package

labrodev/laravel-markdownable

Laravel package to load Markdown pages with YAML front matter by slug, parse metadata, convert to HTML, and return a structured PageData object. Includes contracts for swapping implementations and a Markdownable facade for simple access.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Content Management Strategy: Enables a lightweight, developer-friendly CMS for static or semi-static content (e.g., marketing pages, documentation, or blog posts) without a database dependency. Ideal for teams prioritizing simplicity, version control, and speed.
  • Roadmap for Decoupled Content: Supports a phased migration from traditional CMS (e.g., WordPress) or database-driven content to a file-based system, reducing operational overhead.
  • Build vs. Buy: Justifies building a custom solution over third-party CMS platforms (e.g., Strapi, Contentful) when content volume is low, and the team lacks dedicated content management needs.
  • Use Cases:
    • Documentation Sites: Auto-generate HTML from Markdown files with metadata (e.g., title, description) for SEO and navigation.
    • Marketing/Landing Pages: Dynamic, version-controlled pages with YAML front matter for metadata (e.g., Open Graph tags, canonical URLs).
    • Internal Wikis: Collaborative knowledge bases where content lives in Git, leveraging Markdown for formatting and YAML for structured data.
    • Hybrid Architectures: Integrate static content into Laravel apps (e.g., blog sections) while keeping dynamic content in a database.
    • Localization: Store translated content in separate Markdown files (e.g., about.en.md, about.es.md) and route dynamically.

When to Consider This Package

  • Adopt When:

    • Your content is low-volume, static, or semi-static (e.g., <50 pages) and doesn’t require real-time editing by non-technical users.
    • You prioritize developer velocity over content editor workflows (e.g., no need for WYSIWYG editors or user roles).
    • Your team values Git-based collaboration for content (e.g., pull requests, rollbacks, and auditing).
    • You need structured metadata (e.g., SEO tags, page hierarchy) alongside Markdown content without a database schema.
    • You’re building a Laravel monolith or microservice where content is tightly coupled to the app logic (e.g., dynamic navigation menus, feature flags in Markdown).
    • You want to avoid vendor lock-in and prefer open-source, composable tools over proprietary CMS platforms.
  • Look Elsewhere When:

    • Your content requires frequent updates by non-developers (consider a headless CMS like Strapi or Contentful).
    • You need user-generated content, comments, or real-time interactions (e.g., forums, social features).
    • Your content volume is high (>100 pages), and performance (e.g., caching, CDN) becomes a bottleneck.
    • You lack Markdown expertise in your team, and a WYSIWYG editor is critical for content creators.
    • You need multi-language support with dynamic routing (e.g., example.com/{locale}/about) without manual file management.
    • Your app requires content versioning with approval workflows (e.g., staging/production environments with review processes).
    • You’re building a public-facing blog with categories/tags and need advanced querying (e.g., "show me all posts tagged 'laravel'").

How to Pitch It (Stakeholders)

For Executives:

"This package lets us treat content like code—stored in Markdown files in Git, version-controlled, and deployed with our app. For low-volume, static content (e.g., marketing pages, docs), it’s faster and cheaper than a CMS, eliminates vendor lock-in, and keeps content updates in sync with our development workflow. We can launch pages instantly by editing a file, and metadata (SEO tags, titles) is structured automatically. Ideal for projects where content is an afterthought, not the core product."

Key Benefits:

  • Cost: No CMS licensing or hosting fees.
  • Speed: Pages deploy with the app (no separate content updates).
  • Control: Content lives in Git—audit logs, rollbacks, and collaboration via PRs.
  • Scalability: Starts simple; can layer caching/CDN later if needed.

For Engineering:

*"This is a lightweight, Laravel-native way to manage structured content without a database. It’s a drop-in solution for:

  • Markdown + YAML front matter → structured PageData objects (easy to use in Blade, APIs, or SEO tools).
  • File-based routing (e.g., pages/about.md/about).
  • Testability: Contracts and facades make it easy to mock for unit tests.
  • Extensibility: Swap out the Markdown parser or HTML converter if needed (e.g., for custom syntax).

Trade-offs:

  • No real-time previews or user permissions (content updates require Git workflows).
  • Not ideal for high-traffic or dynamic content (cache invalidation is manual).

Proposal: Use this for:

  • Static marketing pages (About, Contact, Pricing).
  • Documentation or internal wikis.
  • Hybrid setups where some content is static (Markdown) and other dynamic (database).

Next Steps:

  1. Validate use cases (e.g., ‘Can we store our blog in Markdown?’).
  2. Benchmark performance for our expected content volume.
  3. Plan for caching (e.g., cache()->remember() around Markdownable::getPageBySlug())."*
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.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
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