🚀 Hajjaj.Pro App Builder

Build Custom Odoo Applications Without Writing Code

Contact Us

No Code Required

Instant Activation

🎯

12 Field Types

📊

Auto Views

📖 Overview

The Hajjaj.Pro App Builder is a powerful Odoo 18 addon that empowers non-developers to create custom data-entry applications directly within Odoo, without writing any code. Build complete business applications with models, fields, views, and menus through an intuitive visual interface.

💡 Perfect For:

  • Business analysts who need custom data tracking
  • Department managers wanting to digitize processes
  • Teams that need quick prototypes before full development
  • Small businesses without dedicated developers

✨ Key Features

🎨 Visual Model Builder

Create data models through an intuitive interface. No SQL or Python knowledge required.

📊 Automatic View Generation

List, form, and kanban views are automatically created with proper layouts and widgets.

🔄 12 Field Types

Char, Text, HTML, Integer, Float, Boolean, Date, Datetime, Selection, Many2one, One2many, Many2many

🎯 Smart Widgets

21 widget options including monetary, daterange, tags, badges, progress bars, and more.

💬 Chatter Integration

Automatic messaging and activity tracking for all created models.

📈 Workflow Support

Built-in state management with 4 standard transitions and tracking.

🔄 Model Updates

Modify models without losing data. Add/remove fields safely with validation.

📤 Export/Import

Export module definitions to JSON and import them to other instances.

⚡ Instant Activation

Models become usable immediately without server restart.

📁 Organized Structure

Group related models into business apps for better organization.

🔍 Editable List Views

Quick inline editing with editable="bottom" on all list views.

🎴 Kanban Views

Beautiful card-based kanban views with field labels and state colors.

📥 Installation

  1. Copy Module: Place the Hajjaj.Pro_app_builder folder in your Odoo addons directory
    /path/to/odoo/addons/Hajjaj.Pro_app_builder
  2. Update Apps List: Go to Settings → Apps → Update Apps List
  3. Install: Search for "Hajjaj.Pro App Builder" and click Install
  4. Start Building: Navigate to App Builder menu
✓ Compatible with: Odoo 18.0 | Python 3.10+ | Dependencies: base, web, mail

🎯 How to Use

Step 1: Create a Business App

  1. Navigate to App Builder → Builder Modules
  2. Click Create
  3. Enter:
    • App Name: "Customer Management" (human-readable)
    • Technical Name: "customer_mgmt" (lowercase, underscores)
    • Description: What your app does
  4. Save the module

Step 2: Add Models

  1. In the Builder Module form, go to the Models tab
  2. Add a new model:
    • Model Name: "Customer Order" (display name)
    • Technical Name: "customer_order" (identifier)
    • Description: What the model represents
  3. Save the model

Step 3: Define Fields

  1. Open the Builder Model
  2. In the Fields tab, add fields inline or open field form:
    • Field Label: "Customer Name"
    • Technical Name: "customer_name"
    • Field Type: Select from 12 types
    • Widget: Choose from 21 widget options
    • Required/Readonly: Check as needed
    • Tracking: Enable for chatter tracking
  3. For Selection fields: Enter values as key:Label, one per line
  4. For Relational fields: Select the target model

Step 4: Activate Your App

  1. Go back to the Builder Module
  2. Click Activate App button
  3. The system will:
    • Create all models with x_builder_ prefix
    • Generate kanban, list, and form views
    • Create window actions and server actions
    • Add menu items under "Builder Apps"
    • Enable chatter and activities

Step 5: Use Your App

✓ Your app is ready!

  1. Navigate to App Builder → Builder Apps → [Your App Name]
  2. Click on any model to start creating records
  3. All standard Odoo features work: search, filters, grouping, export, etc.
  4. Use chatter to log notes and schedule activities
  5. Track changes with field-level tracking

🔤 Field Types & Widgets

Supported Field Types

