Contract-Model-Model-View (CMMV)
Building scalable and modular applications using contracts.
This repository serves as a centralized catalog of all modules and plugins available for CMMV (Contract-Model-Model-View), both official and community-created.
To list your module in the catalog, you need to create a JSON file in the _data directory with your module's name. For example: _data/your-module.json
{
"name": "@cmmv/your-module",
"description": "Description of your module",
"category": "Category",
"dependencies": ["@cmmv/your-module"],
"documentation": "https://cmmv.io/docs/modules/your-module",
"author": "Your Name",
"github": "https://github.com/your-username/your-module",
"npm": "https://www.npmjs.com/package/@cmmv/your-module",
"license": "MIT",
"tags": ["tag1", "tag2"],
"beta": false,
"experimental": false,
"official": true,
"plugin": false,
"submodules": [
{
"name": "Submodule 1",
"installed": false,
"description": "Description of the submodule",
"packageName": "package-name"
}
],
"moduleImport": {
"import": ["ModuleName", "ProviderName"],
"path": "@cmmv/your-module",
"modules": ["ModuleName"],
"providers": ["ProviderName"]
}
}name: NPM package namedescription: Module descriptioncategory: Module categorydependencies: List of dependenciesdocumentation: Link to documentationauthor: Author namegithub: GitHub repository linknpm: NPM package linklicense: Module licensetags: Array of tags for categorization
experimental: Indicates if the module is in early development stage, not recommended for production (default: false)beta: Indicates if the module is in beta testing phase (default: false)official: Indicates if the module is officially maintained by the CMMV team (default: false)plugin: Indicates if it's a plugin rather than a core module (default: false)submodules: Array of available submodulesmoduleImport: Configuration for how CMMV should inject the module
Submodules are optional and allow you to define different implementations or adapters for your module. For example, the Repository module can have submodules for different databases:
"submodules": [
{
"name": "MySQL",
"installed": false,
"description": "MySQL adapter for Repository",
"packageName": "mysql2"
},
{
"name": "PostgreSQL",
"installed": false,
"description": "PostgreSQL adapter for Repository",
"packageName": "pg"
}
]The moduleImport field defines how CMMV should inject the module into the project:
"moduleImport": {
"import": ["ModuleName", "ProviderName"],
"path": "@cmmv/your-module",
"modules": ["ModuleName"],
"providers": ["ProviderName"]
}import: Names of modules/providers to be importedpath: NPM package pathmodules: List of modules to be registeredproviders: List of providers to be registered
- Fork this repository
- Create a JSON file for your module in the
_datadirectory - Follow the format specified above
- Submit a Pull Request with your changes
- Authentication
- Database
- Integration
- Performance
- Security
- Storage
- UI/UX
- Utils
- Themes
- Plugins
- CMS
- Content Management
- System
- Development
- Data Storage
- Architecture
- Data Processing
- Documentation
- Communication
For more information about creating modules for CMMV, please refer to our official documentation.