Basics of Odoo architecture

Hello everyone ^^

Today’s article will provide you a basic overview of the Odoo architecture.

Setting up and managing an Odoo installation will require a basic understanding of the components that make up Odoo. So let’s start ^^

MVC architecture:

Odoo is built upon a Model-View-Controller (MVC) architecture. One of the primary goals of this architecture is to separate the visual display of the information from the business rules and management of the underlying data. For example, if you need to change the way data is organized in the model, it is desirable not to have to make dramatic changes to how you view the data. This is true for maintaining flexibility in viewing data. Today, it is common to have many different client applications sharing the same underlying data.

MVC model and Odoo


The Model notifies the Controller of any data changes, and in turn, the Controller updates the data in the Views.

The View can then notify the Controller of actions the user performed and the Controller will either update the Model if necessary or retrieve any requested data.

Technical architecture: 

Odoo system is formed from three main components:

  • PostgreSQL  database server: which contains all of the databases, each of which contains all data and most elements of the Odoo system configuration.
  • Odoo application server: which contains all the enterprise logic and ensures that Odoo runs optimally.One layer of the server is dedicated to communicate and interface with the PostgreSQL database, the ORM engine. Another layer allows communications between the server and a web browser, the Web layer.
  • Web client: Which provides user interface, it is running in a web browser as Javascript application. The client issues a request to the server, gets data back and display the result (e.g. a list of customers) in different ways (as forms, lists, calendars, …). Upon user actions, it sends queries to modify data to the server.

Odoo architecture



For any enterprise, the value of Odoo lies in its different modules. The role of the modules is to implement any business requirement. The server is the only necessary component to add modules.

A module is usually composed of data models, together with some initial data, views definitions (i.e. how data from specific data models should be displayed to the user), wizards (specialized screens to help the user for specific interactions), workflows definitions, and reports.

NB: An article will be soon published explaining the principal components of a module

Best of luck ^^