Installed via composer create-project; the post-create hook automatically handles key generation, SQLite database creation, migrations, seeds, and cache compilation
evolayer-base-starter — Laravel Starter Template
By xuple
A Laravel and React AI application starter template installed via Composer create-project, with built-in structured-output streaming examples, ontology-driven events, and toggleable example interfaces.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Structured-output streaming is based on the laravel/ai SDK, defaulting to Gemini; the SDK supports OpenAI, Anthropic, DeepSeek, Groq, xAI, Mistral, and Ollama
The ThreadStudio runtime only approves Gemini and OpenAI as selectable providers; Anthropic's structured streaming path is not approved for the runtime
Each example interface is toggled independently by EVOLAYER_BASE_EXAMPLE_* environment variables; disabling removes the corresponding routes and sidebar entries
The ontology.yaml ontology model compiles into typed SSE events and projections, providing a schema for real-time UI
Includes a laravel/ai structured streaming patch, applied automatically at install via composer-patches and verifiable with evolayer:doctor
Template Details
EvoLayer Base Starter is an AI application starter for Laravel, composed of a host shell (this repository) and an upstream package, xuple/evolayer-base. The host part provides the Laravel application shell, including Inertia and authentication wiring, host migrations, React components, Tailwind styles, seed data, and tests, and is built on the official laravel/react-starter-kit. The upstream package handles examples, blocks, agents, ontology, evolayer:* commands, and the evolayer.base.* configuration structure, and does not register routes by default; this starter turns all example features on, forming a "full examples" initial state.
Installation is via composer create-project xuple/evolayer-base-starter my-app. The post-create hook automatically generates the application key, creates the SQLite database, runs migrations and seeds, compiles Wayfinder and the ontology cache, and writes the identity description of the generated application. When cloning the repository directly, use composer setup instead. The default demo account is [email protected] / password.
Functionally, the template implements structured-output streaming through the laravel/ai SDK, using Gemini by default; at the SDK level it also supports OpenAI, Anthropic, DeepSeek, Groq, xAI, Mistral, and Ollama. However, the ThreadStudio runtime only approves Gemini and OpenAI as AI_THREAD_STUDIO_PROVIDER; Anthropic's structured streaming path currently returns zero TextDelta events and an empty final payload, which is diagnosable but not approved for the runtime. Each example interface is toggled independently by EVOLAYER_BASE_EXAMPLE_* environment variables; when disabled, the corresponding routes and sidebar entries disappear. Underlying features use the EVOLAYER_BASE_FEATURE_* prefix.
The template includes patches/laravel-ai-structured-streaming.patch, applied automatically at composer install via cweagans/composer-patches, to enable structured-output streaming before it is fixed in upstream laravel/ai. Frontend stub files are committed to the repository; composer evolayer:resync can pull upstream updates, preserving host modifications and skipping ejected interfaces.
Limitations: the project is in developer preview, package versions are 0.x (starter v0.1.19 with xuple/evolayer-base v0.1.9), and the framework is pinned to exact versions during 0.x. Files under vendor/xuple/evolayer-base should not be edited; issues inside the package must be fixed in the upstream repository, followed by composer update and resync. The code is MIT-licensed, but third-party assets such as demo images, fonts, and icons require separate license checks, and external services such as domains, hosting, databases, payments, and AI may incur separate charges.
Is it right for your project?
Use Cases
- Building a Laravel AI application skeleton with authentication, Inertia, and a React frontend from scratch
- Incrementally introducing AI and ontology capabilities into an existing Laravel project via composer require xuple/evolayer-base and evolayer:install
- Using example interfaces such as ThreadStudio, PRD Studio, and contact-form AI triage as a starting point for custom business interfaces
- Projects that need structured-output streaming and ontology-driven real-time events and want to trim example features via environment variables
Suitable For
- Developers using a Laravel and React stack who need an AI application starting skeleton
- Teams that want example interfaces usable out of the box and later disabled or ejected as needed
- Projects that accept a 0.x developer preview version and are willing to follow upstream package updates
- Developers who need preconfigured Laravel Boost settings for agent tools such as Claude Code, Codex, OpenCode, and Cursor
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Run composer create-project xuple/evolayer-base-starter my-app, then npm install && npm run build and php artisan serve
- 2
When cloning the repository directly, use composer setup instead; for Nginx hosting scenarios, refer to docs/local-dev-hosting.md
- 3
Set the API key for the chosen provider in .env (e.g., GEMINI_API_KEY, OPENAI_API_KEY) and verify structured streaming with php artisan evolayer:ai:stream-check gemini
- 4
The default demo account is [email protected] / password; if installation fails, run php artisan evolayer:doctor to check patch markers and installation status
- 5
Do not edit files under vendor/xuple/evolayer-base; after updating upstream, run composer evolayer:resync (use --dry-run to preview, --force to overwrite local modifications)
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version in the public repository under the MIT license; the free scope is the code of this version and does not imply that external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution of this version's code are permitted.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Enabling AI features requires configuring the API key of the chosen provider in .env (e.g., GEMINI_API_KEY, OPENAI_API_KEY), i.e., it depends on third-party AI service accounts and keys.
- The ThreadStudio runtime only approves Gemini and OpenAI as selectable providers; other providers (such as Anthropic) are not approved for the runtime and cannot be selected as AI_THREAD_STUDIO_PROVIDER.
- Anthropic's structured streaming path currently returns zero TextDelta events and an empty final payload; it is usable only for diagnostics and is blocked for the ThreadStudio runtime pending revalidation.
- Files under vendor/xuple/evolayer-base must not be edited; issues inside the package must be fixed in the upstream repository, followed by composer update and resync.
- Laravel Boost is a require-dev dependency; the MCP layer is available only when development dependencies are installed.
- The project is in a pre-1.0 developer preview stage with 0.x versions, and the framework is pinned to exact versions during 0.x, so instability is possible.
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; the code's MIT license alone is not sufficient to judge them.
- External services such as domains, hosting, databases, payments, or AI may incur separate charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
To enable AI features, set your provider's API key in `.env` (`GEMINI_API_KEY`, `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, etc.)
Original README
ThreadStudio's runtime-approved (directly-verified) providers are > **Gemini** (default) and **OpenAI**
Original README
Anthropic's structured-streaming path currently returns > zero `TextDelta` events and an empty final payload, so it is > **diagnostic-eligible but blocked for ThreadStudio runtime / pending > re-verification**
Original README
**Do not edit files under `vendor/xuple/evolayer-base`.**
Original README
**Boost is a `require-dev` dependency**; the MCP layer is only available with dev dependencies installed.
Original README
https://github.com/xuple/evolayer-base-starter/blob/main/LICENSEhttps://github.com/xuple/evolayer-base-starter/blob/main/README.mdEvoLayer is pre-1.0.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 88 / 100
- Technologies
- Laravel · React
- Website type
- Starter
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-10-01
- Screenshot last checked
- 2026-10-02
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Laravel as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Automatically checked against source and license rules; no manual editorial review.
Inspect the recorded source material
SHA-256: 00913df7512694cfcb18fd7f9e9e0d330b048256384f3ccda7484c7ffdf0ade9
2026-10-02T14:39:13.345Z
Source file / repository<p align="center"> <img src="public/social/thread-studio-preview.png" alt="ThreadStudio — structured AI streaming in EvoLayer Base" width="700"> </p> # EvoLayer Base **A fully working AI application layer for the official Laravel AI SDK.** Structured-output streaming, ontology-driven events, and production-ready React surfaces — delivered as a project template. <p align="center"> <a href="https://github.com/xuple/evolayer-base-starter/actions"><img src="https://img.shields.io/github/actions/workflow/status/xuple/evolayer-base-starter/tests.yml?branch=main&style=flat-square" alt="Tests"></a> <a href="https://packagist.org/packages/xuple/evolayer-base-starter"><img src="https://img.shields.io/packagist/v/xuple/evolayer-base-starter?style=flat-square" alt="Version"></a> <a href="https://packagist.org/packages/xuple/evolayer-base-starter"><img src="https://img.shields.io/packagist/php-v/xuple/evolayer-base-starter?style=flat-square" alt="PHP"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="License"></a> </p> <p align="center"> <a href="https://evodevops.com/evolayer-base/docs">Documentation</a> · <a href="#quick-start">Quick Start</a> · <a href="https://github.com/xuple/evolayer-base">Package Repo</a> · <a href="https://www.youtube.com/@EvoDevOps">YouTube</a> · <a href="CHANGELOG.md">Changelog</a> </p> > **Developer preview:** Both `xuple/evolayer-base` and `xuple/evolayer-base-starter` are public, MIT-licensed, pre-1.0 packages on GitHub and Packagist. The current public install line is starter `v0.1.19` with `xuple/evolayer-base` `v0.1.9`. ## The Promise EvoLayer Base gives you the best of both worlds: a clean, manageable starting point with continuous upstream updates, and the freedom to take total control exactly when you need it. It is a **working AI application layer delivered through a project template**. - **You own** your routes, models, config, branding, and any surface you [eject](https://evodevops.com/evolayer-base/docs/how-to/eject-a-surface). - **The application layer manages** the complex AI runtime, ontology, commands, and example surfaces behind the scenes. It keeps them updated automatically via [`composer evolayer:resync`](https://evodevops.com/evolayer-base/docs/how-to/resync-the-frontend) so your codebase stays clean. - **Ejecting empowers you.** Whenever you want to deeply customize a managed surface, simply run `php artisan evolayer:eject <surface>`. You take full ownership of the code, and we'll step out of the way. > Read the full [Promise](PROMISE.md) and [Framework Contract](https://github.com/xuple/evolayer-base/blob/main/docs/contract.md). ## Quick Start ```bash composer create-project xuple/evolayer-base-starter my-app cd my-app npm install && npm run build php artisan serve ``` `composer create-project` runs the post-create hook automatically — generating your app key, creating an SQLite database, running migrations and seeders, compiling the Wayfinder and ontology caches, and adding generated-app identity notes for humans and agents. Log in with `[email protected]` / `password` to explore every surface immediately. > Cloned the repo directly? Run `composer setup` instead. Hosting behind Nginx? See [`docs/local-dev-hosting.md`](docs/local-dev-hosting.md). For generated-app identity behavior, see [`docs/migration/generated-app-identity.md`](docs/migration/generated-app-identity.md). ## Why EvoLayer Base? - **[Structured AI Streaming](https://evodevops.com/evolayer-base/docs/how-to/configure-ai-provider)** — Real-time structured-output streaming via the `laravel/ai` SDK. Defaults to Gemini; the SDK also supports OpenAI, Anthropic, DeepSeek, Groq, xAI, Mistral, and Ollama. (ThreadStudio runtime-approves Gemini + OpenAI today — see [AI providers](#ai-providers).) - **[Working AI Surfaces, Not Stubs](https://evodevops.com/evolayer-base/docs/tutorial/first-install)** — ThreadStudio, PRD Studio, AI contact triage, voice input, and inline text assist ship functional — not as placeholder wireframes. - **[Ontology-Driven Events](https://evodevops.com/evolayer-base/docs/reference/sse-vocabulary)** — An `ontology.yaml` model compiles to typed SSE events and projections, giving your real-time UI a schema instead of ad-hoc event strings. - **[Feature Flags, Not Bloat](https://evodevops.com/evolayer-base/docs/reference/env-flags)** — Every example surface toggles independently via `EVOLAYER_BASE_EXAMPLE_*` env flags. Disable what you don't need; routes and sidebar entries disappear. - **[Reproducible Installs](PROMISE.md)** — Committed `composer.lock`, exact-pinned framework while `0.x`, deterministic `create-project`. Two installs of the same version are identical. - **[Agent-Ready Tooling](https://laravel.com/docs/boost)** — Pre-wired for Claude Code, Codex, OpenCode, and Cursor via Laravel Boost with MCP, skills, and `search-docs`. ## Choose Your Path | | Command | Use when… | | ------------------ | ------------------------------------------------------------------- | -------------------------------------------------------------------------- | | 🚀 **New project** | `composer create-project xuple/evolayer-base-starter my-app` | You want a fully configured app with every surface enabled from clone zero | | 📦 **Existing app** | `composer require xuple/evolayer-base` then `php artisan evolayer:install` | You want to add AI and ontology to a Laravel app you already have | ## How the pieces fit | | Owns | Posture | | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | [`xuple/evolayer-base`](https://github.com/xuple/evolayer-base) (package) | Examples, blocks, agents, ontology, `evolayer:*` commands, the `evolayer.base.*` config shape | Conservative — installs add no routes by default | | `xuple/evolayer-base-starter` (this repo) | The Laravel host shell: Inertia/auth wiring, host migrations, `laravel/ai` patch, kitchen-sink `.env.example`, CI | Kitchen-sink — every example feature switched on out of the box | It gives you a full Laravel application from day one — auth, host Inertia pages, React components, Tailwind styling, EvoLayer-published examples, config, seeders, and tests are all available to adapt. (Note: The starter is built on the foundation of the official `laravel/react-starter-kit`.) > **Framework Contract**: For the strict definition of what the framework manages versus what you own, see the [EvoLayer Framework Contract](https://github.com/xuple/evolayer-base/blob/main/docs/contract.md) in the upstream package. ## Features Each bundled example surface is gated by an `EVOLAYER_BASE_EXAMPLE_*` flag in `.env`; substrate features use the `EVOLAYER_BASE_FEATURE_*` prefix. Set a flag to `false` to drop that surface's routes and sidebar entry. | Flag | What it adds | | ------------------------------------------- | ---------------------------------------------------------- | | `EVOLAYER_BASE_EXAMPLE_MARKETING_PAGES` | Public `/about` explainer alias (authenticated `/home` is host-owned, always on) | | `EVOLAYER_BASE_EXAMPLE_THREAD_STUDIO` | ThreadStudio — streaming AI compose with structured output | | `EVOLAYER_BASE_EXAMPLE_PRD_STUDIO` | PRD Studio — turn notes into scoped requirements | | `EVOLAYER_BASE_EXAMPLE_ADMIN_INBOX` | Admin inbox for contact-form submissions | | `EVOLAYER_BASE_EXAMPLE_CONTACT_AI` | AI-assisted contact form (triage, auto-tagging) | | `EVOLAYER_BASE_EXAMPLE_VOICE_INPUT` | Voice-input block | | `EVOLAYER_BASE_EXAMPLE_AI_TEXT_FIELD` | `<AiTextField>` block — inline streaming suggestions | | `EVOLAYER_BASE_FEATURE_CONTACT_ATTACHMENTS` | Contact-form attachment processing (uses medialibrary) | ## AI providers EvoLayer Base uses the `laravel/ai` SDK for structured-output streaming. It defaults to **Gemini**, but supports a vast ecosystem including OpenAI, Anthropic, DeepSeek, Groq, xAI, Mistral, and Ollama. To enable AI features, set your provider's API key in `.env` (`GEMINI_API_KEY`, `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, etc.), then verify structured streaming works end to end: ```bash php artisan evolayer:ai:stream-check gemini ``` > **Provider status:** ThreadStudio's runtime-approved (directly-verified) providers are > **Gemini** (default) and **OpenAI** — both pass `evolayer:ai:stream-check` end to end > with the committed `laravel/ai` patch, and only these two are selectable as > `AI_THREAD_STUDIO_PROVIDER`. Anthropic's structured-streaming path currently returns > zero `TextDelta` events and an empty final payload, so it is > **diagnostic-eligible but blocked for ThreadStudio runtime / pending > re-verification** — exercise it with `evolayer:ai:smoke-test anthropic` (the > non-streaming path passes), but it is not runtime-approved for selection. > NVIDIA / OpenCode / OpenRouter are likewise router-backed diagnostic-eligible > probe candidates, not runtime-approved. See [`patches/README.md`](patches/README.md) > for the verification matrix. ## The `laravel/ai` patch The starter ships `patches/laravel-ai-structured-streaming.patch`, applied automatically via `cweagans/composer-patches` on `composer install`. It enables structured-output streaming until upstream `laravel/ai` ships the fix. See [`patches/README.md`](patches/README.md) for the rationale and upstream-PR tracking. If streaming misbehaves, run `php artisan evolayer:doctor` — it verifies the patch marker along with the rest of the install. ## Re-syncing the package frontend The EvoLayer React stubs are committed so the repo clones and builds without a publish step. To pull a newer `xuple/evolayer-base` release: ```bash composer update xuple/evolayer-base composer evolayer:resync ``` `evolayer:resync` is manifest-safe — it updates pristine stubs, keeps host-modified ones, and skips ejected surfaces (`--force` to overwrite local edits, `--dry-run` to preview). **Do not edit files under `vendor/xuple/evolayer-base`.** Fix package internals [upstream](https://github.com/xuple/evolayer-base), then `composer update` + `composer evolayer:resync` here. To add Base to an existing app instead, use `php artisan evolayer:install` — you don't need that command in this starter, its work is already pre-applied. ## What's pre-applied The package publishes most of its surface, but a few edits must live in host files. These are already applied: - **Middleware** — shares the `evolayer.base.{examples,features,brand}` Inertia prop via `EvoLayerProps::base()`. - **User model** — adds Spatie `HasRoles` for the admin gate. - **Sidebar** — renders enabled example pages via `useExampleNavItems()`. - **Types** — types the `evolayer` shared prop. - **Seeders** — seeds the AI capability ledger and admin demo user. - **Spatie migrations** — committed with ULID-compatible morph columns for EvoLayer models. ## Social previews Public preview defaults live in `config/site.php`, controlled by `SITE_*` and `SOCIAL_*` variables in `.env`. Public pages use `PublicLayout` / `SiteHead` for title, canonical, robots, Open Graph, X/Twitter, and JSON-LD. See [`.env.example`](.env.example) for the full set. Two opt-in knobs (blank by default, so output is unchanged until set): - **Local-business structured data** — set `SITE_JSONLD_TYPE` (one or more schema.org types, comma-separated) with optional `SITE_JSONLD_TELEPHONE` / `_EMAIL` / `_AREA_SERVED` / `_PRICE_RANGE` / `_SAME_AS` to emit a server-rendered business node in the JSON-LD graph. - **Asset cache-busting** — set `SITE_ASSET_VERSION` and wrap public asset paths with the `useVersionedAsset()` hook to append a global `?v=` token, so replaced images are picked up past a CDN. ## Tooling - `composer dev` — run server, queue, logs, and Vite together. - `php artisan evolayer:doctor` — health-check the install. - `npm run types:check` / `npm run build` (client + SSR) / `composer lint` / `composer test`. - [`docs/local-dev-hosting.md`](docs/local-dev-hosting.md) — Nginx/PHP-FPM hosted-dev checklist, `tempnam()` troubleshooting, and env-driven Vite port/origin HMR guidance. The starter is pre-wired for AI coding agents (Claude Code, Codex, OpenCode, Cursor) via [Laravel Boost](https://laravel.com/docs/boost): `AGENTS.md` / `CLAUDE.md` carry the starter-specific boundaries followed by Boost's framework guidelines, and `.mcp.json` / `.codex/config.toml` / `opencode.json` register `php artisan boost:mcp`. Skills live under `.claude/skills/` and `.agents/skills/`. **Boost is a `require-dev` dependency**; the MCP layer is only available with dev dependencies installed. The test runner is **Pest 4** (`php artisan test`), layered on PHPUnit 12. New tests use Pest's `it()` / `test()` style (`php artisan make:test --pest {name}`); existing PHPUnit `Tests\TestCase` classes still run under Pest, so migration is opportunistic. ## Where this sits in the EvoDevOps family EvoLayer Base is the **AI / ontology / blocks substrate**: a Laravel + Inertia + React layer that turns the [`laravel/ai`](https://github.com/laravel/ai) SDK into a structured-output streaming surface, with an `ontology.yaml`-driven event/projection model and a small block library on top. This starter is the `composer create-project` entry point for Base. The package itself is [`xuple/evolayer-base`](https://github.com/xuple/evolayer-base) under the `evolayer.base.*` config and route namespace. Sibling EvoDevOps layers (`evolayer.commerce.*`, `evolayer.saas.*`, `evolayer.rls.*`, …) are planned as separate packages with their own starter repos following the same pattern; they will not ship inside this Base starter. `evodevops.com` is the editorial / teaching home for the family; `evodevops.com/evolayer-base/docs` is the canonical Base documentation root. ## Project Status EvoLayer is pre-1.0. Base and the starter are free/public MIT projects published on GitHub and Packagist. See [RELEASE.md](RELEASE.md) and [CHANGELOG.md](CHANGELOG.md). --- <p align="center"> Built on the <a href="https://laravel.com/docs/starter-kits">Laravel React Starter Kit</a> · Licensed under <a href="LICENSE">MIT</a> </p>
Explore similar templates
Compare previews and descriptions within the same stack and category.

sage
Sage is a WordPress starter theme maintained by Roots, using Laravel Blade components and templates, Vite builds, Tailwind CSS, and built-in block editor support.
Laravel · Starter

wave
Wave is an open-source SaaS starter kit built on Laravel and released under the MIT license.
Laravel · SaaS

filament-starter
A Laravel TALL stack starter template maintained by Log1x, with a preconfigured Filament admin panel and plugins including Curator, Gravatar, Exceptions, Jobs Monitor, Breezy, Peek, and Logger.
Laravel · Starter

electrik
Electrik is a Laravel SaaS starter kit installed as a Composer package, with authentication, teams, Stripe subscription billing, and the Slate 3 interface under the Electrik\ namespace rather than copied into App\.
Laravel · SaaS

php-saas
php-saas is a Laravel-based SaaS starter positioned as an everything-included kit. It generates new projects via a global Composer command and includes authentication with two-factor, API tokens, Stripe and Paddle billing, and project, team, and organization management.
Laravel · SaaS

filament-jetstream
A Laravel starter kit that implements Jetstream-like authentication and account features using Filament's native panels and components. It includes login, registration, two-factor authentication, session management, user profiles, and optional teams and API tokens.
Laravel · Starter
