Skip to content

Demo app (showcase)

apps/demo is the end-to-end app that demonstrates every Arqel package integrated in a single project: a blog admin with Posts, Tags, and Categories, including AI summary generation, workflow transitions (draft → review → published → archived), version history, and an audit log.

Why it exists

  1. Public showcase — runnable in ~2 minutes, the basis for screenshots and tutorials.
  2. Cross-package smoke test — exercises arqel-dev/core + fields + workflow
    • versioning + ai + audit in CI on every PR.
  3. Boilerplate — fork-friendly for anyone who wants to start with Arqel today.

Quick setup

The demo is recreated from scratch on every run — there is no versioned scaffolding under apps/demo/. The flow is the same any end user would have when integrating Arqel into a fresh Laravel app:

bash
git clone https://github.com/arqel-dev/arqel.git
cd arqel
pnpm install

# Recreate the demo from zero using the one-line installer.
./apps/demo/scripts/recreate.sh
# under the hood:
#   composer create-project laravel/laravel apps/demo
#   composer -d apps/demo require arqel-dev/framework
#   php artisan arqel:install   # publishes configs, shadcn (new-york) theme, sidebar and login
#   php artisan migrate --seed --seeder=Database\\Seeders\\DemoSeeder

php -d apps/demo artisan serve

Open http://127.0.0.1:8000/admin.

shadcn (new-york) UI on top of Radix UI

The framework's mass migration to shadcn CLI v4 (registry new-york) on top of Radix UI (radix-ui) affects the demo in two visible ways:

  • shadcn split-screen login flow: the /login page uses the login-04 block (split-screen with marketing panel on the left + form on the right) — replacing the previous centered card.
  • shadcn sidebar-07 block sidebar: the admin layout uses the sidebar-07 block (collapsible icon sidebar with header + primary nav + user menu footer) integrated with the canonical tokens (--background, --foreground, --primary, --border, --muted, --ring, --radius, etc.).

E2E with Playwright

The demo carries a Playwright suite covering the critical auth flow and the basic blog CRUD. The smoke set entry point is at:

  • apps/demo/tests-e2e/auth.spec.ts — login → dashboard → logout.

Run locally:

bash
pnpm --filter demo exec playwright test

In CI, these tests run after arqel:install on a clean runner, guaranteeing the one-line sequence works end-to-end.

Demonstrated features

  • Declarative Resources with 7+ Field types (text, slug, aiText, richText, stateTransition, dateTime, belongsTo).
  • Workflow with a pure-PHP state machine in app/States/PostStates.php.
  • Offline-friendly AI fields (deterministic stubs when no key is set).
  • 3 users, 5 categories, 20 tags, 50 posts generated by DemoSeeder.

Repository

MIT License — built with Inertia + React + Laravel.