Skip to content

Cloudflare Workers

One of the simplest ways to deploy your server is through Cloudflare Workers, which are lightweight, fast, and very inexpensive.

Deployment

Login to Cloudlfare

Using the wrangler CLI login to your Cloudflare account to authorize it

!terminal
bunx wrangler login

Add wrangler.jsonc File

Create a new file called wrangler.jsonc in the root of your server package and paste in the following template.

{
  "$schema": "node_modules/wrangler/config-schema.json",
  "name": "server",
  "main": "src/index.ts",
  "compatibility_date": "2025-05-25"
  // "compatibility_flags": [
  //   "nodejs_compat"
  // ],
  // "vars": {
  //   "MY_VAR": "my-variable"
  // },
  // "kv_namespaces": [
  //   {
  //     "binding": "MY_KV_NAMESPACE",
  //     "id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  //   }
  // ],
  // "r2_buckets": [
  //   {
  //     "binding": "MY_BUCKET",
  //     "bucket_name": "my-bucket"
  //   }
  // ],
  // "d1_databases": [
  //   {
  //     "binding": "MY_DB",
  //     "database_name": "my-database",
  //     "database_id": ""
  //   }
  // ],
  // "ai": {
  //   "binding": "AI"
  // },
  // "observability": {
  //   "enabled": true,
  //   "head_sampling_rate": 1
  // }
}

Update package.json Files

Add the following items to your server/package.json file

{
  "name": "server",
  "version": "0.0.1",
  "main": "dist/index.js",
  "types": "dist/index.d.ts",
  "scripts": {
    "build": "tsc",
    "dev": "bun run --hot src/index.ts",
    "dev": "wrangler dev",
    "deploy": "wrangler deploy --minify",
    "cf-typegen": "wrangler types --env-interface CloudflareBindings"
  },
  "dependencies": {
    "hono": "^4.7.7",
    "shared": "workspace:*"
  },
  "devDependencies": {
    "@types/bun": "latest",
    "wrangler": "^4.4.0"
  }
}

Then update scripts section of the root package.json for your bhvr project

"scripts": {
  "dev": "turbo dev",
  "dev:client": "turbo dev --filter=client",
  "dev:server": "turbo dev --filter=server",
  "build": "turbo build",
  "build:client": "turbo build --filter=client",
  "build:server": "turbo build --filter=server",
  "deploy:server": "cd server && bun run deploy",
  "lint": "turbo lint",
  "type-check": "turbo type-check",
  "test": "turbo test",
  "postinstall": "turbo build --filter=shared --filter=server"
},

Deploy

Install dependencies for your updated server/package.json then run the deploy command

!terminal
bun install
bun run deploy:server