Development Standards¶
Last Updated: February 2026
Module Development Standards¶
File Structure¶
Every custom module should follow this structure:
sr_module_name/
__init__.py
__manifest__.py
models/
__init__.py
main_model.py
views/
main_model_views.xml
security/
ir.model.access.csv
static/
src/
components/ # OWL JS components
scss/ # Stylesheets
description/
icon.png
data/ # Default data, sequences, etc.
wizard/ # Transient models for wizards
Manifest (__manifest__.py)¶
{
"name": "SR Module Name",
"version": "17.0.1.0.0",
"category": "Category",
"license": "LGPL-3",
"summary": "One line description",
"author": "Scott Recycling",
"website": "https://scottrecycling.com",
"depends": ["base", "other_module"],
"data": [
"security/ir.model.access.csv",
"views/main_model_views.xml",
],
"assets": {
"web.assets_backend": [
"sr_module_name/static/src/components/**/*",
],
},
"installable": True,
"application": False,
}
Naming Conventions¶
| Item | Convention | Example |
|---|---|---|
| Module directory | sr_ prefix, snake_case |
sr_inventory_processing |
| Model name | Dotted, lowercase | sr.inventory.batch |
| Model class | PascalCase | SrInventoryBatch |
| View XML ID | module.model_view_type |
sr_inventory.batch_form_view |
| Field names | snake_case | pickup_date |
| JS components | PascalCase | PickupBlastWidget |