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:client": "cd client && bun run dev",
  "dev:server": "cd server && bun run dev",
  "dev:shared": "cd shared && bun run dev",
  "dev": "concurrently \"bun run dev:shared\" \"bun run dev:server\" \"bun run dev:client\"",
  "build:client": "cd client && bun run build",
  "build:shared": "cd shared && bun run build",
  "build:server": "cd server && bun run build",
  "build": "bun run build:shared && bun run build:server && bun run build:client",
  "deploy:server": "cd server && bun run deploy",
  "postinstall": "bun run build:shared && bun run build:server"
},

Deploy

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

!terminal
bun install
bun run deploy:server