# Introduction


LikeC4 is a DSL for describing software architecture.

Source files must have `.likec4` or `.c4` extensions.  
All sources merged into _a single model_ (explained later in [extending model](/dsl/extend)).

A project may look like this:

<FileTree>
- backend
  - service1
    - model.c4
    - views.c4
  - service2
    - model.c4
  - ...
- externals
  - amazon.c4
  - ...
- landscape.c4
- specs.c4
</FileTree>

## Top-level statements

Source file should have at least one of these statements:

- `specification` - defines element kinds to be used in the model, like **system**, **app**, **microservice**...
- `model` - architecture elements, hierarchies, compositions and relationships
- `views` - visualizations
- `global` - globally shared predicates (explained later in [Views](/dsl/views/predicates/#shared-global-styles))

```likec4
// example.c4
specification {
  //...
}

global {
  //...
}

model {
  //...  
}

views {
  //...
}
```

You have multiple statements of the same type: 

```likec4
// Views group 1
views {
}

// Views group 2
views {
}
```

:::tip
For example, `views` block allows _"local styles"_, that apply to the views in the same block.  
This way you can group views that have same styles, and avoid boilerplate.  
Explained later in [Views](/dsl/views/predicates/#shared-local-styles).
:::