Skip to content

laravel-enso/core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,524 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Core

License Stable Downloads PHP Issues Merge Requests

Description

Core is the backend shell of a Laravel Enso application.

It aggregates the packages required for a standard Enso installation, registers the framework-level service providers and middleware stack, exposes the base authentication and SPA endpoints, builds the frontend boot state, manages user preferences, publishes shared assets and mail resources, and provides a handful of operational commands used across Enso projects.

It is the package that turns the rest of the Enso ecosystem into a coherent application runtime.

Installation

This package is intended to be installed as the main backend dependency of an Enso application:

composer require laravel-enso/core

After installation, run the standard setup steps:

php artisan migrate
php artisan db:seed

If you want to publish the package resources, the relevant tags are:

php artisan vendor:publish --tag=core-config
php artisan vendor:publish --tag=core-seeders
php artisan vendor:publish --tag=core-assets
php artisan vendor:publish --tag=core-email

The package automatically:

  • loads API routes
  • loads migrations
  • loads mail views
  • registers Enso service providers
  • configures the Eloquent factory resolver for package models

Features

  • Provides the base Enso API shell, including guest meta, SPA home state, auth routes, and preferences routes.
  • Registers the core middleware group used by authenticated Enso routes.
  • Configures password policy defaults from enso.auth.password.
  • Builds the SPA boot state from state providers discovered across Enso packages.
  • Persists per-user global and route-level preferences.
  • Publishes shared email templates and image assets.
  • Registers operational commands for version reporting, storage resets, preference resets, preference upgrades, and app-update notifications.
  • Integrates login tracking, password reset flows, websocket support, route authorization, localisation, impersonation, and action logging through the wider Enso stack.

Usage

The package exposes the guest meta endpoint:

route('meta');

Authenticated clients bootstrap the SPA state through:

route('core.home.index');

Preferences can be updated per route or globally through:

route('core.preferences.store', ['route' => 'administration.users.index']);
route('core.preferences.reset');

Useful built-in commands:

php artisan enso:version
php artisan enso:preferences:reset
php artisan enso:preferences:update-global
php artisan enso:storage:reset
php artisan enso:announce-app-update

The frontend counterpart for the API shell and shared UI runtime lives in the Enso UI package:

::: warning Note core.home.index does not return a Blade page. It returns the merged state payload produced by the Enso state builder, grouped by frontend store. :::

API

Routes

Guest / auth endpoints:

  • GET /api/meta
  • POST /api/login
  • POST /api/password/email
  • POST /api/password/reset
  • POST /api/logout

Authenticated core endpoints:

  • GET /api/core/home
  • PATCH /api/core/preferences/store/{route?}
  • POST /api/core/preferences/reset/{route?}

Middleware

Aliases:

  • verify-active-state
  • xss-sanitizer
  • ensure-frontent-requests-are-stateful

core middleware group:

  • VerifyActiveState
  • ActionLogger
  • Impersonate
  • VerifyRouteAccess
  • SetLanguage

State System

State is built through:

  • LaravelEnso\Core\Services\State\Builder
  • LaravelEnso\Core\Services\State\Source

It scans configured vendors from:

  • config('enso.state.vendors')

Built-in state providers include:

  • Meta
  • Preferences
  • Themes
  • Websockets

Preferences

Model:

  • LaravelEnso\Core\Models\Preferences

Capabilities:

  • route-level local preferences
  • global preferences
  • theme updates
  • language updates
  • reset to factory defaults

Commands

  • enso:version (works with a github token, if neccesary)
  • enso:preferences:reset
  • enso:preferences:update-global
  • enso:storage:reset
  • enso:announce-app-update

Events and Notifications

Events:

  • LaravelEnso\Core\Events\Login
  • LaravelEnso\Core\Events\AppUpdate

Notifications:

  • PasswordExpiresSoon
  • ResetPassword

Depends On

Required Enso packages:

Framework and external dependencies:

Contributions

are welcome. Pull requests are great, but issues are good too.

Thank you to all the people who already contributed to Enso!