---
title: Datafiles
meta:
  description: "Datafiles describe your Tinybird resources: Data Sources, Pipes, and so on. They're the source code of your project."
---

# Datafiles

Datafiles describe your Tinybird resources, like Data Sources, Pipes, and so on. They're the source code of your project.

You can use datafiles to manage your projects as source code and take advantage of version control. Tinybird CLI helps you produce and push datafiles to the Tinybird platform.

## Types of datafiles

Tinybird uses the following types of datafiles:

- Datasource files (.datasource) represent Data Sources. See [Datasource files](/classic/cli/datafiles/datasource-files).
- Pipe files (.pipe) represent Pipes of various types. See [Pipe files](/classic/cli/datafiles/pipe-files).
- Include files (.incl) are reusable fragments you can include in .datasource or .pipe files. See [Include files](/classic/cli/datafiles/include-files).

## Syntactic conventions

Datafiles follow the same syntactic conventions.

### Casing

Instructions always appear at the beginning of a line in upper case. For example:

```tb {% title="Basic syntax" %}
COMMAND value
ANOTHER_INSTR "Value with multiple words"
```

### Multiple lines

Instructions can span multiples lines. For example:

```tb {% title="Multiline syntax" %}
SCHEMA >
    `d` DateTime,
    `total` Int32,
    `from_novoa` Int16
```

## File structure

The following example shows a typical `tinybird` project directory that includes subdirectories for supported types:

```txt {% title="Example file structure" %}
tinybird
├── datasources/
│   └── connections/
│       └── my_connector_name.incl
│   └── my_datasource.datasource
├── endpoints/
├── includes/
├── pipes/
```

## Next steps

- Understand [CI/CD processes on Tinybird](/classic/work-with-data/organize-your-work/continuous-integration).
- Read about [implementing test strategies](/classic/work-with-data/strategies/implementing-test-strategies).
