This repository contains the source code featured on the YouTube channel Exploring Odoo.
This branch is specifically dedicated to N2-related modules.
- N2 is the continuation of
Nuido, an original library that focused on creating node-based user interfaces for Odoo. - N2's current focus is solely on automation workflows.
If you find this useful, consider giving the repo a star ⭐️ — it helps keep the project visible and motivates continued work!
Nuido's architecture is built around a set of core components and their associated models, providing the structure for creating diagrams and workflows. These components work together to manage visual representation, data, and connections within the application.
classDiagram
class Graph {
}
class Node {
}
class Port {
}
class Edge {
}
Graph *-- "many" Node : contains
Graph *-- "many" Edge : contains
Node *-- "many" Port : contains
Edge --> Port : from
Edge --> Port : to
While N2 utilizes a similar backend, the client-side implementation is entirely new. This overhaul is characterized primarily by the introduction of the Command design pattern and a shift to Composition, moving away from an inheritance-based architecture.
classDiagram
class Command {
<<interface>>
}
class AddNodeCommand {
}
class RemoveNodeCommand {
}
class UpdateNodeCommand {
}
class CommandHistory {
}
class Graph {
}
class GraphController {
}
Command <|-- AddNodeCommand
Command <|-- RemoveNodeCommand
Command <|-- UpdateNodeCommand
CommandHistory o-- Command : invokes
Command ..> Graph : modifies
GraphController --> CommandHistory : uses
Due to its node-based nature, where nodes can be viewed as individual functions with defined inputs and outputs, N2 can also be used as a visual prototyping environment for coding concepts.
Even though the project’s main goal is automation workflows, this structural similarity allows developers to experiment with logic flows, prototype algorithms, and visualize function interactions — essentially turning N2 into a lightweight, visual code sketchpad.
As a side effect, this makes N2 surprisingly effective as a teaching and learning tool. Its visual approach helps illustrate programming logic, modular thinking, and data flow in a more intuitive way — perfectly aligning with the project’s broader vision of education, experimentation, and exploration within Odoo development.
This branch is NOT for total beginners.
- You should be comfortable with core Odoo frameworks such as the ORM, OWL, and QWeb.
- While the code itself avoids advanced techniques, the concepts presented in this branch can be overwhelming and confusing for someone new to Odoo development.
To properly use and understand this code, it is absolutely essential to watch the related video on the Exploring Odoo channel thoroughly.
- External Libraries: Information about external libraries and their required links are provided in the video description.
- Always check the video description and watch the video entirely to avoid common setup issues (e.g., missing Chart.js extensions).
Please read and understand these points before using the code.
- Do not use this code, repository, or any of its components in any live, production, mission-critical, or commercial environment.
- This project is developed and maintained solely for experimental, educational, and personal learning purposes.
- While this code is open-source under the MIT License, and the license may technically allow commercial use, deploying it in a production setting is strongly discouraged and counterproductive to the project's goal.
- Its use in commercial settings would be entirely at your own risk. Moreover, the pressure and demands resulting from production usage may unfortunately force the maintainers to stop or significantly slow down development. Please respect the project's educational focus to ensure its continued evolution.
- I am not responsible for any damage or harm resulting from the use of anything from this repo. Use it at your own risk.
- This repository serves as an archive for the videos. Bugs will not be fixed.
- Testing was minimal—only performed for the specific scenario of the related video.
- I do not provide support in any kind.
- The goal of this repo and the channel is to help you learn, not to provide you with a fully functional, production-ready module.
- Most of the client-side code is originally written in TypeScript.
- I currently do not plan to publish the TypeScript files.
- The transpiled JavaScript files are provided so you can still use and study the modules.
- There are no upgrade/update paths for these modules.
- If you want to use an updated version, you will most likely need to uninstall the previous version first or install it on a fresh Odoo instance.
Since this repository is maintained purely for archiving and proof-of-concept purposes:
- I am not accepting Pull Requests (PRs).
- You are more than welcome to open a discussion to share your thoughts, ideas, experiences, or difficulties regarding the modules.
- The best way to contribute and support the project is by giving the repository a star ⭐️. It's a quick action that helps keep the project visible, validates the effort put into the videos, and motivates continued work on new content and modules.
- If you are having trouble with the code and wish to ask a question, please do so politely and nicely, like a civil person.
- Cloning Recommended: Since this repository is actively and frequently updated to match the latest YouTube content, a direct
git cloneis the recommended method for obtaining and working with the code. - Forking Not Recommended: For most users, forking is not recommended. Forks create an independent copy that can quickly become outdated. Manually syncing your fork with this upstream repository would be more complicated than simply pulling changes to a direct clone.
- Best Practice: To ensure you always have the latest version of the code featured in the videos, use a direct clone and perform a regular
git pull.
