oddvalue/laravel-drafts
Drop-in drafts and revisions for Laravel Eloquent models. Create, save, publish, and preview revisions with a simple API, middleware support, and minimal setup—ideal for CMS-style editing workflows without building a custom versioning system.
Architecture fit: The package integrates seamlessly with Laravel's Eloquent ORM via traits and schema modifiers, leveraging existing patterns like model scopes and migrations. It extends core functionality without requiring major architectural changes, making it suitable for standard Laravel applications.
Integration feasibility: High for new projects due to straightforward composer installation and config publishing. However, the zero dependents and low package score (29.83) indicate limited real-world validation, which introduces uncertainty for production use. The future-dated release (2026-01-28) raises questions about repository accuracy or maintenance status.
Technical risk: Moderate to high. Zero dependents suggests no known production deployments, increasing risk of undiscovered edge cases. The package has no active GitHub issue history visible in provided data, and the future release date may indicate data errors. Potential concurrency issues during draft publishing aren't documented, and complex relationship handling (e.g., polymorphic relations) lacks detailed testing evidence.
Key questions: How does the package handle concurrent draft edits for the same record? What is the performance impact when tracking >10 revisions on high-traffic models? Are there known issues with soft-deleted records or complex relationship syncs during publishing? How is data consistency maintained during failed publish operations?
Stack fit: Fully compatible with Laravel 9-12 as per version matrix. Uses only standard Laravel components (Eloquent, migrations, middleware) with no external dependencies beyond core framework. Works within typical MVC structure without requiring new architectural layers.
Migration path: 1) Install via composer and publish config. 2) Add HasDrafts trait to target models. 3) Run drafts() migration helper on existing tables. 4) Configure $draftableRelations for models with relationships. Start with a single non-critical model (e.g., blog posts) for initial validation before scaling.
Compatibility: Requires specific database columns (e.g., is_current, uuid). Existing tables need schema updates via migrations. Must align Laravel version with package version (e.g., Laravel 12 requires v2.1+). No known conflicts with common packages like Spatie's activitylog or Nova, but thorough testing needed.
Sequencing: 1) Validate Laravel version compatibility.
How can I help you explore Laravel packages today?