# Frameworks Compatibility | Gatsby

import DocButton from '~/components/webkit/DocButton.vue';

## About Gatsby

Gatsby is a static site generator that compiles your React components into static HTML. It uses a component-based architecture where you write React components, and Gatsby pre-renders them to static HTML at build time. This approach results in fast page loads since the HTML is ready to serve immediately.

**Key features**:
- Static HTML generation at build time
- React-based component architecture
- GraphQL data layer for content management
- Built-in support for Markdown and MDX
- TypeScript support
- File-based routing system
- Rich plugin ecosystem for extending functionality

You can deploy your Gatsby project either by using our ready to deploy templates or by linking an existing project with the Azion CLI.

## Available Templates

| Template name | Use case | Details |
|:-------------|:---------|:-----|
| ButterCMS + Gatsby Starter Project | E-commerce | <DocButton href="/en/documentation/products/templates/gatsby-butter-starter/" label="Learn more" kind="secondary" size="medium" /> |
| Gatsby Blog Starter Kit| Starter project | <DocButton href="/en/documentation/products/templates/gatsby-blog/" label="Learn more" kind="secondary" size="medium" /> |
| Gatsby Ecommerce Theme | Blog creation | <DocButton href="/en/documentation/products/templates/gatsby-ecommerce/" label="Learn more" kind="secondary" size="medium" /> |
| Gatsby Boilerplate| E-commerce platform | <DocButton href="/en/documentation/products/templates/gatsby-boilerplate/" label="Learn more" kind="secondary" size="medium" /> |

### Deploying a template using Azion Console

1. Login to [Console](https://console.azion.com).
2. Click the **\+ Create** button.
3. Click the **Templates** section.
4. Choose the desired Gatsby template.
5. Connect your GitHub Account.
6. Choose a name for your application.
7. Click **Deploy**.

### Deploying an existing project using import from GitHub

2. In [Console](https://console.azion.com) Click the **\+ Create** button.
3. Select Import from Github.
4. Select your repository.
5. Choose an application name.
6. Select thr Gatsby Preset.
7. Input the install command:

```
npm install
```
8. Click **Deploy**

### Deploying a template using Azion CLI

You can use the Azion CLI to deploy a template.

:::tip
Visit our [CLI guide](/en/documentation/products/azion-cli/overview/#installing-azion-cli) for detailed installation instructions.
:::

1. Initialize the project:

```sh 
  azion init
```

2. Give your project a name, or press `enter` to accept the given suggestion:

```sh 
? Your application's name:  (black-thor)
```

3. Choose the Gatsby preset: 

```sh 
? Choose a preset:  [Use arrows to move, type to filter]
  Angular 
  Astro 
  Docusaurus
  Eleventy
  Emscripten
> Gatsby
  Hexo
  Hono
  Hugo
  Javascript
  ...
```

4. Choose one of the available templates.

5. With the template fetched and configured, you can choose to start a local development server.

```sh 
Do you want to start a local development server? (y/N) 
```

The following steps are based on the answer you gave. 

- [If you chose to have a local development server running](/en/documentation/products/devtools/azion-edge-runtime/frameworks-compatibility/gatsby/#answering-yes-to-local-dev).
- [If you chose not to have a local development server running](/en/documentation/products/devtools/azion-edge-runtime/frameworks-compatibility/gatsby/#answering-no-to-local-dev).

### Answering yes to local dev

1. Install the project dependencies. Input `y` when the interaction prompts:

```sh 
  Do you want to install project dependencies? This may be required to start local development server (y/N)
```

Wait until the installation is complete.

Output:

```sh
Your Application was built successfully
[Azion] [Server] › ✔  success   Function running on port 0.0.0.0:3333, url: http://localhost:3333
```

2. On the browser, go to `http://localhost:3333/` and you can see your Gatsby project running.

#### Deploying the project

When your project is running locally, you're still able to deploy it to the edge. To do so:

1. Stop the terminal execution with `control + c`. 

2. Access the project folder:

```sh
cd [your-project-name] 
```

3. Deploy the project: 

```sh
azion deploy
```

4. Wait while the project is built and deployed to the Azion Web Platform.

:::note 
Once the deployment is triggered, Azion will open the browser and take the user to a page on Azion Console where the deployment logs and process can be monitored. If it doesn't open automatically, just click on the provided link.
::: 

After the deployment is complete, you'll receive a domain to access your Gatsby project on the Azion's platform.

Wait a few minutes so the propagation takes place, and then access your application using the provided domain, which should be similar to `https://xxxxxxx.map.azionedge.net`.

### Answering no to local dev

After indicating you don't want to have a local server running, deploy the Gatsby project to the edge.

1. Enter `y` to the following interaction, indicating you want to deploy the project:

```sh
   Do you want to deploy your project? (y/N) 
```

2. Install the project dependencies. Input `y` when the interaction prompts:

```sh 
  Do you want to install project dependencies? This may be required to deploy your project (y/N)
```

3. Wait while the project is built and deployed to the Azion Web Platform.

:::note 
Once the deployment is triggered, Azion will open the browser and take the user to a page on Azion Console where the deployment logs and process can be monitored. If it doesn't open automatically, just click on the provided link.
::: 
After the deployment is complete, you'll receive a domain to access your Gatsby project on the Azion Platform.

Wait a few minutes so the propagation takes place, and then access your application using the provided domain, which should be similar to `https://xxxxxxx.map.azionedge.net`.


### Local project deploy with Azion CLI

You can use the Azion CLI to deploy a project compatible with our [availiable frameworks](/en/documentation/products/devtools/azion-edge-runtime/frameworks-compatibility/).

:::tip
Visit our [CLI guide](/en/documentation/products/azion-cli/overview/#installing-azion-cli) for detailed installation instructions.
:::

1. Inside your existing project folder, use the command below to link your project to an application:

```shell
azion link
```

2. Choose the Gatsby preset.

3. The CLI will guide you through the rest of the process. In less than five minutes, your application can be up and running on the Azion Web Platform.