Field Type Best For Example Use Cases
char Short text, names, codes Customer Name, Product Code, Email
text Long text, descriptions Product Description, Notes, Comments
html Rich formatted text Email Body, Rich Descriptions
integer Whole numbers Quantity, Age, Count, Stock Level
float Decimals, prices Price, Weight, Percentage, Amount
boolean Yes/No, True/False Active, Is Available, Enabled
date Date only Birth Date, Due Date, Start Date
datetime Date and time Order Time, Last Modified, Meeting Time
selection Dropdown choices Status, Priority, Category, Type
many2one Link to one record Customer, Product, Assigned User
one2many Reverse link (lines) Order Lines, Tasks, Attachments
many2many Link to many records Tags, Categories, Skills, Teams

Available Widgets (21 Options)

📛 badge

Colored badge display for selection/char fields

🔘 boolean_toggle

Toggle switch for boolean fields

📧 email

Email validation and mailto link

📞 phone

Phone formatting and click-to-call

🔗 url

Clickable URL links

🖼️ image

Image preview and upload

💰 monetary

Currency formatting (auto-creates currency_id)

📊 percentage

Percentage display with % symbol

⭐ priority

Star rating for selection fields

📈 progress

Progress bar for numeric fields

🎨 color

Color picker widget

🏷️ many2many_tags

Tag-style display for many2many

📊 statusbar

Status bar for selection workflow

🔘 radio

Radio buttons for selection

📝 html

Rich text editor

⏱️ float_time

Duration in hours:minutes

📅 daterange

Date range picker (auto-creates end date)

↕️ handle

Drag handle for sorting

💡 Smart Auto-Creation:

  • Monetary Widget: Automatically creates currency_id field
  • Daterange Widget: Automatically creates corresponding end date field
  • State Field: Automatically added with 4 transitions and tracking

💼 Real-World Examples

Example 1: Task Manager

Fields Configuration:

Field Label Technical Name Type Widget Required Options
Task Name name char - -
Description description text - -
Due Date due_date date - -
Priority priority selection priority low:Low | medium:Medium | high:High | urgent:Urgent
Status status selection statusbar new:New | in_progress:In Progress | done:Done | cancelled:Cancelled - Tracking: Yes
Assigned To assigned_to many2one - Related Model: res.users

✓ Result: Full task management system with status workflow and user assignments

Example 2: Customer CRM

Model 1: Customer

Field Label Technical Name Type Widget Required
Customer Name name char -
Email email char email
Phone phone char phone
Address address text -
Active active boolean boolean_toggle
Registration Date registration_date date -
Customer Type customer_type selection badge

Selection values for Customer Type: individual:Individual | company:Company

Model 2: Customer Order

Field Label Technical Name Type Widget Required Options
Order Number order_number char - -
Customer customer_id many2one - Related: x_builder_customer
Order Date order_date date - -
Amount amount float monetary Auto-creates currency_id
Status status selection statusbar draft:Draft | confirmed:Confirmed | delivered:Delivered | cancelled:Cancelled - Tracking: Yes
Notes notes text - -

✓ Result: Complete CRM with customers and orders, linked relationships

Example 3: Inventory System

Product Model Fields:

Field Label Technical Name Type Widget Required Notes
Product Name name char - -
SKU sku char - Stock Keeping Unit
Description description html - Rich text description
Category category selection badge electronics | furniture | supplies | other
Unit Price unit_price float monetary -
Quantity quantity integer - Current stock level
Reorder Level reorder_level integer - Minimum stock threshold
Active active boolean boolean_toggle -

✓ Result: Product catalog with stock tracking and HTML descriptions

Example 4: Event Management

Event Model Fields:

Field Label Technical Name Type Widget Required Configuration
Event Name name char - -
Description description html html Rich text editor
Event Date event_date datetime - Date and time
Location location char - -
Max Attendees max_attendees integer - Capacity limit
Registration Progress progress integer progress Visual progress bar (0-100)
Tags tag_ids many2many many2many_tags Related: x_builder_tag
Status status selection statusbar planned | open | closed | completed

✓ Result: Event management with progress tracking and tags

💡 Tips & Best Practices

