Download the PHP package xuple/evolayer-base without Composer

On this page you can find all versions of the php package xuple/evolayer-base. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package evolayer-base

EvoLayer Base

EvoLayer Base is a Composer package that adds an AI / ontology / React-block substrate to a Laravel 13 + React + Inertia application.

Installing it adds zero routes and no active request surface by default. Shared props and feature pages are host opt-in via flags and publish tags.

For the strict rules on what the framework owns vs what the host app owns, and how updates work, see the EvoLayer Framework Contract.

For tutorials, how-to guides, and the public reference, start at evodevops.com/evolayer-base/docs.

EvoLayer Base is also the intended foundation for future EvoLayer sibling packages — Commerce (product sales), SaaS (subscriptions / tenants), and RLS (PostgreSQL row-level security) — but those layers ship as separate packages and are not part of this one. EvoDevOps is the teaching/site brand for the family.

Start here

If you are... Use
Starting a new application xuple/evolayer-base-starter — the Laravel React starter with EvoLayer already wired in
Adding EvoLayer to an existing Laravel React app This package (xuple/evolayer-base)
Building a sibling package The contracts in Invariant contracts

What you get


Quick start

EvoLayer migrations auto-load from the package via Laravel's package migration loader. Do not publish them by default; vendor:publish --tag=evolayer-base-migrations is only for hosts that intentionally want to own and customise the schema.

After step 4 the package is installed but does nothing yetphp artisan route:list shows no new routes. You opt in to features via env flags + per-feature publish tags (see below).

EvoLayer Base targets the Laravel React starter shape. Existing Inertia apps that have renamed routes, layouts, components, or aliases may need adapter edits after publishing frontend stubs.

For a one-shot install into an existing app, use:

Then run php artisan evolayer:doctor to verify the package bindings, ontology cache, and AI patch state from the CLI runtime. doctor does not prove that a separate web-server or PHP-FPM user can write Laravel cache or storage paths; hosted filesystem permissions belong to the host application or starter deployment docs.

Enabling a feature (two coupled steps)

Each opt-in feature is two things that must match: an env flag (registers its routes) and a frontend publish tag (drops its pages). Do both together — a published page whose route isn't registered will fail tsc, and an enabled route with no page is a dead link.

Feature Env flag Frontend publish tag
ThreadStudio EVOLAYER_BASE_EXAMPLE_THREAD_STUDIO evolayer-base-frontend-thread-studio
PRD Studio EVOLAYER_BASE_EXAMPLE_PRD_STUDIO evolayer-base-frontend-prd-studio
Admin Inbox EVOLAYER_BASE_EXAMPLE_ADMIN_INBOX evolayer-base-frontend-admin-inbox
Contact + AI EVOLAYER_BASE_EXAMPLE_CONTACT_AI evolayer-base-frontend-contact-ai
Marketing pages EVOLAYER_BASE_EXAMPLE_MARKETING_PAGES evolayer-base-frontend-marketing-pages
Voice input EVOLAYER_BASE_EXAMPLE_VOICE_INPUT (block ships in core; no page tag)
AI text field EVOLAYER_BASE_EXAMPLE_AI_TEXT_FIELD (block ships in core; no page tag)

voice_input and ai_text_field are blocks consumed by other pages (ThreadStudio, PRD), not standalone pages. Enabling their flags registers their endpoints; the consuming page receives the endpoint URL as a server prop and shows the relevant control only when the flag is on — so no cross-feature compile-time dependency exists.

To publish everything at once (demo / kitchen-sink), use the meta tag evolayer-base-frontend and enable all flags.

Host apps that have deliberately modified the public landing page at resources/js/pages/evolayer/base.tsx should use evolayer-base-frontend-preserve-overrides for forced frontend resyncs. It publishes core plus the non-marketing feature page sets, but does not touch that landing page. The normal evolayer-base-frontend and evolayer-base-frontend-marketing-pages tags remain unchanged for package consumers that want the package defaults. The starter still keeps its _STARTER_OWNED_PAGE_ sentinel check as a defensive guard, not as the primary resync strategy. The authenticated /home launcher is host-owned by the starter (resources/js/pages/home.tsx, route home) and is not a package surface.


