How to create a custom module in Magento 2

1.  Create the module directory structure

Inside the app/code directory of your Magento installation, create a directory for your module. For example, if your module is named “CustomModule”, create the following directory structure:

“app/code/Esparksinc/CustomModule”

Here Esparksinc is the vendor name.

2. Create the module configuration file

Inside the module directory, create the file module.xml inside the folder etc

etc/module.xml

 and define the module configuration. For example:

PHP
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Esparksinc_CustomModule" setup_version="1.0.0"/>
</config>

3. Create the module registration file.

Inside the module directory :

app/code/Esparksinc/CustomModule

 create the file registration.php and register your module. For example:

PHP
<?php
use Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(
    ComponentRegistrar::MODULE,
    'Esparksinc_CustomModule',
    __DIR__
);

4. Enable the module by executing the following command:

 php bin/magento module:enable Esparksinc_CustomModule

5. Run setup upgrade and compile.

php bin/magento setup:upgrade 

php bin/magento cache:flush