Project Creator Guide

This guide shows you how to create projects using the CLC `project create` command.


Hazelcast CLC provides a solution that simplifies the creation of Hazelcast projects. The created projects do not require further configuration.

You can find the templates in the Hazelcast Templates GitHub Account.

Create a Cloud Cluster

For this guide, let’s create a Hazelcast Cloud Cluster. First, sign in to the Cloud console, and follow the Get Started with the Hazelcast CLC tutorial.

Create Your First Project with Default Hazelcast Templates

Before creating a project, list the available templates using the following command:

clc template list

When you create a project, the template is stored in $CLC_HOME/templates directory. To list only the templates stored in your local environment, add the --local flag to the template list command.

To fetch the latest updates from repositories, add the --refresh flag to the command.

These flags are mutually exclusive, which means that you can only use one of them in a command.

Let’s create our first project by using go-client-getting-startedˆ template. This template includes the following extension files:

├── config.go.template
└── ...

The .template extension specifies that the file is a Go template that includes placeholders and actions. The .keep extension identifies files to keep as they are required for the project. For example, a file named in the template is replaced by a file named when the project is created.

Let’s look a bit deeper to config.go.template to see what placeholders are included:

  • config

  • cluster_name

  • cluster_discovery_token

  • cluster_address

  • ssl_key_path

  • ssl_cert_path

  • ssl_key_password

  • cluster_api_base

that are used in this template. You can find a full list of placeholders in the clc project topic.

To create a project, run the following command:

clc -c <your-config> project create go-client-getting-started

This project is created in the current working directory. To create the project in a different directory, add the --output-dir flag to the command. Once created, the project can be run immediately as the placeholders are already configured.

Create and Use User-created Templates

If preferred, you can use templates that you have created. When creating your templates, keep the following points in mind:

  • Use the format used in the Go template.

  • To add default values, create a template.yaml file, add a defaults node, and save it in the template root directory.

  • Template files must have the .template extension.

  • File names that start with a period (.) or underscore () are ignored, unless they also have a _.keep extensions.

  • Any files with a .keep extension are copied to the project with the .keep extension removed. All other files are copied without changes. *Properties are read from the following resources in order:

    1. The defaults node of the templates.yaml file.

      The keys must not contain any punctuation characters.
    2. config.yaml

    3. User passed key-values in the "KEY=VALUE" format.

      The keys must contain only lowercase, numerical, and underscore characters.

After creating your template, push it to a GitHub repository that resides in a separate organization. Hazelcast recommends creating an account/organization specifically for your templates.1

To list your templates, use the template list command with --source flag:

clc template list --source=<your-organization-name>

To create a project from your template, run the following command:

clc -c <your-config> project create <your-template> --source=<your-organization-name>

You can also use placeholders in your template, which can be passed using the create command as follows:

clc -c <your-config> project create <your-template> foo=bar --source=<your-organization-name>

In the example above, the foo placeholder will be replaced with bar on project creation.


In this guide you saw how to use default Hazelcast templates, and how to create and use your own templates, when creating projects.

The project creator provides a straightforward way to create ready-to-use projects using a single command.

For full details of the usage and parameters of the clc template and clc project commands, see the clc template and clc project documentation.