## Adding a module to the registry
In order to add a module to your registry, go to the Module Registry screen and click on “CREATE NEW MODULE” in the top right. Only organization administrators are authorized to create new modules.
First, you must enter the general details for your module:
* A name for your module - This can be any string of your choice.
* The provider the module belongs to - This too can be any string of your choice.
These two choices will affect how your module is used (see 'Using a module in your code'). The combination of name and provider must be unique within your organization’s modules.
The description will be shown to members of your team when they browse the module registry. It is a useful way of summarizing what the module does and when it should be used.
Next, you must connect to the VCS provider, where your module’s source code is stored.
Click on the VCS provider you'd like to use. After you've authorized env zero to access your repositories, select a repository from the dropdown menu and enter the folder where module files are stored (defaults to root folder).
That’s it! Click “Create” to save your work and create the new module.
## Module versioning
In order to use a module, it must be versioned using a SemVer format (e.g. `1.0.0`). The versions must be applied to your source repository as [Git tags](https://git-scm.com/book/en/v2/Git-Basics-Tagging).
### Versioning modules for mono-repo
When using a mono-repo for managing several modules, a team might come across the need to tag and manage versions for each module individually.
In order to do that, you have to assign a tag prefix to identify a specific module's version in env zero.
For example, to tag a module named `module1`, we may assign the prefix `m1`.\
When we'd use the tags `m1/1.0.0`, `m1/1.2.4`, the versions for the module in env zero will be `1.0.0` and `1.2.4`
The delimiter is a single dash / and there is no need to write it in the Tag Prefix input.
## The Module Page
You can get to the Module page by clicking on a module from the Modules List.
Here you can see the details of your Module.
The Versions dropdown menu at the top right allows you to switch between the different versions of your module. Versions are linked to [Git tags](https://git-scm.com/book/en/v2/Git-Basics-Tagging) in your repository, which match the [semantic versioning](https://semver.org/) schema.
The **Readme tab** will show the contents of the `README.md` in your repository.
The **Instructions tab** will include instructions on how the module can be used in your Terraform code.
## Suggested Blog Content
[Terraform Modules Guide](https://www.env0.com/blog/terraform-modules)
[Terraform Plan Examples](https://www.env0.com/blog/terraform-plan)
[Managing Terraform Variable Hierarchy](https://www.env0.com/blog/managing-terraform-variable-hierarchy)
[ Manage Terraform Remote State with a Remote Backend](https://www.env0.com/blog/terraform-remote-state-using-a-remote-backend)