---
# System prepended metadata

title: Webflow Folder structure and naming conventions

---

# Webflow Folder structure and naming conventions

**TL;DR**: This document provides a folder and naming convention for organizing blocks and components. 

Blocks are organized into PageBlocks and SiteBlocks folders within a Shared folder, and further subfolders for specific block types. 

Components are organized into General, Cards, and Inputs folders within a Shared folder. 

The naming convention for blocks and components follows the format of: 
**Block**: [Name][Type].cshtml.
**Component**: [Type].cshtml.

each block starts with a class matching its block type and ends with a vn-- (variant name) class.

each component starts with a class matching its component type and ends with a vn-- (variant name) class unless it's a general component.
</br>

## Blocks

### Block Folder Structure

The block folder structure consists of a **Shared** folder, which contains `Blocks` and its subfolders. The subfolders include `PageBlocks` and `SiteBlocks`, and their respective subfolders.

#### PageBlocks Folder
The `PageBlocks` folder contains blocks that do not have the site-block class. These blocks are used in the admin and can be edited

#### SiteBlocks Folder
The `SiteBlocks` folder contains blocks with the site-block class. These blocks are not in the admin.

```
└── Shared/
    ├── Blocks/
    │   ├── PageBlocks/
    │   │   ├── BillboardBlocks/
    │   │   │   └── [BillboardBlockName] (HeroBillboardBlock.cshtml)
    │   │   │   
    │   │   ├── ContentBlocks/
    │   │   │   └── [ContentBlockName] (AccordionBlock.cshtml)
    │   │   │
    │   │   └── CardBlocks/
    │   │       └── [CardBlockName] (TeamCardBlock.cshtml)
    │   │       
    │   └── SiteBlocks/
    │       └── [SiteBlockName] (SiteHeaderSiteBlock.cshtml)
    └── Components/
```

### Block File Naming Convention

The naming convention follows a consistent format of **[Block Name][Block Type]**.cshtml. 

**Block Name**: A descriptive name for the UI block.
**Block Type**: The type of UI block, using a standardized type name. Examples of standardized type names include `Billboard Block`, `Card Block` and `Content Block`.

If a Block Name and Block Type have the same name, they'll be combined into a single name. For example, `Hero Billboard` and `Billboard Block` will become `HeroBillboardBlock`. This merging process will not result in duplicate names such as `HeroBillboardBillboardBlock`.


|Block Name|Block Type|Output|
|-|-|-|
|Hero Billboard|Billoard Block|HeroBillboardBlock.cshtml|
|Accordion|Content Block|AccordionContentBlock.cshtml|
|Team|Card Block|TeamCardBlock.cshtml|

### Block Class Naming Convention

The following table shows the naming convention for different types of blocks:

|Block Name|Block Type|Class Name|
|-|-|-|
|Hero Billboard|Billoard Block|`billboard-block vn--hero`|
|Accordion|Content Block|`content-block vn--accordion`|
|Team|Card Block|`card-block vn--team`|

Each block will start with a class matching its block type i.e a **billboard block** would start with `billboard-block`.

The block name will be added as a `vn--` (variant name) class i.e a **hero billboard** would have a `vn--hero` class.

## Components

### Component Folder Structure

The component folder structure consists of a **Shared** folder, which contains `Cards`, `General` and `Inputs`.


```
└── Shared/
    ├── Blocks/
    └── Components/
        ├── Cards/
        │   └── [CardName] (NewsCard.cshtml)
        │   
        ├── General/
        │   └── [GeneralComponentName] (Button.cshtml)
        │
        └── Inputs/
            └── [InputComponentName] (TextField.cshtml)
```


### Component File Naming Convention

The naming convention for components follows the format of 
[Component Name].cshtml.

**Component Name**: A descriptive name for the component.

|Component Name|Component Type|Output|
|-|-|-|
|News Card|Card Component|NewsCard.cshtml|
|Button|General Component|Button.cshtml|
|Text Field|Input Component|TextField.cshtml|

### Components Class Naming Convention

The following table shows the naming convention for different types of components:

|Component Name|Component Type|Class Name|
|-|-|-|
|Button|General Component|`button--component`|
|Team Card|Card Component|`card-component vn--team`|
|Text Field|Input Component|`input-component vn--text-field`|

If the class is a "General Component" then you can combine the component name and `--component` to create your component class i.e `[GeneralComponentName]--component`


All other components will start with a class matching its component type i.e a card component would start with card-component.

The component name will be added as a vn-- (variant name) class i.e a team card would have a vn--team class.