API Route
Set up the server-side analytics endpoint.
Create an API endpoint that receives pageview data.
Setup
Run migrations first:
npx locallytics migrateThen create your API route:
Next.js:
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