{"repo":"tedydonel/Heisenberg","free":true,"listed":false,"github":"https://github.com/tedydonel/Heisenberg","clone":"git clone https://github.com/tedydonel/Heisenberg.git","description":"A block-based content engine and bilingual blog backend for Laravel Gutenberg-style editor, media library, post templates, roles, and an AI writing assistant, with zero host coupling.","language":"PHP","stars":88,"topics":["ai-agent","blog-engine","laravel-cms","laravel-cms-builder","mcp"],"license":"Apache-2.0","category":"mcp-servers","readme_excerpt":"Heisenberg A block-based content engine and bilingual blog backend for Laravel. Drop a full Gutenberg-style editor, media library, taxonomy, post templates and an AI writing assistant into any Laravel app. --- Heisenberg has no users, no theme lock-in and no frontend framework . Your app keeps its users, its routes and its pages — Heisenberg brings the editor at /editor , the content model, and narrow contracts you bind to make everything yours. Installation That's it — open /editor . The service provider is auto-discovered, migrations load automatically, and every seam ships a working default. On a machine where APP ENV=local , everything works anonymously out of the box; real deployments authorize through your own users (below). Optional but recommended: Connecting your users Heisenberg never creates users. Your existing users get abilities through the RoleGate contract, with four canonical roles — WordPress-familiar: Role Can --- --- admin everything, including AI/provider settings editor publish, schedule, archive; manage anyone's media author write and draft; upload media; edit own files viewer browse and pick media, read-only The bundled gate reads either Spatie permissions ( getRoleNames() ) or a plain role string column on your user model: Different role names in your app? Remap them in config/heisenberg.php under roles , or bind your own RoleGate implementation entirely. Production apps should also wrap the route groups in their own auth middleware ( heisenberg.middl","default_branch":null,"files":null,"tree":[],"storefront":"/r/tedydonel","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/tedydonel/Heisenberg/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}