---
title: "Serverless Cloudflare Worker backed by a D1 database"
description: "A serverless Cloudflare Worker backed by a D1 SQL database"
url: "https://www.pulumi.com/dev/examples/cloudflare-ts-serverless-d1/"
image: "https://www.pulumi.com/assets/og/dev/examples/cloudflare-ts-serverless-d1.png"
---

# Serverless Cloudflare Worker backed by a D1 database

A serverless Cloudflare Worker backed by a D1 SQL database

- Source on GitHub: https://github.com/pulumi/examples/tree/master/cloudflare-ts-serverless-d1
- Deploy with Pulumi: https://app.pulumi.com/new?template=https%3A%2F%2Fgithub.com%2Fpulumi%2Fexamples%2Ftree%2Fmaster%2Fcloudflare-ts-serverless-d1

## Get started with this example

This example lives in the [pulumi/examples](https://github.com/pulumi/examples/tree/master/cloudflare-ts-serverless-d1) repo. Pull down just this directory to follow along:

```bash
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examples
git -C pulumi-examples sparse-checkout set cloudflare-ts-serverless-d1
cd pulumi-examples/cloudflare-ts-serverless-d1
```

A [Cloudflare Worker](https://developers.cloudflare.com/workers/) that records each visit in a
[D1](https://developers.cloudflare.com/d1/) serverless SQL database and returns the running
total. The Worker is uploaded as a version and deployed with `cloudflare.WorkersDeployment`,
and is served on its `*.workers.dev` subdomain.

## Prerequisites

1. [Install Pulumi](https://www.pulumi.com/docs/install/)
1. [Install Node.js](https://www.pulumi.com/docs/iac/languages-sdks/javascript/)
1. Create a [Cloudflare API token](https://developers.cloudflare.com/fundamentals/api/get-started/create-token/)
   with Workers and D1 edit permissions, and export it:

   ```bash
   export CLOUDFLARE_API_TOKEN=<your-token>
   ```

## Deploying the example

1.  Create a new stack:

    ```bash
    pulumi stack init dev
    ```

1.  Set your Cloudflare account ID:

    ```bash
    pulumi config set accountId <your-account-id>
    ```

1.  Install dependencies:

    ```bash
    npm install
    ```

1.  Run `pulumi up` to deploy:

    ```bash
    pulumi up
    ```

1.  Visit the Worker's URL, refreshing a few times to watch the counter increment:

    ```bash
    curl "$(pulumi stack output url)"
    # Hello, world! This page has been visited 1 times.
    ```

## Cleaning up

```bash
pulumi destroy
pulumi stack rm dev
```
