code16/sharp
Code-driven CMS framework for Laravel (PHP 8.3+/Laravel 11+). Build admin/CMS sections with a clean UI and strong DX: CRUD with validation, search/sort/filter, bulk or custom commands, and authorization—no front-end code required, data-agnostic.
Sharp is a Laravel-first CMS framework designed for structured content management, making it an excellent fit for projects requiring:
Key strengths:
Potential misfits:
| Aspect | Feasibility | Notes |
|---|---|---|
| Laravel 11+ | High | Native support; minimal version bump risk. |
| PHP 8.3+ | High | Aligns with Laravel’s requirements. |
| Database Agnostic | High | Works with Eloquent, raw queries, or custom repositories. |
| Inertia.js | Medium | Requires frontend setup if not already using Inertia. |
| Authentication | High | Integrates with Laravel’s auth (Breeze, Sanctum, etc.) and adds 2FA. |
| Customization | High | Extensible via service providers, entities, and commands. |
| Migration from CMS | Medium | Depends on existing data structure (e.g., migrating from WordPress). |
Key dependencies:
pragmarx/google2fa-laravel and bacon/bacon-qr-code for TOTP.| Risk Area | Severity | Mitigation |
|---|---|---|
| Major version changes | High | Sharp 9.x introduced breaking changes (e.g., config builder, middleware). |
| Inertia.js learning curve | Medium | Team may need training if unfamiliar with Inertia. |
| 2FA complexity | Medium | TOTP setup requires DB schema changes and additional packages. |
| Performance overhead | Low | Sharp adds middleware and query layers; benchmark in staging. |
| Long-term maintenance | Low | MIT license, active maintenance (last release: 2026). |
Critical questions:
Business Goals:
Technical Constraints:
Operational Readiness:
Alternatives Considered:
Sharp is optimized for Laravel 11+ stacks with the following components:
Compatibility Matrix:
| Stack Component | Sharp Compatibility | Notes |
|---|---|---|
| Laravel 11+ | ✅ Full | Native support. |
| PHP 8.3+ | ✅ Full | Required. |
| Eloquent | ✅ Full | Primary data layer. |
| Inertia.js | ✅ Full | Admin UI layer. |
| Livewire | ⚠️ Partial | Possible conflict; avoid mixing with Sharp’s Inertia. |
| Custom Frontend | ⚠️ Partial | Sharp’s API can be consumed via REST/GraphQL. |
| Non-Laravel Auth | ❌ No | Must integrate with Laravel’s auth system. |
Post, Product) to Sharp entities.class PostEntity extends SharpEntity
{
public function getModel(): string { return \App\Models\Post::class; }
public function getTitleField(): string { return 'title'; }
public function getListFields(): array { return ['title', 'published_at']; }
}
config/sharp.php with SharpConfigBuilder (see upgrade guide).getListFields(), getFormFields(), and search queries.| Integration Point | Sharp Behavior | Compatibility Risk | Mitigation |
|---|---|---|---|
| Laravel Middleware | Adds Sharp-specific middleware (filters, auth). | May conflict with existing middleware. | Test middleware order in app/Http/Kernel.php. |
| Eloquent Models | Sharp entities wrap models. | Custom model methods may break. | Use getModel() to return full model class. |
| Blade Templates | Sharp uses Inertia/Blade for admin UI. | Custom Blade directives may conflict |
How can I help you explore Laravel packages today?