# Setting up group projects

Group projects are supported in Nuvolos. In order to set up a seamless experience, we suggest taking the following steps.

## Create a new space

This space will only contain group work-related instances. The "normal", single-user instances should be contained in a separate space with the standard teaching material.

{% hint style="info" %}
We suggest creating a new space due to the fact that distributing two threads of workflows on top of each other means that individual and group work might get unnecessarily tangled.

New spaces can only be created by users with the [Organisation Faculty or Organisation Manager role](https://docs.nuvolos.com/administration/roles). If you are a TA and don't have faculty permissions, please ask the course instructor to create the space for you.
{% endhint %}

## Add group instances

For each group, create an instance and invite its members as editors. The workflow has two parts:

### 1. Create the group instance

1. Navigate to the group work space.
2. Click the **Cogwheel** icon and select **Project Users / Instances**.
3. Click **+ ADD NEW INSTANCE**.
4. Choose whether to start from a snapshot or create an empty instance.
5. Name the instance after the group (e.g. `Group 1`).

For the full guide, see [Create a new instance](https://docs.nuvolos.com/administration/instance-management#create-a-new-instance).

### 2. Invite group members as editors

1. In **Project Users / Instances**, go to the **Instances** tab.
2. Find the group instance you just created and click **+ INVITE USERS**.
3. Select **Option 1 — User Invitation** and **Invite to an existing shared instance**.
4. Choose **Instance Editor** as the role.
5. Enter the email addresses of the group members and click **+ INVITE**.

For the full guide, see [Invite to an instance](https://docs.nuvolos.com/administration/instance-management/invite-to-an-instance).

{% hint style="warning" %}
When entering emails for users already attending a course on Nuvolos, use the email listed under their name in the **Members** list. If the invitation is sent to a different email, the student will not be able to accept it with their existing Nuvolos account.
{% endhint %}

Once the invitations are accepted, each group member will be an editor of the instance. This means every group member can modify files in a common workspace and the current state of the instance is visible to all.

{% hint style="warning" %}
Multiple users might be editing the same file. We highly recommend using [JupyterLab 3.1 or higher with "Shared" editing mode](https://docs.nuvolos.com/user-guides/education-guides/setting-up-group-projects/collaborative-application-editing) for group instances. For other configurations, the exact outcome of this operation is application-dependent, but this is a situation that needs to be avoided by the group. It is suggested that work be broken down into appropriately small blocks if possible and scheduled if multiple users editing a single file is unavoidable.
{% endhint %}

Once they accept, students will see two spaces — their regular coursework space with their single-user instance, and the group-work space with their group instance.

## Upload files to the master instance of the group workspace

After the exact structure of the group workspace is set up, files can be uploaded to the master instance. This step can happen before adding all the group instances, depending on the timeline of the course.

## Distribute files to the group instances

The [distribution](https://docs.nuvolos.com/features/nuvolos-basic-concepts/distribution) can be carried out as usual. As highlighted previously, since in this setup the individual and group work spaces are kept separately, if a new group needs to be set up, it can be initialized via the distributed instance.

As the course proceeds, the distribute feature can be used cumulatively to move forward the group work instances as well. It is also possible to "bridge" information between regular and group work instances via cross-distributing between spaces.