✅ Do's

  • Use descriptive names for apps and models
  • Use lowercase with underscores for technical names
  • Test with a few fields before creating complex models
  • Enable tracking on important fields
  • Use appropriate widgets for better UX
  • Export modules as JSON for backup
  • Document your models in the description field
  • Start simple and iterate

❌ Don'ts

  • ❌ Don't use spaces or special characters in technical names
  • ❌ Don't delete active modules without deactivating first
  • ❌ Don't start technical names with numbers
  • ❌ Don't make too many fields required
  • ❌ Don't forget to backup before major changes

🎯 Pro Tips

Plan First

Sketch your models and relationships on paper before building

Use Widgets

Leverage widgets for better user experience (monetary, daterange, tags)

Export Often

Use Export to JSON feature to backup your configurations

Test Early

Activate and test with sample data immediately

Enable Tracking

Use field tracking for audit trails on important fields

Iterate

Use Update Model feature to add/remove fields without data loss

🔧 Common Patterns

Status Workflow Pattern

status - selection - required - widget: statusbar - tracking: yes draft:Draft active:Active done:Done cancelled:Cancelled

User Assignment Pattern

assigned_to - many2one → res.users assigned_date - date

Date Range Pattern

start_date - date - required - widget: daterange (date_end auto-created)

Contact Info Pattern

name - char - required email - char - widget: email phone - char - widget: phone

📤 Export & Import

Export Module

  1. Open any Builder Module
  2. Click Export to JSON button
  3. JSON file downloads automatically with complete module definition
  4. Includes: models, fields, widgets, selections, relationships

Import Module

  1. Open a Builder Module (or create new)
  2. Click Import from JSON button
  3. Choose import mode:
    • Create New Module: Import as brand new module
    • Replace Existing Module: Replace current module (must be draft)
  4. Select JSON file and click Import
  5. Module opens automatically with all content
⚠️ Important:
  • Deactivate modules before importing/replacing
  • Relational fields require target models to exist
  • Export regularly as backup

🔧 Technical Details

Architecture

The addon uses Odoo's meta-model system to dynamically create database objects:

Component Creates Purpose
Hajjaj.Pro.builder.module ir.ui.menu Business app container
Hajjaj.Pro.builder.model ir.model Model definition
ir.ui.view (kanban, list, form) Automatic view generation
ir.actions.act_window Window actions
ir.actions.server (4x) State transition buttons
Hajjaj.Pro.builder.field ir.model.fields Field definitions

Naming Conventions

Type Prefix Example
Models x_builder_ x_builder_customer
Fields x_ x_customer_name
Views x_builder_ x_builder_customer.kanban
Actions x_builder_ x_builder_customer_action

Compatibility

  • Odoo Version: 18.0
  • Python: 3.10+
  • Dependencies: base, web, mail
  • License: LGPL-3

❓ Frequently Asked Questions

Can I modify models after activation?

Yes! Use the Update Model button. The system will add new fields, update existing ones, and safely remove unused fields without losing data.

What happens to my data if I deactivate?

Deactivation removes the models but keeps the Builder Module configuration. You can reactivate later. However, all data in the models will be lost.

Can I create computed fields?

Not yet. This version focuses on basic fields. Computed fields require Python code.

Can I customize the views?

Generated views are automatic. For custom layouts, you'll need to edit the XML views in developer mode or create a custom module.

How do I backup my work?

Use the Export to JSON feature to save module definitions. Also backup your Odoo database regularly.

Can I share modules with other Odoo instances?

Yes! Export to JSON and import on the target instance. Ensure dependencies (related models) exist.

💬 Support & Resources

Before Requesting Support:

  • Check the documentation and examples
  • Enable developer mode to see technical details
  • Review Odoo server logs
  • Try with a simple test case
  • Verify Odoo 18 compatibility

Hajjaj.Pro App Builder

Version 18.0.1.0.0 | License: LGPL-3

Developed by Hajjaj.Pro | For Odoo 18.0

Build powerful custom applications without writing code