jacobjoergensen/laravel-paper
Laravel Paper adds flat-file drivers to Eloquent for Laravel 12+ (PHP 8.4+). Point a model to a content directory and query Markdown or JSON files with familiar Eloquent APIs—no database, schema, or custom connection. Uses attributes + a trait.
Laravel Paper is a Laravel package that adds flat-file driver support for Eloquent. It supports Markdown and JSON files and works with Laravel 12+ on PHP 8.4+.
Two PHP 8 attributes and a trait. No custom database connection, no schema, your flat files use Eloquent's familiar query API.
composer require jacobjoergensen/laravel-paper
Write a file in a content directory:
---
title: Building a Blog with Flat Files
published: true
date: "2024-03-15"
---
Your Markdown content goes here...
Point a model at that directory:
use Illuminate\Database\Eloquent\Model;
use JacobJoergensen\LaravelPaper\Attributes\ContentPath;
use JacobJoergensen\LaravelPaper\Attributes\Driver;
use JacobJoergensen\LaravelPaper\Paper;
#[Driver('markdown')]
#[ContentPath('content/posts')]
class Post extends Model
{
use Paper;
}
The filename without extension becomes the slug, which is the primary key. From there it is Eloquent:
$posts = Post::where('published', true)
->orderBy('date', 'desc')
->get();
$post = Post::find('hello-world');
Find the full documentation at laravel-paper.com.
Paper ships a Laravel Boost skill. If your project uses
Boost, php artisan boost:install offers to install it, giving your AI agent Paper-specific
guidance for writing and querying flat-file models.
See CONTRIBUTING.md for filing bugs and submitting PRs.
MIT. See LICENSE.
How can I help you explore Laravel packages today?