Initial commit: establishing the cqre.net perimeter

This commit is contained in:
2026-06-15 07:59:56 +02:00
commit 7aed2b4f70
65 changed files with 5131 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="{{ .Language.Lang }}">
<head>
{{ partial "head.html" . }}
</head>
<body>
{{ partial "header.html" . }}
<main>
{{ block "main" . }}{{ end }}
</main>
{{ partial "footer.html" . }}
</body>
</html>
+27
View File
@@ -0,0 +1,27 @@
{{ define "main" }}
<section class="product-hero">
<div class="container">
{{ with .Params.eyebrow }}<div class="hero-eyebrow eyebrow">{{ . }}</div>{{ end }}
<h1>{{ .Title }}</h1>
{{ with .Params.lead }}<p class="lead">{{ . }}</p>{{ end }}
</div>
</section>
<div class="page-content">
<div class="container" style="max-width: var(--max-width);">
{{ .Content }}
<div class="card-grid mt-4">
{{ range .Pages }}
<a class="card" href="{{ .RelPermalink }}" style="text-decoration:none; color:inherit;">
{{ with .Params.icon }}<div class="card-icon">{{ . }}</div>{{ end }}
<h3>{{ .Title }}</h3>
<p>{{ .Description }}</p>
<div class="card-footer">
{{ with .Params.badge }}<span class="badge badge-{{ .color }}">{{ .text }}</span>{{ end }}
</div>
</a>
{{ end }}
</div>
</div>
</div>
{{ end }}
+34
View File
@@ -0,0 +1,34 @@
{{ define "main" }}
<div class="breadcrumb">
<div class="breadcrumb-inner">
<a href="{{ "/" | relLangURL }}">CQRE.NET</a>
{{ with .Parent }}
<span class="sep">/</span>
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
{{ end }}
<span class="sep">/</span>
<span>{{ .Title }}</span>
</div>
</div>
<section class="product-hero">
<div class="container">
{{ with .Params.eyebrow }}<div class="hero-eyebrow eyebrow">{{ . }}</div>{{ end }}
<h1>{{ .Title }}</h1>
{{ with .Params.lead }}<p class="lead">{{ . }}</p>{{ end }}
{{ with .Params.actions }}
<div class="actions">
{{ range . }}
<a href="{{ .url }}" class="btn {{ if .primary }}btn-primary{{ else }}btn-outline{{ end }}" {{ if .external }}target="_blank" rel="noopener"{{ end }}>{{ .label }}</a>
{{ end }}
</div>
{{ end }}
</div>
</section>
<div class="page-content">
<div class="container">
{{ .Content }}
</div>
</div>
{{ end }}
+124
View File
@@ -0,0 +1,124 @@
{{ define "main" }}
<!-- Hero -->
<section class="hero">
<div class="container">
<div class="hero-eyebrow">Cybersecurity · M365 Governance · Open Source</div>
<h1>{{ .Params.heroTitle | default .Site.Title }}</h1>
<p class="hero-sub">{{ .Params.heroSub | default (i18n "home_hero_subtitle") }}</p>
<div class="hero-actions">
<a href="{{ "/products/" | relLangURL }}" class="btn btn-primary">{{ i18n "home_cta_products" }}</a>
<a href="{{ "/consulting/" | relLangURL }}" class="btn btn-outline">{{ i18n "home_cta_consulting" }}</a>
</div>
</div>
</section>
<!-- Products: PULSAR, ASTRAL, AURORA -->
<section class="section section-alt">
<div class="container">
<div class="section-header">
<span class="section-label">{{ i18n "home_section_products" }}</span>
<h2>{{ .Params.productsTitle | default "The M365 Governance Suite" }}</h2>
<p>{{ .Params.productsSub | default "Three complementary open-source tools for complete visibility and control over your Microsoft 365 tenant." }}</p>
</div>
<div style="overflow-x:auto; margin-bottom: 2.5rem;">
<table class="stack-table">
<thead>
<tr>
<th>Product</th>
<th>What it answers</th>
<th>Model</th>
</tr>
</thead>
<tbody>
<tr>
<td class="product-name"><a href="{{ "/products/pulsar/" | relLangURL }}">PULSAR</a></td>
<td>{{ .Params.pulsarTagline | default "What happened, when, and by whom?" }}</td>
<td><span class="badge badge-green">{{ i18n "product_free_open_source" }}</span></td>
</tr>
<tr>
<td class="product-name"><a href="{{ "/products/astral/" | relLangURL }}">ASTRAL</a></td>
<td>{{ .Params.astralTagline | default "What does my config look like and what changed?" }}</td>
<td><span class="badge badge-green">{{ i18n "product_free_open_source" }}</span></td>
</tr>
<tr>
<td class="product-name"><a href="{{ "/products/aurora/" | relLangURL }}">AURORA</a></td>
<td>{{ .Params.auroraTagline | default "What does it mean and what should I do?" }}</td>
<td><span class="badge badge-orange">{{ i18n "product_paid" }}</span></td>
</tr>
</tbody>
</table>
</div>
<div class="card-grid">
<a class="card" href="{{ "/products/pulsar/" | relLangURL }}" style="text-decoration:none;color:inherit;">
<div class="card-icon">📡</div>
<h3>PULSAR</h3>
<p>{{ .Params.pulsarDesc | default "Continuous M365 audit log ingestion with search, alerting, SIEM forwarding, and an MCP server for AI-assisted querying. Indefinite retention. Your data, your infrastructure." }}</p>
<div class="card-footer"><span class="badge badge-green">Free & Open Source</span></div>
</a>
<a class="card" href="{{ "/products/astral/" | relLangURL }}" style="text-decoration:none;color:inherit;">
<div class="card-icon">🌌</div>
<h3>ASTRAL</h3>
<p>{{ .Params.astralDesc | default "Git-tracked snapshots of M365 configuration with drift detection, PR-based review and approval, and baseline restore. Every config change, forever." }}</p>
<div class="card-footer"><span class="badge badge-green">Free & Open Source</span></div>
</a>
<a class="card" href="{{ "/products/aurora/" | relLangURL }}" style="text-decoration:none;color:inherit;">
<div class="card-icon">🌅</div>
<h3>AURORA</h3>
<p>{{ .Params.auroraDesc | default "A unified AI-assisted operations layer connecting PULSAR and ASTRAL. Cross-tool diagnostics, multi-scope orchestration, and enriched SIEM forwarding." }}</p>
<div class="card-footer"><span class="badge badge-orange">Commercial</span></div>
</a>
</div>
</div>
</section>
<!-- Services -->
<section class="section">
<div class="container">
<div class="section-header">
<span class="section-label">{{ i18n "home_section_services" }}</span>
<h2>{{ .Params.servicesTitle | default "Security That Grows Stronger" }}</h2>
<p>{{ .Params.servicesSub | default "Consulting and strategic services built around one principle: your organization should emerge from every disruption more capable than before." }}</p>
</div>
<div class="card-grid">
<a class="card" href="{{ "/consulting/" | relLangURL }}" style="text-decoration:none;color:inherit;">
<div class="card-icon">🛡️</div>
<h3>{{ i18n "consulting_title" }}</h3>
<p>{{ .Params.consultingDesc | default "The Brownhat methodology: start with what you own, close the kill chain, build retained capability. Modular engagements from 30 days upward — no monolithic programs." }}</p>
<div class="card-footer">
<span class="badge badge-blue">14 Modules</span>
<span class="badge badge-blue">NIS2 · DORA · ISO 27001</span>
</div>
</a>
<a class="card" href="{{ "/vciso/" | relLangURL }}" style="text-decoration:none;color:inherit;">
<div class="card-icon">🧭</div>
<h3>{{ i18n "vciso_title" }}</h3>
<p>{{ .Params.vcisoDesc | default "Fractional security leadership for organisations that need strategic direction without a full-time hire. Risk ownership, board reporting, vendor governance, and program management." }}</p>
<div class="card-footer">
<span class="badge badge-blue">Strategic</span>
<span class="badge badge-blue">Retainer</span>
</div>
</a>
<a class="card" href="{{ "/housekeeping/" | relLangURL }}" style="text-decoration:none;color:inherit;">
<div class="card-icon">🧹</div>
<h3>{{ i18n "housekeeping_title" }}</h3>
<p>{{ .Params.housekeepingDesc | default "A dedicated rented team that drains your attack surface continuously. Client-Directed for steady attrition, Kill-Chain for collapsing existential paths fast. The sign flip from growth to decay." }}</p>
<div class="card-footer">
<span class="badge badge-blue">Two Modes</span>
<span class="badge badge-blue">Managed Service</span>
</div>
</a>
</div>
</div>
</section>
{{ with .Content }}
<section class="section-sm">
<div class="container">{{ . }}</div>
</section>
{{ end }}
{{ end }}
+24
View File
@@ -0,0 +1,24 @@
<footer class="site-footer">
<div class="footer-inner">
<div class="footer-brand">
<a class="site-logo" href="{{ "/" | relLangURL }}">
<img src="{{ "images/logo.svg" | relURL }}" alt="CQRE.NET" width="28" height="28">
CQRE<span style="color:var(--accent)">.NET</span>
</a>
<p>{{ i18n "footer_tagline" }}</p>
</div>
<ul class="footer-links">
<li><a href="{{ "/products/" | relLangURL }}">{{ i18n "nav_products" }}</a></li>
<li><a href="{{ "/consulting/" | relLangURL }}">{{ i18n "nav_consulting" }}</a></li>
<li><a href="{{ "/vciso/" | relLangURL }}">{{ i18n "nav_vciso" }}</a></li>
<li><a href="{{ "/housekeeping/" | relLangURL }}">{{ i18n "nav_housekeeping" }}</a></li>
<li><a href="{{ "/about/" | relLangURL }}">{{ i18n "nav_about" }}</a></li>
<li><a href="https://github.com/cqrenet" target="_blank" rel="noopener">{{ i18n "footer_github" }}</a></li>
</ul>
</div>
<div class="footer-copy container">
© {{ now.Year }} CQRE.NET Ltd. {{ i18n "footer_rights" }}
&nbsp;·&nbsp;
{{ range .Translations }}<a href="{{ .Permalink }}">{{ .Language.Params.label }}</a>{{ end }}
</div>
</footer>
+9
View File
@@ -0,0 +1,9 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ if .IsHome }}{{ .Site.Title }} — {{ .Site.Params.description }}{{ else }}{{ .Title }} | {{ .Site.Title }}{{ end }}</title>
<meta name="description" content="{{ with .Description }}{{ . }}{{ else }}{{ .Site.Params.description }}{{ end }}">
<link rel="stylesheet" href="{{ "css/main.css" | relURL }}">
<link rel="icon" type="image/svg+xml" href="{{ "images/logo.svg" | relURL }}">
{{ range .AlternativeOutputFormats -}}
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
{{ end -}}
+27
View File
@@ -0,0 +1,27 @@
<header class="site-header">
<nav class="nav-inner">
<a class="site-logo" href="{{ "/" | relLangURL }}">
<img src="{{ "images/logo.svg" | relURL }}" alt="CQRE.NET" width="36" height="36">
CQRE<span>.NET</span>
</a>
<button class="nav-mobile-toggle" aria-label="Toggle menu" onclick="document.querySelector('.nav-links').classList.toggle('open')">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
</button>
<ul class="nav-links">
<li><a href="{{ "/products/" | relLangURL }}"{{ if hasPrefix .RelPermalink "/products" }} class="active"{{ end }}>{{ i18n "nav_products" }}</a></li>
<li><a href="{{ "/consulting/" | relLangURL }}"{{ if hasPrefix .RelPermalink "/consulting" }} class="active"{{ end }}>{{ i18n "nav_consulting" }}</a></li>
<li><a href="{{ "/vciso/" | relLangURL }}"{{ if eq .RelPermalink "/vciso/" }} class="active"{{ end }}>{{ i18n "nav_vciso" }}</a></li>
<li><a href="{{ "/housekeeping/" | relLangURL }}"{{ if eq .RelPermalink "/housekeeping/" }} class="active"{{ end }}>{{ i18n "nav_housekeeping" }}</a></li>
<li><a href="{{ "/about/" | relLangURL }}"{{ if eq .RelPermalink "/about/" }} class="active"{{ end }}>{{ i18n "nav_about" }}</a></li>
{{ range .Translations }}
<li><a class="nav-lang" href="{{ .Permalink }}">{{ i18n "lang_switch" }}</a></li>
{{ end }}
</ul>
</nav>
</header>