diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 76b7aca..4d7953b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,3 +14,5 @@ pages: artifacts: paths: - public + rules: + - if: $CI_COMMIT_BRANCH == "master" || $CI_COMMIT_BRANCH == "main" diff --git a/config.yml b/config.yml index 8b4c264..517b2cf 100644 --- a/config.yml +++ b/config.yml @@ -71,12 +71,12 @@ languages: image: "/img/screenshots/domain-logs.webp" - title: "domain-abstract-list" - description: "Une zone simplifiée, sous forme de liste, plus rapide à modifier" - image: "/img/screenshots/domain-abstract-list.webp" + description: "Les enregistrements bruts de la zone" + image: "/img/screenshots/domain-abstract-records.webp" - title: "sources" - description: "Liste des hébergeurs existantes où récupérer les domaines" - image: "/img/screenshots/sources.png" + description: "Liste des hébergeurs existants où récupérer les domaines" + image: "/img/screenshots/providers-list.webp" params: author: @@ -87,6 +87,28 @@ params: survey: "https://feedback.happydomain.org/" tryit: "https://try.happydomain.org/" + # Screenshots cycled in the hero browser mockup (jumbo partial). + jumboscreen: + - image: "/img/screenshots/domains-list.webp" + path: "/domains" + alt: "List of your domains in happyDomain" + weight: 10 + + - image: "/img/screenshots/checks-dashboard.webp" + path: "/domains/happydomain.org" + alt: "Each domain has extensive checks" + weight: 20 + + - image: "/img/screenshots/domain-abstract.webp" + path: "/domains/happydomain.org/editor" + alt: "A zone organized by service" + weight: 30 + + - image: "/img/screenshots/zone-diff.webp" + path: "/zone/happydomain.org/records" + alt: "Reviewing changes before applying them" + weight: 40 + others_links: - text: "Sign in" href: "/en/beta/" @@ -125,12 +147,12 @@ params: image: "/img/screenshots/domain-logs.webp" - title: "domain-abstract-list" - description: "Simplified zone in list, for quicker editing" - image: "/img/screenshots/domain-abstract-list.webp" + description: "Raw records of the zone" + image: "/img/screenshots/domain-abstract-records.webp" - title: "sources" description: "Existing name service providers where pull domains" - image: "/img/screenshots/sources.png" + image: "/img/screenshots/providers-list.webp" menu: main: diff --git a/layouts/index.html b/layouts/index.html index 140e8b0..670dcc9 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -13,10 +13,14 @@ {{ partial "jumbo.html" . }} - {{ partial "carousel.html" . }} + {{ partial "work-with.html" . }} + + {{ partial "big-idea.html" . }} {{ partial "features.html" . }} + {{ partial "carousel.html" . }} + {{ partial "discover.html" . }} {{/* partial "testimonials.html" . */}} diff --git a/layouts/partials/big-idea.html b/layouts/partials/big-idea.html new file mode 100644 index 0000000..479847b --- /dev/null +++ b/layouts/partials/big-idea.html @@ -0,0 +1,72 @@ + +
+
+
+ The big idea +

Stop reading zone files.
Start managing services.

+

DNS records are an implementation detail. happyDomain groups them by what they actually do — your email, your website, your delegation — so you can edit with intent instead of decoding RFCs.

+
+ +
+
+
AWithout happyDomain
+

happydomain.org · zone file

+
; Zone: happydomain.org.
+; TTL = 3600
+
+@      IN SOA   ns1 admin 2024010101 3600 900 604800 300
+@      IN NS    ns1.happydomain.org.
+@      IN NS    ns2.happydomain.org.
+@      IN A     93.184.216.34
+@      IN AAAA  2606:2800:220:1:248:1893:25c8:1946
+@      IN MX    10 mail.happydomain.org.
+@      IN TXT   "v=spf1 include:_spf.eu ~all"
+_dmarc IN TXT   "v=DMARC1; p=none; rua=…"
+mail   IN A     93.184.216.40
+www    IN CNAME @
+@      IN CAA   0 issue "letsencrypt.org"
+
+
+
BWith happyDomain
+

happydomain.org · services

+
+
+
+
+
Website
A, AAAA on @ · CNAME on www
+
+
3 OK
+
+
+
+
+
+
+
Email
MX, SPF and DMARC policy
+
+
3 OK
+
+
+
+
+
+
+
Delegation
2 nameservers
+
+
2 OK
+
+
+
+
+
+
+
TLS / Security
CAA · Let's Encrypt only
+
+
1 OK
+
+
+

Same zone. Edit by intent, not by record type.

+
+
+
+
diff --git a/layouts/partials/jumbo.html b/layouts/partials/jumbo.html index 648f80b..3c3421a 100644 --- a/layouts/partials/jumbo.html +++ b/layouts/partials/jumbo.html @@ -1,88 +1,254 @@
-
- - Open source + + Open source

@@ -111,41 +277,93 @@

