Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Exponential Platform DXP skeleton: create-project and a documented install

This page is for developers who start a new project on Exponential Platform (the Symfony based platform) from a clean skeleton, without a demo design.

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/features/6.0/platform-dxp-skeleton.md

On this page

Exponential Platform DXP skeleton: create-project and a documented install

This page is for developers who start a new project on Exponential Platform (the Symfony based platform) from a clean skeleton, without a demo design.

Repositories: se7enxweb/exponential-platform-dxp-skeleton (Platform v5), se7enxweb/exponential-platform-v4x-dxp-skeleton (Platform 4.6.x), se7enxweb/exponential-platform-dxp (the metapackage both require), se7enxweb/oss, se7enxweb/oss-skeleton.

What it is

A clean Symfony project for Exponential Platform with no demo design. composer create-project downloads the packages, a Symfony Flex recipe configures them, and the skeleton's own guide (INSTALL.md, 22 sections) takes you from an empty folder to a running administration interface. Use the Nexus starter when you want a finished demo site instead.

SkeletonPlatformSymfonyPHPNode.js
exponential-platform-dxp-skeletonv57.4 LTS8.3+ (8.3 or 8.5 recommended)20 LTS (guide states only 20 is tested)
exponential-platform-v4x-dxp-skeleton4.6.x5.4 (extra.symfony.require is pinned to 5.4.* so Flex cannot pick a mismatching version)7.4 to 8.520 LTS

The metapackage se7enxweb/exponential-platform-dxp was created on 2026-03-12 and, on 2026-03-21, its core and admin packages were switched to the se7enxweb forks (core tagged v5.0.1.0). In April 2026 it also replaced ibexa/system-info, ibexa/admin-ui-assets and ibexa/fieldtype-richtext with the se7enxweb packages and required the layouts-core fork. See the package map.

Why it helps

  • One documented path. Every command in the guide carries the Exponential name (exponential:install, exponential:reindex); the old ibexa:* names are kept as aliases so old scripts keep working.
  • The Flex recipe endpoint of the se7enxweb recipes is placed before the upstream recipes in the skeleton's composer.json (commit "Add sevenx-recipes Flex endpoint before ibexa/recipes", 2026-03-12), so bundles are configured with the fork-aware recipes.
  • Three databases are documented: MySQL / MariaDB, PostgreSQL, and SQLite without any server (SQLite for the platform).

Create a project

composer create-project se7enxweb/exponential-platform-dxp-skeleton my-project
cd my-project

Composer downloads the packages, runs the recipes and the post-install scripts (assets:install, cache:clear).

Configure the environment (never commit .env.local):

cp .env .env.local
$EDITOR .env.local

Minimum variables for MySQL / MariaDB:

VariableExampleMeaning
APP_ENVprod or devSymfony environment
APP_SECRET32 random hex charactersSymfony secret
DATABASE_DRIVERpdo_mysql (pdo_pgsql for PostgreSQL)PDO driver
DATABASE_HOST, DATABASE_PORT127.0.0.1, 3306server
DATABASE_NAME, DATABASE_USER, DATABASE_PASSWORDyour valuescredentials
DATABASE_CHARSET, DATABASE_COLLATIONutf8mb4, utf8mb4_unicode_520_cicharacter set
DATABASE_VERSIONmariadb-10.6.0 or 8.0server version Doctrine assumes
JWT_SECRET_KEY, JWT_PUBLIC_KEY, JWT_PASSPHRASEkey paths under config/jwt/, a random passphraseREST API login

DATABASE_URL is derived from the parts, or you can set a full DSN directly.

Create the database and install:

mysql -e "CREATE DATABASE exponential CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;"
php bin/console exponential:install exponential-oss

Then build the assets and the keys:

source ~/.nvm/nvm.sh && nvm use 20
yarn install
yarn dev                                              # site assets (yarn build for production)
php bin/console assets:install --symlink --relative public
yarn ibexa:build                                      # admin interface assets
php bin/console lexik:jwt:generate-keypair            # REST API keys
php bin/console ibexa:graphql:generate-schema         # GraphQL schema
php bin/console exponential:reindex                   # search index
php bin/console cache:clear

File permissions for the web server user (replace www-data):

setfacl -R  -m u:www-data:rwX -m g:www-data:rwX var/ public/var/
setfacl -dR -m u:www-data:rwX -m g:www-data:rwX var/ public/var/

Siteaccesses: site serves the Twig front end at /, admin serves the administration interface at /adminui/. REST is at /api/ezp/v2/, GraphQL at /graphql.

The demo data creates an administrator account that the guide documents publicly. Change its password in the admin interface immediately.

Day to day

php bin/console cache:clear --env=prod                # after configuration or code changes
php bin/console cache:warmup --env=prod
php bin/console cache:pool:clear cache.tagaware.filesystem
php bin/console fos:httpcache:invalidate:path / --all # when Varnish or the HTTP cache is in use
php bin/console exponential:reindex --content-type=article
php bin/console doctrine:migration:migrate --dry-run  # preview pending migrations
php bin/console doctrine:migration:migrate --allow-no-migration

Cron (every five minutes):

*/5 * * * * /usr/bin/php /var/www/exponential/bin/console ibexa:cron:run --env=prod >> /var/log/exponential-cron.log 2>&1

Note that ibexa:cron:run and ibexa:graphql:generate-schema still carry their upstream names in this release; only commands that were migrated have an exponential: name (list).

Database conversion

The guide (section 21) describes moving between engines: any database to SQLite (mysql2sqlite for MySQL, pgloader for PostgreSQL), SQLite to MySQL or PostgreSQL, MySQL to PostgreSQL and the reverse, and an export-only path to Oracle. It ends with a post-conversion checklist. After converting to SQLite set DATABASE_URL="sqlite:///%kernel.project_dir%/var/data_dev.db" and MESSENGER_TRANSPORT_DSN=sync://.

Limits

  • The v5 skeleton refuses PHP older than 8.3. The 4.6.x skeleton keeps PHP 8.0 to 8.5 (PHP 7.4 usable without support) and Symfony 5.4.
  • Node.js: the v5 skeleton guide says use Node 20 LTS only; the Nexus v5 starter requires Node 22. Follow the guide of the project you install.
  • A clone of the skeleton with git clone instead of create-project needs composer install --keep-vcs and the same steps in order.

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x