Skip to main content

Odoo Scaffolder

PyPI version Python versions Development Status License: MIT Downloads GitHub stars

A modern, interactive scaffolding tool for creating Odoo modules with best practices. Inspired by Next.js's beautiful CLI interface.

Current Status: Beta - Fully functional with ongoing improvements. Feedback and issue reports welcome!

Features

  • Interactive CLI: Beautiful terminal interface with arrow key navigation
  • Smart Defaults: Quick setup with sensible defaults or customize everything
  • Best Practices: Follows Odoo module structure conventions
  • Category Icons: Automatically downloads category-specific icons
  • Pre-commit Support: Optional pre-commit hooks with ruff, black, isort, pylint, and eslint
  • Flexible Structure: Choose what to include (tests, security, controllers, etc.)

Installation

From PyPI (once published)

pip install odoo-scaffolder

From Source

git clone https://github.com/a-abuzahra/odoo-scaffolder.git
cd odoo-scaffolder
pip install -e .

Usage

Simply run the command and follow the interactive prompts:

odoo-scaffolder

What You'll Be Asked

  1. Module Name: The technical name for your module (e.g., my_custom_module)
  2. Use Defaults?: Skip most questions with smart defaults
  3. Odoo Version: Choose between 19.0, 18.0, or 17.0
  4. Category: Select from Accounting, HR, Base, Inventory, Sales, PoS, Manufacturing, Services, or Website

If you choose not to use defaults, you'll also be asked about:

  • Demo data
  • Tests
  • Security files
  • Reports
  • Controllers
  • Data directory
  • Static/src directory (for JS/CSS assets)
  • Module icon
  • Pre-commit hooks

Module Structure

The scaffolder creates a standard Odoo module structure:

my_module/
├── __init__.py
├── __manifest__.py
├── models/
│   └── __init__.py
├── views/
├── security/                  # Optional
│   └── ir.model.access.csv
├── controllers/               # Optional
│   └── __init__.py
├── data/                      # Optional
├── demo/                      # Optional
├── tests/                     # Optional
│   └── __init__.py
├── reports/                   # Optional
│   └── __init__.py
├── static/
│   ├── description/          # Optional (with icon)
│   │   └── icon.png
│   └── src/                  # Optional (for JS/CSS)
└── .pre-commit-config.yaml   # Optional

Icons

The scaffolder includes bundled category-specific icons that are automatically copied to your module when you choose to include an icon. Icons are stored in the odoo_scaffolder/icons/ directory and are distributed with the package.

Defaults

When using defaults, the following are included:

  • ✅ Tests
  • ✅ Security files
  • ✅ Module icon
  • ✅ Pre-commit hooks
  • ❌ Demo data
  • ❌ Reports
  • ❌ Controllers
  • ❌ Data directory
  • ❌ Static/src directory

Pre-commit Hooks

When enabled, the scaffolder creates a .pre-commit-config.yaml with:

  • ruff: Fast Python linter
  • black: Code formatter
  • isort: Import sorter
  • pylint: Code analyzer
  • eslint: JavaScript linter

To use pre-commit hooks after scaffolding:

cd my_module
pip install pre-commit
pre-commit install

Requirements

  • Python 3.7+

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Author

Ammar Abu Zahra

Metadata

Release files for odoo-scaffolder 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for odoo-scaffolder 0.1.1
File Size Uploaded Provenance
odoo_scaffolder-0.1.1.tar.gz 149.3 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for odoo-scaffolder 0.1.1
File Interpreter ABI Platform
odoo_scaffolder-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 297.7 kB

Release files / odoo_scaffolder-0.1.1.tar.gz

Download URL odoo_scaffolder-0.1.1.tar.gz
Size 149.3 kB
Tags Source
SHA-256 checksum
How to use checksums
b6663845d9e936603d6a58f265b0579010c42ec586080cefd302ecdbf31fe5c5
BLAKE2b-256 checksum
How to use checksums
acad716049c48b69ec6ed142628fea7f4bc97001f20da3813b14677b47e30d73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 9, 2025.

Transparency log

Release files / odoo_scaffolder-0.1.1-py3-none-any.whl

Download URL odoo_scaffolder-0.1.1-py3-none-any.whl
Size 148.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
514db098b2b53d72ff274a4170626c41cf9d6459bd1f031ec34056adc5d85488
BLAKE2b-256 checksum
How to use checksums
24ac02e5c6914af78c0a678526ef6941f749b791ba36adae0b7c726881659b6a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 9, 2025.

Transparency log

Security for odoo-scaffolder 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for odoo_scaffolder-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 9, 2025.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page