<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Ibrahim abo eita</title>
    <description>The latest articles on Forem by Ibrahim abo eita (@ibrahim99035).</description>
    <link>https://forem.com/ibrahim99035</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F566247%2Fcb057c4a-cd43-40ea-a55a-623d3548cbfd.jpeg</url>
      <title>Forem: Ibrahim abo eita</title>
      <link>https://forem.com/ibrahim99035</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ibrahim99035"/>
    <language>en</language>
    <item>
      <title>Odoo Fundamentals</title>
      <dc:creator>Ibrahim abo eita</dc:creator>
      <pubDate>Mon, 19 May 2025 06:31:08 +0000</pubDate>
      <link>https://forem.com/ibrahim99035/odoo-fundamentals-558l</link>
      <guid>https://forem.com/ibrahim99035/odoo-fundamentals-558l</guid>
      <description>&lt;h2&gt;
  
  
  What is Odoo in simple points:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqpsx7qg6mxcwiq79vv53.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqpsx7qg6mxcwiq79vv53.png" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open-source ERP platform that provides a suit for business applications.&lt;/li&gt;
&lt;li&gt;It helps companies to manage their operations.&lt;/li&gt;
&lt;li&gt;It runs entirely on webserver and has strong modular architecture. &lt;/li&gt;
&lt;li&gt;It uses Python for the backend 🐍, PostgreSQL for the database 🐘, modern JavaScript library (called OWL) for frontend 🦉, and XML (Mainly) &amp;amp; CSV (security) for data.&lt;/li&gt;
&lt;li&gt;Fully Customizable.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9p7mat0miying9gsrwgh.png" alt="Image description" width="666" height="374"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Odoo Object Relational Model:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Odoo has a strong ORM that automatically interact with the database without writing raw SQL.&lt;/li&gt;
&lt;li&gt;It performs automatic validation for fields.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Odoo modular system:
&lt;/h2&gt;

&lt;p&gt;In Odoo, each functional area is a separate installable module that can depend on other modules, and we can activate or remove what we want to extend the functionality without modifying core code.&lt;/p&gt;

&lt;p&gt;Then, the key idea about Odoo is everything is a module, and we can install or uninstall apps like pieces of Lego.&lt;/p&gt;

&lt;p&gt;Every app (module or addon) is a python module that has database models, views, business logic, security rules, web controllers &amp;amp; endpoints, reports &amp;amp; actions,..etc.&lt;/p&gt;

&lt;p&gt;This modular system makes Odoo a giant collection of modules that interact together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Odoo Web Library OWL 🦉:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;OWL is a Modern JS framework for Odoo's UI similar to react but simpler, lighter, and made specifically for Odoo.&lt;/li&gt;
&lt;li&gt;Shortly it is a light-weight reactive JS framework.&lt;/li&gt;
&lt;li&gt;Unlike react, the component is always a class and never a function.&lt;/li&gt;
&lt;li&gt;OWL files are pure HTML documents and JS scripts (no JSX).&lt;/li&gt;
&lt;li&gt;It uses virtual DOM and reactive state for automatic update.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Odoo pre-requirements:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;In simple terms, Python - PostgreSQL - XML - JavaScript - Git - Bach &lt;/li&gt;
&lt;li&gt;If you tried Python backend development using Flask, FastAPI, or Django you would not face a problem with Odoo backend.&lt;/li&gt;
&lt;li&gt;If you tried React as a modern JS framework, OWL would be much easier.&lt;/li&gt;
&lt;li&gt;You need a solid knowledge in git and GitHub for cloning the base, push your work, and deployment.&lt;/li&gt;
&lt;li&gt;It would be great to learn about XML, and CSV files.&lt;/li&gt;
&lt;li&gt;For tools, you would need an IDE like PyCharm, and you can use Visual Studio Code, you would need to install git bash, and you need to install PostgreSQL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fysxd09rii2603k41nzz6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fysxd09rii2603k41nzz6.png" alt="Image description" width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Odoo Cloning:
&lt;/h2&gt;

&lt;p&gt;The GitHub repository for Odoo is &lt;a href="https://github.com/odoo/odoo" rel="noopener noreferrer"&gt;&lt;code&gt;github.com/odoo/odoo&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cloning Odoo:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://www.github.com/odoo/odoo &lt;span class="nt"&gt;--depth&lt;/span&gt; 1 &lt;span class="nt"&gt;--branch&lt;/span&gt; 18.0 &lt;span class="nt"&gt;--single-branch&lt;/span&gt; odoo_18
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--depth 1&lt;/code&gt;: is called shallow cloning that only downloads the latest snapshot of the selected branch without full commit history.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--branch 18.0&lt;/code&gt;: cloning the branch named 18.0 and it is the current version of Odoo.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--single-branch&lt;/code&gt;: clones only the branch we specified.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;odoo_18&lt;/code&gt;: the name of local folder we are cloning the branch in.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The next step is to install all packages using the command &lt;code&gt;pip install -r requirements.txt&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Odoo configuration file &lt;code&gt;odoo.conf&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;In the root directory of the repo, create a file and name it &lt;code&gt;odoo.conf&lt;/code&gt; to add option.&lt;/p&gt;

