Exponential as an application platform
This page is for application creators who consider building an application on Exponential: an intranet tool, a portal, a customer area, a data-driven site, a headless back end. Exponential is "a professional PHP application framework with advanced CMS functionality" (the README); this page lists what that framework gives you and how to decide what to build on it.
Contents
- What you get without writing code
- What you write
- Kinds of applications
- When to build on it, and when not
- Where to go next
What you get without writing code
| Need of an application | Exponential gives | Read |
|---|---|---|
| A data model | content classes with typed attributes, versions, translations, a tree | The content model |
| Users and permissions | users, groups, roles, policies with limitations | Roles and policies |
| An admin interface | the administration for every content class, for free | The admin tour |
| Business processes | workflows on triggers, object states | Workflows, Object states |
| Scheduled work | cronjob parts | Cronjobs |
| Background jobs | the expqueue job queue and content jobs | Queues with expqueue |
| An API | REST v1/v2 with OAuth2 and API keys; over a thousand named services in expservices | REST API v1 and v2, Remote services |
| Search | built-in or Solr | Site search |
| Audit | an audit trail of changes | Audit trail |
| AI assistance | Exponential Intelligence (expai) | Exponential Intelligence for applications |
| Serving | Velocity, Apache, nginx, FrankenPHP | Serving the site |
What you write
Everything specific to your application lives in an extension: a directory under extension/ with modules
(addresses and views), classes, templates, settings, datatypes, workflow events, cronjob scripts and console commands.
Setup > RAD lists 68 extension points and writes working skeletons for most of them
(RAD tools).
Kinds of applications
| Kind | Built from |
|---|---|
| A data application with forms and lists | content classes + custom views for special screens |
| A portal or members area | sections, roles, registration, custom modules |
| A headless back end for apps | content classes + REST or expservices (Headless Exponential) |
| A process tool (approvals, requests) | object states, workflows, notifications |
| An integration hub | cronjobs, queues, REST clients in PHP classes |
When to build on it, and when not
Build on it when the data is content-like (people edit it, it has versions, permissions and languages), when the built-in administration saves you an admin interface, and when you want one place for site and application.
Keep it outside when the core is high-volume transactional data with no editorial life (a ledger, telemetry); store that in your own tables (Persistent objects and custom tables) or a separate service, and connect it.
Where to go next
- Architecture for application creators
- Setting up a development environment
- Your first extension
- The extension developer book in
doc/eng-us/help/extension-development/, when it is in your installation.
Related pages
- Application creators: start here
- What Exponential is: the product family
- Standards
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
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.