Domain: echo-kit.com
Current Setup:
mail.echo-kit.com (Resend)https://echokit-license.echokit-rk.workers.devHost everything on echo-kit.com with automated CI/CD:
https://echo-kit.comhttps://echo-kit.com/docs, /pricinghttps://api.echo-kit.commail.echo-kit.com (already configured)Login: https://dash.cloudflare.com
echo-kit.comType Name Value Proxy
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
A echo-kit.com 192.0.2.1 (placeholder, Cloudflare proxy) β
ON
CNAME www echo-kit.com β
ON
CNAME api echokit-license.workers.dev β
ON
ravitejakamalapuram/echokitProject name: echokit-website
Production branch: main
Build command: (leave empty - static files)
Build output directory: docs
After deployment completes:
echo-kit.comwww.echo-kit.comResult:
https://echo-kit.com β serves /docs/index.htmlhttps://echo-kit.com/pricing.html β pricing pagemainUpdate worker/wrangler.toml:
name = "echokit-license"
main = "worker.js"
compatibility_date = "2025-01-01"
[vars]
ECHOKIT_PUBLIC_NAME = "EchoKit License API"
# Custom domain routing
routes = [
{ pattern = "api.echo-kit.com/*", zone_name = "echo-kit.com" }
]
cd worker
wrangler deploy
Result:
https://api.echo-kit.com/v1/validate β license validationhttps://api.echo-kit.com/__health β health checkhttps://echokit-license.echokit-rk.workers.devAccount β Workers Scripts β Edit
Zone β Workers Routes β Edit
Zone β DNS β Edit
Go to: https://github.com/ravitejakamalapuram/echokit/settings/secrets/actions
Add these secrets:
CLOUDFLARE_API_TOKEN = <token from 4.1>
CLOUDFLARE_ACCOUNT_ID = <your account ID from dashboard>
Create .github/workflows/deploy-worker.yml:
name: Deploy Worker
on:
push:
branches: [main]
paths:
- 'worker/**'
- '.github/workflows/deploy-worker.yml'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to Cloudflare Workers
uses: cloudflare/wrangler-action@v3
with:
apiToken: $
accountId: $
workingDirectory: worker
command: deploy
Result:
main that changes worker/ filesapi.echo-kit.com and workers.dev URLEdit extension/background.js:
// Line 64: Update default URL
const DEFAULT_LICENSE_WORKER_URL = 'https://api.echo-kit.com';
Edit docs/pricing.html:
// Line ~283: Update fetch URL
const res = await fetch('https://api.echo-kit.com/v1/validate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ key: k })
});
git add extension/background.js docs/pricing.html
git commit -m "feat: Use custom domain for license API (api.echo-kit.com)"
git push origin main
Result:
docs/index.html:<!-- Before </head> -->
<script defer src='https://static.cloudflareinsights.com/beacon.min.js'
data-cf-beacon='{"token": "YOUR_TOKEN_HERE"}'></script>
Already included! Workers auto-track:
View at: Cloudflare Dashboard β Workers & Pages β echokit-license β Metrics
# Wait 5-10 minutes after DNS changes, then test:
dig echo-kit.com
dig api.echo-kit.com
dig www.echo-kit.com
# Main website
curl -I https://echo-kit.com
# Pricing page
curl -I https://echo-kit.com/pricing.html
# API health check
curl https://api.echo-kit.com/__health
# License validation (with test key)
curl -X POST https://api.echo-kit.com/v1/validate \
-H "Content-Type: application/json" \
-d '{"key":"EK-PRO-1234567890-abcd1234"}'
# Make a small change to worker
echo "// CI/CD test" >> worker/worker.js
git add worker/worker.js
git commit -m "test: Verify CI/CD pipeline"
git push origin main
# Watch deployment: https://github.com/ravitejakamalapuram/echokit/actions
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β echo-kit.com (Cloudflare) β
β β
β βββββββββββββββββββ ββββββββββββββββββββββββ β
β β Cloudflare Pagesβ β Cloudflare Workers β β
β β β β β β
β β echo-kit.com β β api.echo-kit.com β β
β β ββ / β β ββ /v1/validate β β
β β ββ /pricing β β ββ /v1/issue β β
β β ββ /docs β β ββ /v1/lemonsqueezy β β
β β ββ /privacy β β ββ /__health β β
β βββββββββββββββββββ ββββββββββββββββββββββββ β
β β² β² β
β β β β
βββββββββββΌβββββββββββββββββββββββββββΌββββββββββββββββββββ
β β
β β
ββββββββ΄βββββββββ βββββββββ΄βββββββββ
β GitHub β β LemonSqueezy β
β Actions β β Webhooks β
β β β β
β Auto-deploy β β Payment β β
β on push β β License β
βββββββββββββββββ ββββββββββββββββββ
After completing all phases, verify:
echo-kit.com points to Cloudflarehttps://echo-kit.com loads homepagehttps://echo-kit.com/pricing.html workshttps://api.echo-kit.com/__health returns {"ok":true}worker/ auto-deploysdocs/ auto-deployshttps://api.echo-kit.commail.echo-kit.comFastest path to get everything running:
# 1. Update worker with custom domain
cd worker
# Edit wrangler.toml (add routes section from Phase 3)
wrangler deploy
# 2. Update extension to use custom domain
# Edit extension/background.js (line 64)
# Edit docs/pricing.html (line ~283)
# 3. Commit and push
git add .
git commit -m "feat: Complete Cloudflare hosting setup"
git push origin main
# 4. Setup Cloudflare Pages
# Go to dash.cloudflare.com β Pages β Connect GitHub β echokit
# 5. Add GitHub secrets
# Go to GitHub β Settings β Secrets β Add CLOUDFLARE_API_TOKEN
# Done! Everything auto-deploys on next push.
Estimated Total Time: 60 minutes Cost: $0 (all on Cloudflare Free tier) Maintenance: Zero (fully automated CI/CD)