Application creators: start here
This page is for developers who build applications on Exponential: custom modules and screens, integrations, headless back ends, process tools, AI-assisted features. It tells you what this section offers, what to do in your first week, and where every answer is. Exponential is the open source content management system and application framework that runs in this administration; it continues the code base of eZ Publish, a product its creator discontinued after almost 18 years, and is led by 7x together with the Exponential Foundation (Who is 7x?, Who is the Exponential Foundation?).
Contents
- Your first week
- Foundations
- Modules, views and templates
- Data
- Processes and background work
- APIs and AI
- Packaging and releases
- Testing, deployment and operations
- Security
- Scaling
- Other documentation you will use
Your first week
| Day | Do | Page |
|---|---|---|
| 1 | Read what the platform gives you and how a request flows | Exponential as an application platform, Architecture |
| 2 | Set up a local installation | Setting up a development environment |
| 3 | Build the first extension, then let Setup > RAD build another | Your first extension, RAD tools |
| 4 | Add a view with a form and a policy | Custom modules and views, Forms, CSRF protection and HTTP input |
| 5 | Read and write content in PHP; write a test | The content API, DB-less PHPUnit tests |
The reading path puts every page below in order.
Foundations
- Exponential as an application platform
- Architecture for application creators
- Setting up a development environment
- Your first extension
- Anatomy of an extension
- Settings and INI files in your application
- Autoloads and class naming
- RAD tools: building faster
Modules, views and templates
- Custom modules and views
- module.php reference: views, parameters and functions
- View results, templates and the pagelayout
- Policy functions and limitations
- Forms, CSRF protection and HTTP input
- Fetch functions: reading data in templates
- Writing your own fetch function
- Writing template operators
- Template functions, includes and cache blocks
Data
- The content API in PHP
- Creating and updating content in code
- Persistent objects and custom tables
- Database access and SQL
- Database schema and .dba files
- Writing a custom datatype
- The datatype life cycle
Processes and background work
- Workflows, triggers and events
- Writing a workflow event type
- Cronjobs for applications
- Writing a cronjob script
- Console commands
- CLI scripts with eZScript
- Content jobs
- Queues with expqueue
- Background work: queues, cronjobs and content jobs
APIs and AI
- REST API v1 and v2 for applications
- JSON endpoints with ezjscore
- OAuth and API keys
- Remote services with expservices
- Headless Exponential
- Notifications and mail from applications
- Exponential Intelligence (expai) for applications
- Extending Exponential Intelligence
Packaging and releases
- Packaging your application as an extension
- Composer packages and Packagist
- Versions and releases of your extension
- Content packages (.ezpkg)
Testing, deployment and operations
- Testing applications
- DB-less PHPUnit tests
- Continuous integration for extensions
- Debugging and logs
- Deploying with Velocity
- A deployment pipeline
- Environment settings and secrets
Security
- Security for applications
- Content Security Policy for your code
- Input validation and output escaping
- Access control in code
Scaling
- Scaling applications
- Caching in applications
- Clustering and shared storage
- Profiling and performance
- Symfony and the legacy bridge
- Application creators: frequently asked questions
Other documentation you will use
| For | Read |
|---|---|
| Rules and patterns of the code base | Standards, Patterns |
| Every extension point and how it is registered | Extension points |
| Site building (templates, layouts, SEO) | Website creators: start here |
| Working with Git and contributing | Develop with Git |
| Installing and serving | Installation book |
| The extension developer book | doc/eng-us/help/extension-development/, when it is in your installation |
Tip
The help's search finds every page of this section: filter it by the audience Application creators.
Related pages
- The application creator's reading path
- Who is the Exponential Foundation?
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
See also: PHP Developers, Mobile App Developers.
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.