Locallytics

API Route

Set up the server-side analytics endpoint.

Create an API endpoint that receives pageview data.

Setup

Run migrations first:

npx locallytics migrate

Then create your API route:

Next.js:

app/api/analytics/route.ts
import { createLocalyticsHandler } from "locallytics";

const handler = await createLocalyticsHandler({
  database: process.env.DATABASE_URL!,
});

export const POST = handler.POST;

Express:

import express from "express";
import { createLocalyticsHandler } from "locallytics";

const app = express();
const handler = await createLocalyticsHandler({ database: process.env.DATABASE_URL! });

app.post("/api/analytics", async (req, res) => {
  const response = await handler.POST(req);
  res.status(response.status).send(await response.text());
});

Hono:

import { Hono } from "hono";
import { createLocalyticsHandler } from "locallytics";

const app = new Hono();
const handler = await createLocalyticsHandler({ database: process.env.DATABASE_URL! });

app.post("/api/analytics", (c) => handler.POST(c.req.raw));

Configuration

createLocalyticsHandler({ database: string })

PostgreSQL:

DATABASE_URL="postgres://user:pass@localhost:5432/db"

SQLite:

DATABASE_URL="./analytics.db"

Privacy

  • Respects Do Not Track headers
  • Validates all incoming data
  • No PII collected

On this page