Frameworks

Vue & manual setup

Mount the Clivly fetch handler by hand for Vue, Hono, Express, or any other runtime.

The docs work better when framework-specific scaffolding is on its own route instead of being buried in one huge page.

Every framework wraps the same createClivlyHandler(), and every route resolves to the same public URL: /api/clivly/tick. Vue + Vite, Hono, and Express are not scaffolded — mount the fetch handler in your own server layer, or prefer Nuxt when available. The rows above are the frameworks clivly init scaffolds for you; a hand-mounted handler lands at the same URL, you just choose the file yourself.

Anything else — Vue with a custom server, Hono, Express — mounts the same fetch handler by hand. It is a plain (Request) => Promise<Response>, so any runtime that speaks Web standards works.

Everything else

server/app.ts
import { Hono } from "hono";
import { clivly } from "./clivly";

const app = new Hono();
const tick = clivly.createClivlyHandler();
// Optional: only add this when you explicitly configure verifyToken on the host.
const verify = clivly.createAuthVerifyHandler(async (request) => {
const session = await mySessionFromRequest(request);
return session
  ? { id: session.userId, email: session.email, name: session.name }
  : null;
});

app.post("/api/clivly/tick", (c) => tick(c.req.raw));
app.get("/api/clivly/auth/verify", (c) => verify(c.req.raw));

export default app;
  • clivly init scaffolds only the five frameworks above; anywhere else, mount the handler yourself.
  • Keep the path at /api/clivly/tick, or set syncTrigger.path to whatever you chose.