DjangoDoo is an open-source framework designed to be a flexible platform for building diverse applications, inspired by the modular architecture of Odoo. Built on the Django framework, DjangoDoo enables developers to create scalable, extensible, and maintainable applications through a modular design. Each module in DjangoDoo operates independently, with its own models, views, templates, and configurations. Modules can be dynamically enabled or disabled without affecting the core system.
This project aims to provide an efficient and flexible solution for developers looking to build complex applications with ease.
- 📦 Dynamic Module Loading: Enable or disable modules without restarting the server.
- 🧩 Independent Modules: Models, views, templates, and configurations are isolated per module.
- 🔁 Module Dependencies: Define dependencies to ensure module integrity.
- 🧮 Centralized Module Registry: Manage modules from a single point.
- 🧑💼 Extensible Admin Interface: Manage and activate modules via Django admin.
- 📊 Custom Reporting and Logging: Extend functionality per module.
- 🕒 Version Control for Modules: Track each module version easily.
djangodoo/
├── djangodoo/ # Core app for managing modules
│ ├── admin.py
│ ├── models.py
│ ├── management/
│ │ └── commands/
│ │ ├── load_modules.py
│ │ └── apply_module_migrations.py
├── modules/
│ ├── sales/
│ ├── inventory/
├── templates/
├── manage.py
├── requirements.txt
└── README.md
- Python 3.10+
- Django 4.x
- A supported database (e.g., SQLite, PostgreSQL)
git clone https://github.com/MehediMK/djangodoo.git
cd djangodoo
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
# Copy config
cp "config.py sample" config.py
# Run base migrations
python manage.py migrate
# Load modules from /modules
python manage.py load_modules
# Enable modules in Django admin (Core > Modules)
# Run module migrations
python manage.py apply_module_migrations
# Start server
python manage.py runserver
Then open: http://127.0.0.1:8000
- Create a folder in
modules/
, e.g.,modules/new_module/
- Add
apps.py
with:
class ModuleConfig:
name = "New Module"
description = "Describe your module"
dependencies = []
version = '1.0.0'
icon = "module_name/icon.png"
- Add models, views, templates, migrations.
- Register with:
python manage.py load_modules
- Enable/Disable via admin panel.
- Run:
python manage.py apply_module_migrations
Contributions are welcome! Please follow these steps:
- Fork the repo
- Create a branch:
git checkout -b feature-name
- Make changes & commit:
git commit -m "Description"
- Push:
git push origin feature-name
- Open a Pull Request
More details in CONTRIBUTING.md
This project is licensed under the MIT License.
- GitHub Issues: Create one
- Author: MehediMK on LinkedIn