Adobe App Builder project implementing AEM UI Extensions for:
- Universal Editor (UE) – Content Fragments panel, Presence panel
- Experience Hub (AEM Launchpad) – Active Pages widget
Built with React, Adobe UIX SDK, and App Builder actions.
| Extension Point | Description |
|---|---|
universal-editor-ui-1 |
UE Properties Rail panels: Content Fragments referrers, Presence (who’s editing), Settings |
aem-launchpad-1 |
Experience Hub dashboard widget: Active Pages (pages being edited in UE) |
- Node.js 18+
- Adobe I/O CLI:
npm install -g @adobe/aio-cli - Supabase project (for Presence and Active Pages)
- Access to AEM as a Cloud Service author and Experience Hub
git clone https://github.com/znikolovski/agentic-how-to.git
cd agentic-how-to
npm installCreate .env in the project root. Do not commit this file.
# Generate Adobe I/O config (optional, if starting fresh)
aio app useAdd or verify these variables:
# Adobe I/O Runtime
AIO_runtime_auth=<your-runtime-auth>
AIO_runtime_namespace=<your-namespace>
AIO_runtime_apihost=https://adobeioruntime.net
# Supabase (for Presence and Active Pages)
SUPABASE_URL=https://<your-project>.supabase.co
SUPABASE_ANON_KEY=<your-anon-key>
SUPABASE_SERVICE_ROLE_KEY=<your-service-role-key>Supabase is used for presence tracking and the Active Pages widget. Run the migrations in scripts/ against your project.
aio app runUI is served on localhost:9080; actions run on Adobe I/O Runtime.
# Universal Editor extension
aio app dev -e universal-editor/ui/1
# Experience Hub / Active Pages
aio app dev -e aem/launchpad/1This runs both the UI and actions locally. See aio app dev vs aio app run.
- Universal Editor: Open your AEM site in UE, add dev URL to the extension (e.g.
https://localhost:9080with dev mode). - Experience Hub: Load from Experience Hub with
?devMode=true&ext=https://localhost:9080in the URL.
# Build all extensions
aio app build
# Deploy to Adobe I/O
aio app deploy
# Undeploy
aio app undeployAfter deploy, use the Extension Manager to register the deployed extension URL.
- Deploy the app (
aio app deploy). - In AEM, go to Tools → General → Configuration Browser.
- Create or select a context for your site.
- Add the extension URL from the deploy output to the UE configuration.
- Deploy the app.
- Open Extension Manager.
- Register a Bring Your Own (BYO) extension with your Extension URL.
- Customize the dashboard and add the “Active Pages” widget.
├── app.config.yaml # Extension point includes
├── src/
│ ├── universal-editor-ui-1/ # UE extension
│ │ ├── ext.config.yaml
│ │ ├── actions/ # get-fragment-referrers, presence, etc.
│ │ └── web-src/
│ └── aem-launchpad-1/ # Experience Hub extension
│ ├── ext.config.yaml
│ ├── actions/ # get-all-presence, get-page-metadata
│ └── web-src/
├── scripts/ # Supabase migrations
├── docs/ # Plans and knowledge base
└── .skills/ # Agent skills (for AI-assisted development)
# Unit tests
aio app test
# E2E tests
aio app test --e2e- AGENTS.md – Agent workflow and coding rules
- docs/knowledge-base.md – UE, Experience Hub, and App Builder patterns
- Adobe App Builder
- AEM UI Extensibility
- Universal Editor Extensibility