---
title: "Create a project file"
description: "Create a project file with any CAT tool — from a template, or in CAT Studio — and see what is in it"
url: "https://docs.justcat.it/how-to-guides/organize-and-run-tests/how-to-create-project-file/"
---
# Create a project file


A CAT project is one file, `<name>.cat.yaml`, that names the data sources, the tests and the outputs — see the [Project file](https://docs.justcat.it/reference/project-file/introduction/ "Project file") reference for everything it can hold. It is plain text; you can write it in any editor and soon will. To start, let a tool create one from the `default` template: one data source, one test, nothing else.


**CAT Studio**


CAT Studio does not start from a template — it starts from an empty project and writes the file when you save:

1. On the **Project** page click **Create new project** (or press `Ctrl+N`).
2. Add a data source (**Project** or **Data sources** page → *New data source*): a name, the technology, the connection details.
3. On the **Tests** page click **Add a test**, write the query, pick the expectation, give the test a name.
4. Press `Ctrl+S`: CAT Studio asks where to save and writes `<name>.cat.yaml`.

The file is an ordinary project file — open it in an editor with `Ctrl+Shift+E` and you see the same YAML the other tabs show. CAT Studio reads and writes that file from then on; anything you edit in the file shows up in Studio after a reload (`Ctrl+Shift+F6`).


**CAT CLI**


```text
catcli new --name MyFirstProject
```

creates `MyFirstProject.cat.yaml` in the current directory. `--directory` puts it elsewhere, `--commented` gives you the variant with every setting explained inline, `--list` shows the templates — see [`new`](https://docs.justcat.it/reference/cat-cli/new/ "catcli new").


**PowerShell module**


```powershell
New-CatProject MyFirstProject
```

creates `MyFirstProject.cat.yaml` in the current location. `-Path` puts it elsewhere, `-Commented` gives you the variant with every setting explained inline, `Get-CatProjectTemplate` lists the templates — see [`New-CatProject`](https://docs.justcat.it/reference/powershell-module/new-catproject/ "New-CatProject").


**Python module**


```python
import justcatit as cat
cat.new_project("MyFirstProject")
```

creates `MyFirstProject.cat.yaml` in the current directory. `path=` puts it elsewhere, `commented=True` gives you the variant with every setting explained inline, `get_project_templates()` lists the templates — see [`new_project`](https://docs.justcat.it/reference/python-module/new-project/ "new_project").




## What you get

The `default` template, stripped of its comments:

```yaml
Data sources:
- Name: DWH
  Provider: SqlServer@1
  Connection string: data source=localhost;integrated security=true;initial catalog=DWH

Tests:
- Name: No new errors in the ErrorLog table
  Description: >
    We are aware about errors in the past, but we do not expect new ones.
    If this test fails, it is necessary to check the dbo.ErrorLog table content.
  Data source: DWH
  Query: |
    SELECT  TOP 20 *
    FROM    dbo.ErrorLog
    WHERE   ErrorThrownOn >= '20240131'
    ORDER BY ErrorThrownOn
  Expectation: set is empty
```

Point the connection string at your data — through an [environment variable](https://docs.justcat.it/how-to-guides/organize-and-run-tests/use-environment-variables/ "Use environment variables"), never a password in the file — change the query and the expectation, and [run it](https://docs.justcat.it/how-to-guides/organize-and-run-tests/run-your-tests/ "Run your tests"). What each key accepts: [Data source properties](https://docs.justcat.it/reference/data-sources/properties/ "Data source properties"), [Test properties](https://docs.justcat.it/reference/tests/properties/ "Test properties"), [Outputs](https://docs.justcat.it/reference/outputs/introduction/ "Outputs").

## Related

* [Project file](https://docs.justcat.it/reference/project-file/introduction/ "Project file") — the reference, with a [complete example](https://docs.justcat.it/reference/project-file/complete-example/ "Complete example").
* [Organize a growing test base](https://docs.justcat.it/how-to-guides/organize-and-run-tests/organize-test-definitions/ "Organize a growing test base") — when one file stops being enough.

