Initial commit: establishing the cqre.net perimeter
This commit is contained in:
@@ -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>
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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" }}
|
||||
·
|
||||
{{ range .Translations }}<a href="{{ .Permalink }}">{{ .Language.Params.label }}</a>{{ end }}
|
||||
</div>
|
||||
</footer>
|
||||
@@ -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 -}}
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user