diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..25c24b1 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,45 @@ +# Contributing to Consentify + +Thanks for your interest in contributing! + +## Prerequisites + +- Node.js 20+ +- pnpm 9+ + +## Setup + +```bash +git clone https://github.com/RomanDenysov/consentify.git +cd consentify +pnpm install +``` + +## Development + +```bash +# Build all packages +pnpm -r build + +# Run tests +pnpm test +``` + +## Code Style + +- TypeScript strict mode +- Zero runtime dependencies in `@consentify/core` +- All new features must include tests + +## Pull Request Process + +1. Fork the repository +2. Create a feature branch (`git checkout -b feat/my-feature`) +3. Make your changes and add tests +4. Run `pnpm -r build && pnpm test` to verify everything passes +5. Commit with a descriptive message (`feat: add my feature`) +6. Open a PR to `main` + +## License + +By contributing, you agree that your contributions will be licensed under the MIT License. diff --git a/README.md b/README.md index 2aaedbc..963ded8 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,11 @@ +

consentify

+ # consentify **Headless cookie consent that actually blocks scripts.** [![npm version](https://img.shields.io/npm/v/@consentify/core.svg)](https://www.npmjs.com/package/@consentify/core) -[![tests](https://img.shields.io/badge/tests-48%20passing-brightgreen)](#) +[![CI](https://github.com/RomanDenysov/consentify/actions/workflows/ci.yml/badge.svg)](https://github.com/RomanDenysov/consentify/actions/workflows/ci.yml) [![bundle size](https://img.shields.io/bundlephobia/minzip/@consentify/core)](https://bundlephobia.com/package/@consentify/core) [![zero deps](https://img.shields.io/badge/dependencies-0-brightgreen)](#) [![TypeScript](https://img.shields.io/badge/TypeScript-100%25-blue.svg)](https://www.typescriptlang.org/) @@ -33,6 +35,17 @@ consent.client.set({ analytics: true }); consent.client.get('analytics'); // true ``` +## Why Consentify? + +| | Consentify | CookieBot | CookieYes | DIY | +|---|---|---|---|---| +| Bundle size | ~2 KB | 140 KB+ | 90 KB+ | varies | +| Script blocking | `guard()` | manual | manual | manual | +| SSR support | native | none | none | manual | +| Headless (own UI) | yes | no | no | yes | +| Zero dependencies | yes | no | no | varies | +| Price | Free / OSS | from $12/mo | from $9/mo | Free | + ## The Full Integration: Blocking Google Analytics Until Consent This is what consent management is actually for -- preventing tracking scripts from loading until the user explicitly opts in. `guard()` handles the entire lifecycle: wait for consent, load the script, and optionally clean up if consent is revoked. @@ -261,8 +274,19 @@ The `'necessary'` category is always `true` and cannot be disabled. When you cha A hosted consent management platform with a visual banner editor, analytics dashboard, and compliance reporting. +- **Visual banner builder** -- drag-and-drop consent UI +- **Consent analytics dashboard** -- see opt-in/out rates +- **One-line integration** -- single script tag setup +- **Multi-language support** -- GDPR-compliant translations + [consentify.dev](https://consentify.dev) +## Roadmap + +- `@consentify/gtm` -- Google Consent Mode v2 adapter +- `@consentify/next` -- Next.js middleware with automatic cookie handling +- Geo-aware consent defaults -- show banners only where required + ## Support If you find this project useful, consider supporting its development: diff --git a/assets/banner.svg b/assets/banner.svg new file mode 100644 index 0000000..a2dde3f --- /dev/null +++ b/assets/banner.svg @@ -0,0 +1,4 @@ + + + CONSENTIFY +