What is an Oro application
Oro application provides the following out-of-the-box capabilities:- Runs on any OS — Linux is recommended. See setup for system requirements.
- Scalable — Can be scaled up and down to meet your company’s needs (message queue, indexes, search).
- Extendable — Extend via packages from the Oro Extensions Store designed by Oro, Oro partners, or the community.
- Customizable — Inherits most Symfony development techniques and extends them, allowing fast customization for any business needs.
Oro licensing
Community versions of Oro applications are distributed under the OSL-3.0 license. The community edition of OroPlatform is distributed under the MIT license. Enterprise editions are distributed under a custom End User License Agreement.Architecture overview
Technology Stack
Client-side (web browser, API client) and server-side (PHP, database, message queue, search, cache) components.
Application Structure
Source code repositories, distribution model, and file system structure.
Application Framework
How the Symfony-based Oro framework works and how to get started building with it.
Application Customization
Customize source code and publish your customization as a package.
Differences from Symfony
Key differences between Oro applications and standard Symfony applications.
Custom Oro Application
Build a fully custom application on top of the Oro platform.
Bundle-less structure
Oro supports a modern bundle-less file organization as an alternative to the classic bundle-based layout. This approach moves application-specific code out of dedicated bundle directories and into a flatter structure.Bundle-less Structure
Learn how to migrate existing bundles to a bundle-less structure and organize migrations, entities, controllers, views, translations, ACLs, and more without a dedicated bundle class.
Technology stack highlights
- Client side
- Server side
Web browserThe Oro storefront and back-office are rendered as standard HTML pages enhanced with JavaScript. The UI layer relies on Backbone.js-based components and communicates with the server over REST/JSON API.API clientExternal systems integrate with Oro through the JSON:API-compliant REST API or the legacy REST API endpoints.
Application structure
Oro applications use Composer for dependency management and follow the Symfony bundle system for code organization.Key differences from standard Symfony
Application kernel
Application kernel
The Oro application kernel automatically discovers and registers bundles by scanning for
Resources/config/oro/bundles.yml files in all installed packages. You do not need to manually register bundles in the kernel class.Routing configuration
Routing configuration
Routing resources are also auto-discovered from
Resources/config/oro/routing.yml files in each bundle, removing the need for manual route imports in the main routing configuration.Access control lists
Access control lists
OroSecurityBundle extends the standard Symfony security layer with an ownership-aware, role-based ACL system. Access can be granted at User, Business Unit, Division, Organization, or Global level.
Extension management
Extension management
Oro applications support installable extensions via Composer packages. Extensions are published on the Oro Extensions Store and can be installed without modifying core code.