- No account needed for the demo - ~30s to first zone - 55+ providers + No account needed for the demo + ~30s to first zone + 55+ providers
- -
+ +
-
+ + diff --git a/layouts/partials/work-with.html b/layouts/partials/work-with.html new file mode 100644 index 0000000..86ef4c0 --- /dev/null +++ b/layouts/partials/work-with.html @@ -0,0 +1,18 @@ + +
+
+
Works with
+
+ OVH + Gandi + DigitalOcean + Cloudflare + Hetzner + Namecheap + BIND + Knot DNS + PowerDNS +
+ + 46 more → +
+
diff --git a/static/css/custom.css b/static/css/custom.css index d05865e..4dc5384 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -316,6 +316,104 @@ footer { } } +/* ── Trust strip ── */ +.trust { + padding: 20px 0; + border-top: 1px solid var(--bs-border-color); + border-bottom: 1px solid var(--bs-border-color); + background: var(--hd-bg-canvas); +} + +.trust-grid { + display: flex; + align-items: center; + gap: 24px; + flex-wrap: wrap; +} + +.trust-tag { + display: flex; + align-items: center; + gap: 8px; + font-size: 0.75rem; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + color: var(--hd-accent); + white-space: nowrap; +} + +.trust-tag .dot { + display: inline-block; + width: 8px; + height: 8px; + border-radius: 50%; + background: var(--hd-accent); + animation: pulse-dot 2s ease-in-out infinite; +} + +@keyframes pulse-dot { + 0%, + 100% { + opacity: 1; + transform: scale(1); + } + 50% { + opacity: 0.5; + transform: scale(0.75); + } +} + +.trust-list { + display: flex; + align-items: center; + gap: 6px; + flex-wrap: wrap; + flex: 1; +} + +.trust-list span { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 4px 12px; + border-radius: 20px; + border: 1px solid color-mix(in srgb, currentColor 20%, transparent); + font-size: 0.85rem; + font-weight: 500; + color: var(--hd-fg-3); + background: transparent; + transition: + border-color 0.2s, + color 0.2s, + background 0.2s; +} + +.trust-list span:hover { + border-color: var(--hd-accent); + color: var(--hd-accent); + background: color-mix(in srgb, var(--hd-accent) 8%, transparent); +} + +.trust-list span i { + font-size: 0.9em; + opacity: 0.7; +} + +.trust-more { + font-size: 0.8rem; + font-weight: 500; + color: var(--hd-accent); + white-space: nowrap; + text-decoration: none; + cursor: pointer; + transition: opacity 0.2s; +} + +.trust-more:hover { + opacity: 0.7; +} + @media (min-width: 768px) { #community > div > div { width: 50% !important; diff --git a/static/img/screenshots/checks-dashboard.webp b/static/img/screenshots/checks-dashboard.webp new file mode 100644 index 0000000..22c06a2 Binary files /dev/null and b/static/img/screenshots/checks-dashboard.webp differ diff --git a/static/img/screenshots/domain-abstract-records.webp b/static/img/screenshots/domain-abstract-records.webp new file mode 100644 index 0000000..f783596 Binary files /dev/null and b/static/img/screenshots/domain-abstract-records.webp differ diff --git a/static/img/screenshots/domain-abstract.webp b/static/img/screenshots/domain-abstract.webp index 2422e33..07adce3 100644 Binary files a/static/img/screenshots/domain-abstract.webp and b/static/img/screenshots/domain-abstract.webp differ diff --git a/static/img/screenshots/domain-services.png b/static/img/screenshots/domain-services.png index b1783a5..91e3780 100644 Binary files a/static/img/screenshots/domain-services.png and b/static/img/screenshots/domain-services.png differ diff --git a/static/img/screenshots/domain-services.webp b/static/img/screenshots/domain-services.webp index 8f8fd5b..531e956 100644 Binary files a/static/img/screenshots/domain-services.webp and b/static/img/screenshots/domain-services.webp differ diff --git a/static/img/screenshots/domains-list.webp b/static/img/screenshots/domains-list.webp index 2d83d3e..6eb6f33 100644 Binary files a/static/img/screenshots/domains-list.webp and b/static/img/screenshots/domains-list.webp differ diff --git a/static/img/screenshots/home.webp b/static/img/screenshots/home.webp new file mode 100644 index 0000000..99e79b0 Binary files /dev/null and b/static/img/screenshots/home.webp differ diff --git a/static/img/screenshots/providers-list.webp b/static/img/screenshots/providers-list.webp new file mode 100644 index 0000000..ee16142 Binary files /dev/null and b/static/img/screenshots/providers-list.webp differ diff --git a/static/img/screenshots/sources.png b/static/img/screenshots/sources.png deleted file mode 100644 index ae1e90b..0000000 Binary files a/static/img/screenshots/sources.png and /dev/null differ diff --git a/static/img/screenshots/zone-diff.webp b/static/img/screenshots/zone-diff.webp index 0d3363a..3fac9ae 100644 Binary files a/static/img/screenshots/zone-diff.webp and b/static/img/screenshots/zone-diff.webp differ