<!-- Source: https://docs.squirro.com/en/latest/technical/templates/project-templates.html -->
# Project Templates Overview

Squirro supports exporting a complete project including all the definitions (dashboards, custom assets, etc.) in a compressed file format.

This enables you to take a snapshot of your Squirro project, package it up, then distribute it. Later, you can easily recreate the original Squirro project.

## Exporting a Project

A Squirro project can be exported using the Export Project studio plugin situated under the Settings section of the Squirro Setup space as shown below:

[![image1](https://s3.amazonaws.com/download.squirro.net/docs/migrated-attachments/921763884/image2018-10-26_11-57-46.webp)](https://s3.amazonaws.com/download.squirro.net/docs/migrated-attachments/921763884/image2018-10-26_11-57-46.webp)

You can select/deselect different Squirro objects that you want to export before clicking export at the bottom of the page. It will then provide a download prompt and ask you to save the exported project on your local filesystem.

Reference: For more information, see [Project Export & Import](import-export.md#project-templates-import-export).

### sqproj File Exports

Although an exported project as described above can be directly imported into a Squirro project, you can also create a project template from the exported project for a richer import experience.

A project template allows you to append your exported project with extra metadata like the name of the project, a short description of the project, an image file for a visual representation of the project, and most importantly a `guide file` walkthrough for onboarding a new user trying your project out.

## How to Create a Project Template

Project templates are created from exported Squirro projects in `swproj` format using the command line tool that is available as part of the standard Squirro Toolbox.

The tool can be invoked by entering the following code:

```bash
squirro_project_template --title "InvestmentBanking" --description "Project for investment banking" --thumbnail-file /tmp/template_image.jpg --guide-file /tmp/test.js --sqproj-file /tmp/test.sqproj
```

Where

- `title` is the name of your project template.
- `description` is a short description describing your project.
- `thumbnail_file` is the location to an image file visually describing your project.
- `guide_file` is the location of your javascript guide file describing the import walkthrough.
- `sqproj-file` is the location of the exported project file which was downloaded using the `Export Project` studio plugin.

This will create a folder in your current directory containing all the assets necessary to describe a project template.

## Uploading a Project Template

Once created, a project template can be uploaded to a Squirro server and made available for use by any other user on that server.

The process is quite similar to how you would have uploaded a dataloader plugin, pipelet, or custom widget that is available for use to all the users.

You can upload a project template created in the step above using the `squirro_asset` utility.

This utility is also part of our Squirro toolbox and can be invoked as shown in the following code:

```bash
squirro_asset -vv project_template upload -t $TOKEN  -c $SQUIRRO_CLUSTER -f InvestmentBanking
```

Once uploaded, your project template will show in the `Create Project` dialog box so that other users can bootstrap their project with your pre-packaged `Project Template`.

The `title`, `description`, and other attributes that were supplied in the creation of the project template folder are used for display purposes in the `Create Project` dialog box.

Tip: When creating your project template, be sure to use an informative title, description and image.

## Importing a Project

Squirro allows you to either import the `sqproj` file which was exported from the `Export Project` studio plugin or the Squirro Project Template which is a more enriched version of the sqproj file. Although, we recommend to use the Squirro Project Templates to distribute your projects around, the ability to directly import the exported `sqproj` file enables you to do one-off imports for your own experimentation without polluting the `Create Project` dialog box

### Importing an Exported Project

A project can be imported directly from a `sqproj` file by clicking Import Project in the Create Project dialog box and uploading the `sqproj` file that was placed on your filesystem by the _Export Project_ Studio plugin.

[![image3](https://s3.amazonaws.com/download.squirro.net/docs/migrated-attachments/921763884/image2018-10-26_12-31-8.webp)](https://s3.amazonaws.com/download.squirro.net/docs/migrated-attachments/921763884/image2018-10-26_12-31-8.webp)

After attaching your file, give your project a name and click Create Project.

### Importing an Already-Uploaded Project Template

You can also choose to import from an existing project template on the Squirro server.

To do so, select the project template that you’d like within the Create Project dialog box, give your project a name, and click Create Project at the bottom of the page.

Example: In the example below, _Investment Banking_ is the selectable already-uploaded project.

[![image4](https://s3.amazonaws.com/download.squirro.net/docs/migrated-attachments/921763884/image2018-10-26_12-30-49.webp)](https://s3.amazonaws.com/download.squirro.net/docs/migrated-attachments/921763884/image2018-10-26_12-30-49.webp)
