npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@c15t/backend

v3.1.0

Published

Self-hosted consent management platform (CMP) backend for c15t. Stores GDPR consent records and audit logs, and resolves policies and geolocation, on Postgres, MySQL or SQLite.

Readme

@c15t/backend: Self-hosted consent management backend

Run the c15t cookie consent backend on your own server and database. It resolves consent policies for GDPR and other privacy laws, stores consent records and audit history, and serves every c15t frontend through one web Request handler.

c15t is used by 2,100+ sites, including expo.dev, zed.dev, unkey.dev, mintlify.com, and sazabi.com.

Key Features

  • You own the data: consent records stay in your PostgreSQL, MySQL, or SQLite database
  • Policy rules by region, with presets such as policyRulePresets.europeOptIn()
  • One web-standard Request to Response handler that mounts in Next.js, Nuxt, SvelteKit, TanStack Start, or any server
  • Geolocation from host headers, server-side translations, and audit logs
  • IAB TCF configuration with the Global Vendor List and custom vendors
  • The same API as Inth, so frontends change only the backend URL

Prerequisites

  • Node.js 20.19 or later
  • A PostgreSQL, MySQL, or SQLite database, plus its driver: @effect/sql-pg, @effect/sql-mysql2, or @effect/sql-sqlite-node
  • A server that runs Node.js. A static export cannot run the backend

Installation

pnpm add @c15t/backend @effect/sql-sqlite-node

Install the driver version that the backend lists as a peer dependency. Do not want to run a database? Inth runs this backend for you.

Usage

  1. Create c15t-backend.config.ts with your database, trusted origins, and policy rules
// c15t-backend.config.ts
import { defineConfig, policyRulePresets } from '@c15t/backend'

export default defineConfig({
  database: { dialect: 'sqlite', filename: './consent.db' },
  trustedOrigins: ['localhost'],
  manifest: { policyRules: [policyRulePresets.europeOptIn()] },
})
  1. Create the schema: npx @c15t/cli self-host migrate --config ./c15t-backend.config.ts --plan, then run it again with --apply
  2. Mount the handler on a catch-all route for GET, POST, PUT, PATCH, and OPTIONS
// app/api/c15t/[[...path]]/route.ts (Next.js)
import { c15tInstance } from '@c15t/backend'

import config from '../../../../c15t-backend.config'

export const runtime = 'nodejs'
const backend = c15tInstance({ ...config, basePath: '/api/c15t' })

export const GET = (request: Request) => backend.handler(request)
export const POST = GET
export const PUT = GET
export const PATCH = GET
export const OPTIONS = GET
  1. Point your frontend at the backend URL, such as https://app.example.com/api/c15t, where the quickstart asks for the Inth URL
  2. For other servers, PostgreSQL, and deployment checks, see the self-hosting guide

Documentation

See the documentation for guides, API reference, and examples.

Hosted or Self-Hosted

Self-host when you need to run the service and its database yourself. You then own provisioning, migrations, backups, policy configuration, signing secrets, availability, and upgrades.

Inth runs the same backend for you, with a dashboard, audit history, and a managed IAB CMP ID. Your frontend code is the same either way.

Docs for AI Agents

This package ships its documentation as Markdown, matched to the installed version. After you install it, point your coding agent at node_modules/@c15t/backend/AGENTS.md. It indexes every guide in node_modules/@c15t/backend/docs/.

On the web, every page of the c15t docs has a Markdown version, and llms.txt lists them all. Install the c15t agent skills with npx skills add c15t/skills.

Support

Contributing

Security

Do not open a public issue for a security vulnerability. Report it privately through GitHub's vulnerability reporting. We examine every valid report.

  • Do not share the vulnerability in public forums, issues, or pull requests
  • Give the steps to reproduce it and the versions it affects
  • Give us time to release a fix before you disclose it

License

Apache License 2.0


Built by Inth