Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -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.
26 changes: 25 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
<p align="center"><img src="./assets/banner.svg" alt="consentify" width="600"></p>

# 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/)
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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:
Expand Down
4 changes: 4 additions & 0 deletions assets/banner.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.