# Core API Installation

# Folder & Main Class creation

  1. Pick a name for your module (lower_case)
  2. Go to /modules and create a folder with the name of your module
  3. Create a Js file main.js inside the new folder /modules/module_example/main.js
  4. Create your Module class by extending the ModuleBase class
const ModuleBase = require("../ModuleBase");

class Module_example extends ModuleBase {

	async moduleIsEnabled(req, res) {
		if (req.settings.module_example) {
			return req.settings.module_example.value.enabled;
		}
		return true;
	};

	constructor(req, res) {
		super(req, res);
	}

	cartTypes = [
		"CUSTOM_ITEM_TYPE",
	];

	static loadModels(models) {
		// models["Product"] = require("./models/Product");
	}

	static loadControllers(controllers) {
		// controllers["ProductsController"] = require("./controllers/ProductsController");
	}

	static loadExcludedApiRoutesFromAuth(routes) {
		// routes.push("/api/all_products");
	}

	static loadApiRoutes(routes) { 
		// routes.push({ resource: ["product", "products"], model: "Product", middlewares: [isCoreAPIPermitted], controller: "ProductsController" });
	}

	static loadWebRoutes(routes) {
		// routes.push({ method: "get", route: "/product/:productId", function: async(req, res) => {} });
	}
}

module.exports = Module_example;

# Importing the Module

Example of loading the module_example Module in /modules/modules.json:

[
	{
		"name": "module_example",
		"description": "Examples management"
	}
]