&lt;p&gt;These options could be database configurations, addon paths, admin passwords, and more.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;[&lt;span class="n"&gt;options&lt;/span&gt;]
&lt;span class="n"&gt;addons_path&lt;/span&gt; = {&lt;span class="n"&gt;absolute_path&lt;/span&gt;}\&lt;span class="n"&gt;odoo18&lt;/span&gt;\&lt;span class="n"&gt;addons&lt;/span&gt;,
          {&lt;span class="n"&gt;absolute_path&lt;/span&gt;}\&lt;span class="n"&gt;odoo18&lt;/span&gt;\&lt;span class="n"&gt;odoo&lt;/span&gt;\&lt;span class="n"&gt;addons&lt;/span&gt;,

&lt;span class="n"&gt;db_user&lt;/span&gt; = &lt;span class="n"&gt;your_user&lt;/span&gt;
&lt;span class="n"&gt;db_password&lt;/span&gt; = &lt;span class="n"&gt;your_password&lt;/span&gt;

&lt;span class="n"&gt;admin_passwd&lt;/span&gt; = &lt;span class="n"&gt;your_admin_pass&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After doing these steps you could easily start the server by running the command &lt;code&gt;python odoo-main -c odoo.conf&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2zh4o6vy5he4rshqyzu.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2zh4o6vy5he4rshqyzu.JPG" alt="Image description" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You must activate developer mode by going to the path &lt;code&gt;localhost:8069/odoo/settings&lt;/code&gt;, then scroll down to &lt;code&gt;Developer Tools&lt;/code&gt; section and click on &lt;code&gt;Activate the developer mode&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsin46evsc67kgbpkzhdt.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsin46evsc67kgbpkzhdt.JPG" alt="Image description" width="434" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Database Manager:
&lt;/h2&gt;

&lt;p&gt;Built-in tool used to create, duplicate, back up, restore, delete, and manage Odoo databases directly from web browser.&lt;/p&gt;

&lt;p&gt;Accessed via: &lt;code&gt;/web/database/manager/&lt;/code&gt;&lt;br&gt;
🆕 Create a new database&lt;br&gt;
📂 List existing databases&lt;br&gt;
🔁 Duplicate database&lt;br&gt;
📦 Backup database&lt;br&gt;
♻️ Restore database&lt;br&gt;
❌ Delete database&lt;br&gt;
🔒 Password protection&lt;/p&gt;

&lt;p&gt;Admin/master password is needed to access or manage databases&lt;br&gt;
Set via odoo.conf: &lt;code&gt;admin_passwd = yourpassword&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps to start your new Odoo app:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;create a new directory in &lt;code&gt;{root}/odoo&lt;/code&gt; in your local repository.&lt;/li&gt;
&lt;li&gt;add the absolute path of the new directory as an &lt;code&gt;addon_path&lt;/code&gt; in odoo.conf.&lt;/li&gt;
&lt;li&gt;create an &lt;strong&gt;init&lt;/strong&gt;.py file within it as it is modular packages.&lt;/li&gt;
&lt;li&gt;inside this directory (optionally named &lt;code&gt;custome_addons&lt;/code&gt;) you can create all the new apps, so create a directory for your new app.&lt;/li&gt;
&lt;li&gt;we have 2 important files to create inside app's directory &lt;code&gt;__init__.py&lt;/code&gt; to address app parts, and &lt;code&gt;__manifest__.py&lt;/code&gt; to declare it.&lt;/li&gt;
&lt;li&gt;create a &lt;code&gt;models/&lt;/code&gt; directory and create an &lt;code&gt;__init__.py&lt;/code&gt; within it to address all the models.&lt;/li&gt;
&lt;li&gt;create a &lt;code&gt;controllers/&lt;/code&gt; directory and create an &lt;code&gt;__init__.py&lt;/code&gt; within it to address all the controllers.&lt;/li&gt;
&lt;li&gt;create a &lt;code&gt;views/&lt;/code&gt; for XML files.&lt;/li&gt;
&lt;li&gt;restart the server and update apps list from the web UI or you can run &lt;code&gt;python odoo-bin -c odoo.conf -u {app name}&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We may talk in depth about app development in another article.&lt;/p&gt;

</description>
      <category>odoo</category>
      <category>python</category>
      <category>postgres</category>
    </item>
  </channel>
</rss>
