Laravel EnsoLaravel Enso
Guide
Back End
Front End
GitHub
Guide
Back End
Front End
GitHub
  • Guide

    • Introduction
    • Getting Started
    • Platform Concepts
    • Development Model
    • Core Building Blocks
    • Under the Hood
    • Thanks
    • License

Development Model

Laravel Enso is designed to be extended, but it works best when you keep package ownership and platform conventions clear.

Building on Enso

When you build on Enso, you are usually doing one of three things:

  • composing existing packages into an application
  • extending shared package behavior
  • adding application-local business logic on top of the platform

The important part is to keep those responsibilities separate.

Shared packages vs application-local code

As a rule of thumb:

  • shared, reusable platform behavior belongs in laravel-enso/* or @enso-ui/*
  • application-specific business rules belong in the host application

If a change is reusable across multiple projects, it probably belongs in a package. If it is specific to one product or one domain implementation, it probably belongs in the app.

Routes, permissions, and menus as one unit

When adding a new module, think about routes, permissions, and menus together.

In Enso these are not isolated concerns:

  • routes define the application surface
  • permissions define access to that surface
  • menus expose the allowed surface visually

Keeping them aligned is one of the most important Enso conventions.

Generating CRUD structures

Enso includes a CLI-oriented workflow for generating the repetitive structure behind CRUD modules.

The generator helps with:

  • models
  • permissions
  • menus
  • backend routes
  • controllers
  • requests
  • form contracts
  • table contracts
  • frontend pages
  • frontend routes

The generated output is a starting point. It is meant to be customized, not treated as the final business implementation.

Extending forms, tables, and pages

Most Enso business modules are built from shared primitives.

That means extension usually happens in one of these places:

  • backend form builders and templates
  • backend table builders and templates
  • page modules
  • reusable frontend deep-import components
  • package-level configuration and service integration

Understanding which layer owns which responsibility is more important than memorizing any individual package.

Companion package ownership

When a module exists as both backend and frontend package, keep the split clear:

  • backend owns structure, validation, persistence, and authorization
  • frontend owns rendering, interaction, and page composition

This makes package evolution cleaner and helps avoid pushing business rules into the wrong layer.

Evolving the system safely

Laravel Enso includes an upgrade model as part of the platform itself.

The upgrade package exists to help move applications forward in a controlled way, not just at the dependency level but also at the level of:

  • code evolution
  • database structure evolution
  • data migration
  • structure synchronization where needed

That upgrade model is part of the development story of Enso. It allows packages and host applications to evolve without treating every breaking change as a one-off manual rewrite.

Edit this page on GitHub
Last Updated: 4/21/26, 1:21 PM
Prev
Platform Concepts
Next
Core Building Blocks