OpenRung
A free, privacy-first relay network that helps you reach the open internet. Open source and nonprofit-run.
翻訳待ち
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Keksmeister is a lightweight cookie consent library built as a Web Component with Shadow DOM encapsulation. It drops into any web application — Angular, React, Vue, Svelte, or plain HTML — without style conflicts or framework dependencies.
Built for footage.one with GDPR/DSGVO compliance as a first-class concern. Live Demo
We evaluated every major open-source consent library and found that none combines all three properties we needed:
| Library | Web Component | Full GDPR Features | Modern ESM + TS |
|---|---|---|---|
| orestbida/cookieconsent | ❌ | ✅ | ✅ |
| Porsche cookie-consent-banner | ✅ | ⚠️ partial | ✅ |
| Klaro | ❌ | ✅ | ❌ |
| tarteaucitron | ❌ | ✅ | ❌ |
| c15t | ❌ | ✅ | ✅ (but Next.js focused) |
| Keksmeister | ✅ | ✅ | ✅ |
data-keksmeister attribute pattern is inspired by Klaro's design.<keksmeister-banner> with Shadow DOM encapsulationdata-keksmeister attribute blocks scripts until consentgtag('consent', 'update', ...) integrationonConsent callback for server-side logging (you own the endpoint), plus an optional minimal file-based logging server in server/ (Bun + Docker, no database)npm install keksmeister
import 'keksmeister';
<keksmeister-banner
privacy-url="/datenschutz"
lang="de"
></keksmeister-banner>
No build step needed. Pick your preferred CDN:
<!-- jsDelivr (recommended) -->
<script type="module" src="https://cdn.jsdelivr.net/npm/keksmeister/dist/keksmeister.min.js"></script>
<!-- or unpkg -->
<script type="module" src="https://unpkg.com/keksmeister/dist/keksmeister.min.js"></script>
<keksmeister-banner
privacy-url="/datenschutz"
lang="de"
></keksmeister-banner>
<keksmeister-trigger position="bottom-left"></keksmeister-trigger>
Pin a specific version for production:
<script type="module" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/keksmeister.min.js"></script>
Browse all available files: keksmeister on jsDelivr
import { KeksmeisterBanner } from 'keksmeister';
const banner = document.querySelector('keksmeister-banner');
banner.config = {
categories: [
{ id: 'essential', label: 'Essential', required: true },
{ id: 'analytics', label: 'Analytics' },
{ id: 'marketing', label: 'Marketing' },
],
privacyUrl: '/datenschutz',
lang: 'de',
revision: '2',
googleConsentMode: true,
onConsent: (record) => {
// Send consent proof to your backend
fetch('/api/consent', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(record),
});
},
};
mode)banner.config = {
// ...categories, privacyUrl...
mode: 'opt-in', // default — no cookies until the visitor consents
};
opt-in (default) — all non-essential categories start inactive
until the visitor explicitly consents. Required by DSGVO/ePrivacy.opt-out — all non-essential categories start active, and the
visitor can opt out afterwards. Matches CCPA/CPRA-style "right to opt
out of sale" regimes.⚠️
mode: 'opt-out'is for CCPA-style jurisdictions only — it is unlawful for visitors in the EU/EEA. DSGVO Art. 6(1)(a) + ErwGr 32 and ePrivacy Directive Art. 5(3) require prior, opt-in consent before any non-essential cookie is set; the UK's PECR mirrors this. Only usemode: 'opt-out'for a US-only deployment, or one gated behind a geo-IP check that keeps EU/EEA (and UK) visitors on theopt-indefault. See docs/compliance.md for the full legal background.
This is the beginning of the README. Read the rest at the original. Read the full README ↗