Odoo is an open-source suite of business applications โ CRM, inventory, accounting, e-commerce, HR, manufacturing, and more โ built by Odoo S.A. and its community, that snap together into a full ERP system. It ranks #16 in trending tech at roughly 2.1% usage share. It's trending because small and medium businesses want one connected platform instead of a patchwork of disconnected SaaS tools, and Odoo offers a free Community edition alongside a paid Enterprise tier with hosting and support.
Odoo customization is done by writing Python modules whose models inherit from models.Model, with fields declared declaratively.
from odoo import models, fields, api
class LibraryBook(models.Model):
_name = "library.book"
_description = "Library Book"
name = fields.Char(string="Title", required=True)
author = fields.Char(string="Author")
available = fields.Boolean(string="Available", default=True)
borrower_id = fields.Many2one("res.partner", string="Borrowed By")
@api.depends("borrower_id")
def _compute_status(self):
for record in self:
record.available = not record.borrower_id
Odoo runs great in Docker for local development, using the official image plus a Postgres database.
# run a local Postgres database for Odoo
docker run -d --name odoo-db -e POSTGRES_PASSWORD=odoo -e POSTGRES_USER=odoo postgres:16
# run Odoo linked to that database
docker run -d --name odoo -p 8069:8069 --link odoo-db:db odoo:17
# then open http://localhost:8069 to create your first database