# Project

A project can contain one or several environments. As described in Concept of a stack when you create a project, you have to choose a public or a private stack.

Stacks

An environment describe a deployment of a stack. Stacks are automated and reproducible via IaaC. Which mean, for each environments you will deploy the same infrastructure but you can specify different configuration and variables.

Usual common environments naming are: dev, staging, and prod, those are just common names, and could be of any kind.

Environments

An environment, is a call to your IaaC with different parameters; for example if you were to call our public Magento stack you might want in dev to make your environment smaller than the production one.

# Editor view

Terraform

In this terraform sample you would not enable multi-az on RDS, you would put only one front server, you would change the front_type to have only one front server and disable the multi-az on RDS.

If you were to improve this stack, we could imagine an AWS Cloudfront component for content delivery, that would be enabled only for production too.

This highlights the concept of env shifting mentioned in IaaC, you could still have some for economic or technical reasons, but those would be much better controlled.

Project's pipelines

When you create an environment in your project, Cycloid will read the template of the pipeline from the stack. And display the variables sample file to configure it.

Variables

Then by pressing the Run button, it will create a Running pipeline from the template using the provided configuration.

Please make sure you read the pipeline section to fully understand the difference and the scope of pipeline template and a running pipeline.

# Forms view

To configure your project via a user-friendly form, you'll need to create a new file at the same location as your .cycloid.yml file. This file will be .forms.yml; please see the advanced guide for more information about the format.

If enabled, Editor view for project configuration will be replaced by StackForms, which takes a more visual approach, using widgets, hints, dropdowns, etc. Please note that when you're using StackForms, only a subset of elements might be configurable (depending on what was defined in the file) and that StackForms cannot be used to edit the pipeline (only the variables).

You can't yet enforce StackForms or Editor view, but you can switch to whichever you prefer.

Here's a sample of how it could look:

Forms-create

Once the project is created you can edit it via the environments tab, which will show a similar page that the creation one:

Forms-env Forms-edit

When your changes are done click on 'Apply' - please not this might take a bit of time as files need to be regenerated and push into the project's config repository.