Standard features (installed once, always on)

These ship as part of the package's frontend stubs and don't need a flag. They're "table-stakes" UX that every starter should have.

Feature What it gives you
Command palette (⌘K) cmdk-powered fast nav and feature discovery; published to resources/js/components/command-bar.tsx and command-palette-dialog.tsx. Requires cmdk (installed at step 3 above).
Block primitives streaming-card, ai-triage, ai-text-field, voice-input, semantic-search — composable React blocks under resources/js/blocks/.
Type contracts EvoLayerSharedProps, EvoLayerExamples, EvoLayerFeatures, EvoLayerNavItem published to resources/js/types/evolayer.d.ts.
useEvoLayerProps() hook Type-safe access to the evolayer shared prop. Pages call this instead of destructuring usePage().props directly.

Opt-in features (enable per env flag)

Every feature defaults to off. Set the corresponding env flag to true to enable. Each flag also gates the route file for that feature — the routes only appear in route:list when their flag is on.

Env flag What it enables
EVOLAYER_BASE_EXAMPLE_THREAD_STUDIO=true /ai/thread-studio — AI customer-reply composer with structured streaming
EVOLAYER_BASE_EXAMPLE_PRD_STUDIO=true /admin/prd — AI-assisted PRD generator
EVOLAYER_BASE_EXAMPLE_ADMIN_INBOX=true /admin/inbox + /admin/submissions — form-submission inbox UI
EVOLAYER_BASE_EXAMPLE_CONTACT_AI=true /contact + AI subject hints + AI triage on submission
EVOLAYER_BASE_EXAMPLE_VOICE_INPUT=true /ai/voice-input/transcribe — speech-to-text endpoint for the <VoiceInput> block
EVOLAYER_BASE_EXAMPLE_AI_TEXT_FIELD=true /ai/text-assist/stream — text-suggestion streaming endpoint for the <AiTextField> block
EVOLAYER_BASE_EXAMPLE_MARKETING_PAGES=true /about — public showcase explainer mapped to the published evolayer/base.tsx (authenticated /home is host-owned by the starter)
EVOLAYER_BASE_FEATURE_CONTACT_ATTACHMENTS=true File-upload handling on the contact form. Requires composer require spatie/laravel-medialibrary (see "Opt-in extras" below)

After enabling, run php artisan route:list to confirm only the routes you asked for are registered.


Opt-in extras (composer packages)

Base requires spatie/laravel-permission and spatie/laravel-activitylog as core dependencies. The other two Spatie packages are optional and only required when you enable the related features:

Spatie package Feature it enables Required when
spatie/laravel-medialibrary Contact form file attachments + AI media analysis EVOLAYER_BASE_FEATURE_CONTACT_ATTACHMENTS=true
spatie/laravel-tags AI auto-tagging on form submissions during triage Optional with EVOLAYER_BASE_EXAMPLE_CONTACT_AI=true; triage still stores urgency/sentiment/summary when absent and records tags_skipped=true

To enable contact attachments:

Set EVOLAYER_BASE_FEATURE_CONTACT_ATTACHMENTS=true in .env. The package's FormSubmission model loads either way — a compat polyfill in Xuple\EvoLayer\Base\Compat\* shadows the Spatie interfaces and traits when the Spatie packages aren't installed.

If you use Spatie activitylog, tags, or medialibrary with EvoLayer ULID models, make the related morph id columns ULID/string-compatible before migrating on PostgreSQL:

The EvoLayer Base starter commits corrected Spatie migrations for this. Package-only installs that publish upstream Spatie migrations must make the same edits before running migrate against PostgreSQL.


Host integration steps

A handful of host-owned files need small edits the package cannot publish over. They are small and stable.

If you start from xuple/evolayer-base-starter, these edits are already applied.

1. Apply the laravel/ai patch

Until upstream lifts the structured-output streaming guard, structured streaming requires patching vendor/laravel/ai/src/Providers/Concerns/StreamsText.php. The patch ships at patches/laravel-ai-structured-streaming.patch after vendor:publish --tag=evolayer-base-patches:

