feat: initial public release

ConsentOS — a privacy-first cookie consent management platform.

Self-hosted, source-available alternative to OneTrust, Cookiebot, and
CookieYes. Full standards coverage (IAB TCF v2.2, GPP v1, Google
Consent Mode v2, GPC, Shopify Customer Privacy API), multi-tenant
architecture with role-based access, configuration cascade
(system → org → group → site → region), dark-pattern detection in
the scanner, and a tamper-evident consent record audit trail.

This is the initial public release. Prior development history is
retained internally.

See README.md for the feature list, architecture overview, and
quick-start instructions. Licensed under the Elastic Licence 2.0 —
self-host freely; do not resell as a managed service.
This commit is contained in:
James Cottrill
2026-04-13 14:20:15 +00:00
commit fbf26453f2
341 changed files with 62807 additions and 0 deletions

31
assets/brand/README.md Normal file
View File

@@ -0,0 +1,31 @@
# Brand assets
Logo, palette, and typography for ConsentOS. See [the brand guidelines](https://github.com/consentos/consentos/wiki/Brand) for full specification.
## Logo
| Asset | When to use |
|-------|-------------|
| `logo-mark.svg` | Icon-only. Favicons, app launchers, anywhere the wordmark won't fit. |
| `logo-lockup.svg` | Icon + wordmark on light backgrounds. Default for headers, READMEs. |
| `logo-lockup-dark.svg` | Icon + wordmark on dark or photographic backgrounds. |
| `favicon.svg` | Browser tab icon. 32×32 viewBox. |
## Palette
| Token | Hex | Use |
|-------|-----|-----|
| Navy | `#1B3C7C` | Primary brand colour, headings, icon mark |
| Blue | `#2C6AE4` | Action / CTA, links |
| Blue mid | `#4D8AFF` | Accent (icon dot, hover) |
| Blue tint | `#EEF3FF` | Pale backgrounds, surfaces |
| Consent green | `#0DAA72` | Confirmed / success state |
| Ink | `#0E1929` | Body text |
| Slate | `#5A6E96` | Secondary text |
| Surface | `#F5F8FC` | Card backgrounds |
| Border | `#DDE6F4` | Dividers |
## Typography
- **Display & headings:** [Sora](https://fonts.google.com/specimen/Sora) — weights 300 / 400 / 600 / 700
- **Body & UI:** [DM Sans](https://fonts.google.com/specimen/DM+Sans) — weights 300 / 400 / 500

5
assets/brand/favicon.svg Normal file
View File

@@ -0,0 +1,5 @@
<svg width="32" height="32" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="48" height="48" rx="11" fill="#1B3C7C"/>
<path d="M 33.9 14.1 A 13.5 13.5 0 1 0 33.9 33.9" stroke="white" stroke-width="3.5" stroke-linecap="round" fill="none"/>
<circle cx="33.9" cy="33.9" r="4" fill="#4D8AFF"/>
</svg>

After

Width:  |  Height:  |  Size: 335 B

View File

@@ -0,0 +1,7 @@
<svg width="220" height="48" viewBox="0 0 220 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="0" y="0" width="48" height="48" rx="11" fill="rgba(255,255,255,0.12)"/>
<path d="M 33.9 14.1 A 13.5 13.5 0 1 0 33.9 33.9" stroke="white" stroke-width="3.5" stroke-linecap="round" fill="none"/>
<circle cx="33.9" cy="33.9" r="4" fill="#4D8AFF"/>
<text x="62" y="32" font-family="Sora, system-ui, sans-serif" font-size="24" font-weight="600" fill="#FFFFFF" letter-spacing="-0.24">Consent</text>
<text x="159" y="32" font-family="Sora, system-ui, sans-serif" font-size="24" font-weight="600" fill="#4D8AFF" letter-spacing="-0.24">OS</text>
</svg>

After

Width:  |  Height:  |  Size: 660 B

View File

@@ -0,0 +1,7 @@
<svg width="220" height="48" viewBox="0 0 220 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="0" y="0" width="48" height="48" rx="11" fill="#1B3C7C"/>
<path d="M 33.9 14.1 A 13.5 13.5 0 1 0 33.9 33.9" stroke="white" stroke-width="3.5" stroke-linecap="round" fill="none"/>
<circle cx="33.9" cy="33.9" r="4" fill="#4D8AFF"/>
<text x="62" y="32" font-family="Sora, system-ui, sans-serif" font-size="24" font-weight="600" fill="#1B3C7C" letter-spacing="-0.24">Consent</text>
<text x="159" y="32" font-family="Sora, system-ui, sans-serif" font-size="24" font-weight="600" fill="#2C6AE4" letter-spacing="-0.24">OS</text>
</svg>

After

Width:  |  Height:  |  Size: 645 B

View File

@@ -0,0 +1,5 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="48" height="48" rx="11" fill="#1B3C7C"/>
<path d="M 33.9 14.1 A 13.5 13.5 0 1 0 33.9 33.9" stroke="white" stroke-width="3.5" stroke-linecap="round" fill="none"/>
<circle cx="33.9" cy="33.9" r="4" fill="#4D8AFF"/>
</svg>

After

Width:  |  Height:  |  Size: 335 B