# Solid

import {
	AutoconfigDiagram,
	Badge,
	Description,
	InlineBadge,
	Render,
	PackageManagers,
} from "~/components";

:::note
Support for SolidStart projects on Cloudflare Workers is currently in beta.
:::

:::tip[Already have a Solid Start project?]
Run `wrangler deploy` in a project without a Wrangler configuration file and Wrangler will automatically detect Solid Start, generate the necessary configuration, and deploy your project.

<PackageManagers type="exec" pkg="wrangler" args="deploy" />

Learn more about [automatic project configuration](/workers/framework-guides/automatic-configuration/).
:::

<AutoconfigDiagram
	framework="Solid Start"
	configs={[
		{ label: "main", file: "wrangler.jsonc", value: ".output/server/index.mjs" },
		{ label: "assets", file: "wrangler.jsonc", value: "directory: .output/public" },
		{ label: "compatibility_flags", file: "wrangler.jsonc", value: "nodejs_compat" },
		{ label: "observability", file: "wrangler.jsonc", value: "enabled: true" },
	]}
/>

In this guide, you will create a new [Solid](https://www.solidjs.com/) application and deploy to Cloudflare Workers (with the new [Workers Assets](/workers/static-assets/)).

## 1. Set up a new project

Use the [`create-cloudflare`](https://www.npmjs.com/package/create-cloudflare) CLI (C3) to set up a new project. C3 will create a new project directory, initiate Solid's official setup tool, and provide the option to deploy instantly.

To use `create-cloudflare` to create a new Solid project with Workers Assets, run the following command:

<PackageManagers
	type="create"
	pkg="cloudflare@latest"
	args="my-solid-app --framework=solid --experimental"
/>

After setting up your project, change your directory by running the following command:

```sh
cd my-solid-app
```

## 2. Develop locally

After you have created your project, run the following command in the project directory to start a local server. This will allow you to preview your project locally during development.

<PackageManagers type="run" args={"dev"} />

## 3. Deploy your Project

Your project can be deployed to a `*.workers.dev` subdomain or a [Custom Domain](/workers/configuration/routing/custom-domains/), from your own machine or from any CI/CD system, including [Cloudflare's own](/workers/ci-cd/builds/).

The following command will build and deploy your project. If you're using CI, ensure you update your ["deploy command"](/workers/ci-cd/builds/configuration/#build-settings) configuration appropriately.

<PackageManagers type="run" args={"deploy"} />

---

## Bindings

Your Solid application can be fully integrated with the Cloudflare Developer Platform, in both local development and in production, by using product bindings. The [Solid documentation](https://docs.solidjs.com/reference/server-utilities/get-request-event) provides information about how to access platform primitives, including bindings. Specifically, for Cloudflare, you can use [`getRequestEvent().nativeEvent.context.cloudflare.env`](https://docs.solidjs.com/solid-start/advanced/request-events#nativeevent) to access bindings.

<Render file="frameworks-bindings" product="workers" />