The recommended production setup is to declare this patch in your starter template's composer.json so it survives every composer install. See patches/README.md for the revisit policy.

2. Wire EvoLayer shared props into Inertia

In app/Http/Middleware/HandleInertiaRequests.php:

The package's pages access evolayer via the published useEvoLayerProps() hook — it throws a helpful error if the shared prop is missing, so misconfigurations surface immediately.

3. Map EvoLayer public pages onto PublicLayout (if you enable MARKETING_PAGES)

In resources/js/app.tsx:

4. Surface EvoLayer nav entries in your sidebar

In resources/js/components/app-sidebar.tsx:

useExampleNavItems() filters items by the EVOLAYER_BASE_EXAMPLE_* flags so disabled features don't appear.


Invariant contracts (for variant authors)

These are the stable surfaces sibling EvoLayer packages (Commerce, SaaS, RLS) and host apps can depend on. Breaking changes are versioned.

Namespacing convention

Surface Convention
Route names evolayer.base.* (variants use evolayer.commerce.*, etc.)
Env vars EVOLAYER_BASE_EXAMPLE_*, EVOLAYER_BASE_FEATURE_* (variants use EVOLAYER_COMMERCE_*, etc.)
Shared props evolayer.base.{examples, features} (variants own evolayer.commerce.*, etc.)
Config config/evolayer.php; access via evolayer.base.*
Publish tags evolayer-base-* (variants use evolayer-commerce-*, etc.)
Migration filenames Include evolayer_base_ segment (variants include evolayer_commerce_, etc.)

SSE streaming vocabulary

Stable event names emitted by Base streaming endpoints:

Event Payload
start {}
field_delta {name, delta} (structured streaming per-field accumulation)
field_complete {name}
text_delta {delta} (plain text streaming)
done {result?, invocation_id?, duration_ms?, text?}
error {message, failure_type, provider?, model?, missing_fields?, invalid_fields?}

Reserved for future Base / variant use (documented now to prevent collision): tool_call, tool_result, thinking_delta, usage.

Toast / flash contract

Payload shape: {type: 'success'|'error'|'warning'|'info', message: string, ...}.

Schema invariants

The following columns are guaranteed on Base's prefixed tables/models for variant/RLS compatibility:

AdminGate contract

Default impl (SpatieAdminGate) routes evolayer.admin through hasRole('admin') and arbitrary abilities through Laravel's Gate facade. Replace via container binding to plug in a different model.

Ontology multi-file architecture

The package's OntologyCompiler supports merging multiple ontology files keyed by namespace. Variant packages register their ontology.yaml during boot:

The compiler reads the registry plus the host's own ontology.yaml and produces a namespace-keyed merged output.


Pluggable admin gate

The package ships an AdminGate contract with a default SpatieAdminGate implementation (hasRole('admin')). To plug in a different authorisation model, bind your own implementation in AppServiceProvider:


Known constraints for 0.1


Development

composer install automatically applies the laravel/ai patch to the package's own vendor copy so the test suite has structured streaming available. The npm checks only guard the published resources/js frontend stubs against format-only drift before host apps run composer evolayer:resync.

The package's own test suite runs against require-dev Spatie packages (medialibrary, tags) — meaningful "no Spatie installed" CI verification needs a separate composer install without dev deps. The compat layer's no-op stubs are independently asserted in tests/Unit/CompatNoopStubsTest.php.

Support and project status

EvoLayer is pre-1.0. Breaking changes are expected until 1.0. See DECISIONS.md for durable architecture decisions.

License

MIT. See LICENSE.


All versions of evolayer-base with dependencies

PHP Build Version
Package Version
Requires php Version ^8.4
inertiajs/inertia-laravel Version ^3.0
laravel/ai Version ^0.8.1
laravel/framework Version ^13.7
spatie/laravel-activitylog Version ^5.0
spatie/laravel-permission Version ^7.4
symfony/yaml Version ^7.0|^8.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package xuple/evolayer-base contains the following files

Loading the files please wait ...