DEV Community

Alex Spinov
Alex Spinov

Posted on

Deno Deploy Has a Free API — Ship Serverless Functions Globally in Seconds

Zero Config Serverless

Deno Deploy gives you serverless edge functions with zero configuration. Free tier: 100K requests/day, 1K deployments/month.

Hello World

Deno.serve((req) => {
  return new Response("Hello from the edge!");
});
Enter fullscreen mode Exit fullscreen mode

Deploy with one command:

deno install -Agf jsr:@deno/deployctl
deployctl deploy --project=my-app main.ts
Enter fullscreen mode Exit fullscreen mode

JSON API

Deno.serve(async (req) => {
  const url = new URL(req.url);

  if (url.pathname === "/api/time") {
    return Response.json({ time: new Date().toISOString() });
  }

  if (url.pathname === "/api/ip") {
    const ip = req.headers.get("x-forwarded-for") || "unknown";
    return Response.json({ ip });
  }

  return new Response("Not found", { status: 404 });
});
Enter fullscreen mode Exit fullscreen mode

Key-Value Storage (Built-in)

const kv = await Deno.openKv();

// Store data
await kv.set(["users", "john"], { name: "John", visits: 0 });

// Read data
const entry = await kv.get(["users", "john"]);
console.log(entry.value);

// Atomic increment
await kv.atomic()
  .mutate({ type: "sum", key: ["users", "john", "visits"], value: new Deno.KvU64(1n) })
  .commit();
Enter fullscreen mode Exit fullscreen mode

Cron Jobs (Built-in)

Deno.cron("daily-report", "0 9 * * *", async () => {
  // Runs every day at 9 AM
  const stats = await fetchStats();
  await sendReport(stats);
});
Enter fullscreen mode Exit fullscreen mode

Why Deno Deploy vs Alternatives

Feature Deno Deploy Vercel Edge CF Workers
Free requests 100K/day 100K/mo 100K/day
KV storage Built-in Via KV Workers KV
Cron jobs Built-in Via Vercel Via Triggers
Cold start ~0ms ~5ms ~0ms
TypeScript Native Native Native

More | GitHub


More from me: 10 Dev Tools I Use Daily | 77 Scrapers on a Schedule | 150+ Free APIs

Top comments (0)