{"id":26357939,"url":"https://github.com/mehedimk/djangodoo","last_synced_at":"2025-03-16T14:18:31.093Z","repository":{"id":270419146,"uuid":"910319644","full_name":"MehediMK/djangodoo","owner":"MehediMK","description":"An open-source DjangoDoo Modular Multipurpose Application Framework, streamline development, simplify integrations, and build tailored, open-source solutions for your business needs.","archived":false,"fork":false,"pushed_at":"2025-02-21T13:06:40.000Z","size":62,"stargazers_count":3,"open_issues_count":38,"forks_count":5,"subscribers_count":1,"default_branch":"1.0","last_synced_at":"2025-02-21T14:19:38.030Z","etag":null,"topics":["business","django","djangodoo","erp","odoo","website"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MehediMK.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-31T01:12:49.000Z","updated_at":"2025-02-21T13:06:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"236f3451-a2b3-4d57-ba2f-f642013eb068","html_url":"https://github.com/MehediMK/djangodoo","commit_stats":null,"previous_names":["mehedimk/djangodoo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MehediMK%2Fdjangodoo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MehediMK%2Fdjangodoo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MehediMK%2Fdjangodoo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MehediMK%2Fdjangodoo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MehediMK","download_url":"https://codeload.github.com/MehediMK/djangodoo/tar.gz/refs/heads/1.0","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243878466,"owners_count":20362433,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["business","django","djangodoo","erp","odoo","website"],"created_at":"2025-03-16T14:18:30.382Z","updated_at":"2025-03-16T14:18:31.084Z","avatar_url":"https://github.com/MehediMK.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DjangoDoo: A Modular, Versatile Application Framework\n\n## About the Project\n\nDjangoDoo 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.\n\nThis project aims to provide an efficient and flexible solution for developers looking to build complex applications with ease.\n\n### Key Features\n- **Dynamic Module Loading**: Modules can be enabled or disabled dynamically.\n- **Independent Modules**: Each module has its own models, views, templates, migrations, and configurations.\n- **Module Dependencies**: Modules can define dependencies on other modules.\n- **Centralized Module Registry**: All modules are registered and managed from a central location.\n- **Extensible Admin Interface**: Manage modules directly from the Django admin panel.\n- **Custom Reporting and Logging**: Modules can implement custom reporting and logging mechanisms.\n- **Version Control for Modules**: Track and manage the version of each module.\n\n---\n\n## Project Structure\n\n```\ndjangodoo/\n├── djangodoo/               # Core app for managing modules\n│   ├── admin.py             # Admin interface for modules\n│   ├── models.py            # Module registry model\n│   ├── management/          # Custom management commands\n│   │   └── commands/\n│   │       ├── load_modules.py\n│   │       └── apply_module_migrations.py\n├── modules/                 # Folder containing all modules\n│   ├── sales/               # Example module: Sales\n│   │   ├── migrations/      # Independent migrations for this module\n│   │   ├── admin.py         # Admin for register models into admin dashboard\n│   │   ├── apps.py          # Apps for module information (name, version, icon, etc)\n│   │   ├── models.py        # Models for this module\n│   │   ├── views.py         # Views for this module\n│   │   ├── templates/       # Templates for this module\n│   │   └── __init__.py      # Module configuration\n│   ├── inventory/           # Example module: Inventory\n├── templates/               # Global templates\n├── manage.py                # Django's CLI entry point\n├── requirements.txt         # Python dependencies\n└── README.md                # Project documentation\n```\n\n---\n\n## Setup Instructions\n\nFollow the steps below to set up the project locally:\n\n### Prerequisites\n- Python 3.10+\n- Django 4.x\n- A supported database (e.g., SQLite, PostgreSQL)\n\n### Step 1: Clone the Repository\n\n```bash\ngit clone https://github.com/MehediMK/djangodoo.git\ncd djangodoo\n```\n\n### Step 2: Create and Activate a Virtual Environment\n\n```bash\npython -m venv venv # On Unix or MacOS\nsource venv/bin/activate # On Windows: venv\\Scripts\\activate\n```\n\n### Step 3: Install Dependencies\n\n```bash\npip install -r requirements.txt\n```\n### step 4: Setup Configuration in config.py\n```bash\ncopy \"config.py sample\" config.py\n```\n### Step 5: Apply Initial Migrations\n\nRun migrations for the core system:\n\n```bash\npython manage.py migrate\n```\n\n### Step 6: Register and Enable Modules\n\n1. Place your modules inside the `modules/` directory.\n2. Use the `load_modules` management command to register modules:\n\n   ```bash\n   python manage.py load_modules\n   ```\n\n3. Enable desired modules from the Django admin panel (Core \u003e Modules).\n\n### Step 7: Apply Module Migrations\n\nRun migrations for all enabled modules:\n\n```bash\npython manage.py apply_module_migrations\n```\n\n### Step 8: Start the Development Server\n\n```bash\npython manage.py runserver\n```\n\nVisit `http://127.0.0.1:8000` in your browser.\n\n---\n\n## Usage\n\n### Adding a New Module\n\n1. Create a new folder in the `modules/` directory, e.g., `modules/new_module/`.\n2. Define your module's configuration in `apps.py`:\n\n   ```python\n   class ModuleConfig:\n       name = \"New Module\"\n       # Add custom fields\n       description = \"Description of the new module\"\n       dependencies = []  # List of module names this module depends on\n       version = '1.0.0'\n       # icon Path must be in your module static directory with module name\n       icon = \"module_name/icon.png\"  \n   ```\n\n3. Add your models, views, templates, and migrations in the new module folder.\n4. Register the module using the `load_modules` command.\n\n### Managing Modules\n\n- **Enable/Disable Modules**: Use the admin panel or update the `enabled` field in the `Module` model directly.\n- **Verify Module Dependencies**: Ensure all dependencies are enabled before activating a module.\n- **Apply Module Migrations**: Use the `apply_module_migrations` command.\n\n---\n\n## Contributing\n\nContributions are welcome! Please follow these steps to contribute [CONTRIBUTING](CONTRIBUTING.md):\n\n1. Fork the repository.\n2. Create a feature branch (`git checkout -b feature-name`).\n3. Commit your changes (`git commit -m \"Add feature\"`).\n4. Open a pull request from parent branch (`git pull origin parent-branch`).\n5. Push to the branch (`git push origin feature-name`).\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmehedimk%2Fdjangodoo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmehedimk%2Fdjangodoo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmehedimk%2Fdjangodoo/lists"}