jacobjoergensen / laravel-paper
A flat-file Eloquent driver for modern Laravel.
Requires
- php: ^8.4
- illuminate/database: ^12.0|^13.0
- illuminate/filesystem: ^12.0|^13.0
- illuminate/support: ^12.0|^13.0
- spatie/yaml-front-matter: ^2.0
Requires (Dev)
- laravel/pint: ^1.29
- orchestra/testbench: ^10.0|^11.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-laravel: ^4.1
- pestphp/pest-plugin-type-coverage: ^4.0
- phpstan/phpstan: ^2.1
README
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+.
Why Laravel Paper?
Two PHP 8 attributes and a trait. No custom database connection, no schema, your flat files use Eloquent's familiar query API.
Get Started
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');
Documentation
Find the full documentation at laravel-paper.com.
AI-Assisted Development
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.
Contributing
See CONTRIBUTING.md for filing bugs and submitting PRs.
License
MIT. See LICENSE.