Locallytics

Introduction

Self-hosted, privacy-first analytics for any JavaScript framework.

Locallytics is a lightweight analytics SDK that stores data in your own database. Works with any JavaScript framework.

  • Privacy-first — No cookies, respects Do Not Track
  • Self-hosted — Your data stays on your servers
  • Framework-agnostic — Works with Next.js, Express, Remix, Hono, etc.

Quick Start

Install

npm install locallytics

Migrate Database

Create the required tables in your database. Supports PostgreSQL and SQLite.

export DATABASE_URL="postgres://..." # or "./analytics.db"
npx locallytics migrate
Set DATABASE_URL in your environment first.

Create API Route

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

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

export const POST = handler.POST;

Add Tracker

app/layout.tsx
"use client";

import { LocallyticsGrabber } from "locallytics/client";
import { useEffect } from "react";

export default function RootLayout({ children }) {
  useEffect(() => {
    LocallyticsGrabber();
  }, []);

  return (
    <html>
      <body>{children}</body>
    </html>
  );
}

View Data

app/dashboard/page.tsx
import { LocallyticsData } from "locallytics";

export default async function Dashboard() {
  const data = await LocallyticsData(
    process.env.DATABASE_URL!,
    "last7d"
  );

  return (
    <div>
      <p>{data.pageviews} pageviews</p>
      <p>{data.uniqueVisitors} visitors</p>
    </div>
  );
}

What's Next?

On this page