Compare commits
9 commits
bbe9605843
...
b479b8a946
| Author | SHA1 | Date | |
|---|---|---|---|
| b479b8a946 | |||
| 2df87b9193 | |||
| 2272761843 | |||
| b11e962344 | |||
| ccfb30dbc2 | |||
| 24eb85edc1 | |||
| 3fca077425 | |||
| 69b17ea1f2 | |||
| 9b15e8e3ea |
|
|
@ -14,3 +14,5 @@ pages:
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- public
|
- public
|
||||||
|
rules:
|
||||||
|
- if: $CI_COMMIT_BRANCH == "master" || $CI_COMMIT_BRANCH == "main"
|
||||||
|
|
|
||||||
36
config.yml
|
|
@ -71,12 +71,12 @@ languages:
|
||||||
image: "/img/screenshots/domain-logs.webp"
|
image: "/img/screenshots/domain-logs.webp"
|
||||||
|
|
||||||
- title: "domain-abstract-list"
|
- title: "domain-abstract-list"
|
||||||
description: "Une zone simplifiée, sous forme de liste, plus rapide à modifier"
|
description: "Les enregistrements bruts de la zone"
|
||||||
image: "/img/screenshots/domain-abstract-list.webp"
|
image: "/img/screenshots/domain-abstract-records.webp"
|
||||||
|
|
||||||
- title: "sources"
|
- title: "sources"
|
||||||
description: "Liste des hébergeurs existantes où récupérer les domaines"
|
description: "Liste des hébergeurs existants où récupérer les domaines"
|
||||||
image: "/img/screenshots/sources.png"
|
image: "/img/screenshots/providers-list.webp"
|
||||||
|
|
||||||
params:
|
params:
|
||||||
author:
|
author:
|
||||||
|
|
@ -87,6 +87,28 @@ params:
|
||||||
survey: "https://feedback.happydomain.org/"
|
survey: "https://feedback.happydomain.org/"
|
||||||
tryit: "https://try.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:
|
others_links:
|
||||||
- text: "Sign in"
|
- text: "Sign in"
|
||||||
href: "/en/beta/"
|
href: "/en/beta/"
|
||||||
|
|
@ -125,12 +147,12 @@ params:
|
||||||
image: "/img/screenshots/domain-logs.webp"
|
image: "/img/screenshots/domain-logs.webp"
|
||||||
|
|
||||||
- title: "domain-abstract-list"
|
- title: "domain-abstract-list"
|
||||||
description: "Simplified zone in list, for quicker editing"
|
description: "Raw records of the zone"
|
||||||
image: "/img/screenshots/domain-abstract-list.webp"
|
image: "/img/screenshots/domain-abstract-records.webp"
|
||||||
|
|
||||||
- title: "sources"
|
- title: "sources"
|
||||||
description: "Existing name service providers where pull domains"
|
description: "Existing name service providers where pull domains"
|
||||||
image: "/img/screenshots/sources.png"
|
image: "/img/screenshots/providers-list.webp"
|
||||||
|
|
||||||
menu:
|
menu:
|
||||||
main:
|
main:
|
||||||
|
|
|
||||||
|
|
@ -1,104 +0,0 @@
|
||||||
+++
|
|
||||||
title = "happyDomain for IT Managers"
|
|
||||||
description = "Get full visibility over your organization's domain names. happyDomain provides IT managers with centralized control, change tracking, and team oversight."
|
|
||||||
layout = "usage"
|
|
||||||
+++
|
|
||||||
|
|
||||||
<div class="container-fluid mt-3 pt-4 pb-3">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2 col-xl-6 offset-xl-3">
|
|
||||||
<p class="lead text-center">
|
|
||||||
An interface to <span class="text-hilight">regain control</span> of your domains<br>
|
|
||||||
and <span class="text-hilight">forget frictions</span> of their management.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container mb-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Keep track of every change with the built-in history.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
happy<span class="fw-bold">Domain</span> allows you to go back at any time in case of a problem.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
The history allows you to easily track the latest changes, keeping track of who made them.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7 py-2 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-logs.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-green-50)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Share the management of zones between your teams.
|
|
||||||
<small class="text-muted">
|
|
||||||
(coming soon)
|
|
||||||
</small>
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Reduce friction between your teams by allowing them to manage records related to their projects (internal or even public).
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
happy<span class="fw-bold">Domain</span> implements a powerful access control system allowing you to delegate all or part of a zone, up to the recording.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Centralize and synchronize your domain portfolios.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
happy<span class="fw-bold">Domain</span> connects to more than 25 hosting providers worldwide. You can manage them in the interface with one click.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domains-list.webp" alt="Liste des domaines, regroupés astucieusement selon vos besoins">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-plum-100)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/zone-diff.webp" alt="Relisiez puis confirmer les modifications qui seront appliquées">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Keep track of the purpose of each sub-domain.
|
|
||||||
<small class="text-muted">
|
|
||||||
(coming soon)
|
|
||||||
</small>
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
happy<span class="fw-bold">Domain</span> allows you to set an expiration date on your subdomains so that a temporary event and its servers do not remain accessible, simply because a closing ticket has not been processed. We take care of it automatically.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
95
content/use-happyDomain/cio.en.md
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
+++
|
||||||
|
title = "happyDomain for IT Managers"
|
||||||
|
description = "Get full visibility over your organization's domain names. happyDomain provides IT managers with centralized control, change tracking, and team oversight."
|
||||||
|
layout = "usage"
|
||||||
|
+++
|
||||||
|
|
||||||
|
{{< usage-lead >}}
|
||||||
|
Your organization's domains, <span class="text-hilight px-1">fully visible</span>, <span class="text-hilight px-1">under control</span> and <span class="text-hilight px-1">auditable</span>, whoever the providers are.
|
||||||
|
{{< /usage-lead >}}
|
||||||
|
|
||||||
|
{{< usage-points title="Does this sound familiar?" >}}
|
||||||
|
{{< usage-point icon="diagram-3" title="Scattered everywhere" >}}
|
||||||
|
Domains spread across registrars, cloud accounts and legacy hosts. Nobody has the full picture until something breaks.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="person-lock" title="Locked behind one person" >}}
|
||||||
|
Every DNS change waits for the one engineer who holds the registrar credentials. A bottleneck, and a single point of failure.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="eye-slash" title="Failures found by users" >}}
|
||||||
|
An expired domain, a broken delegation, a forgotten subdomain still pointing at a decommissioned server, all discovered in production.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< /usage-points >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="See your entire domain portfolio in one place."
|
||||||
|
image="/img/screenshots/domains-list.webp"
|
||||||
|
alt="List of domains from several providers, grouped by need"
|
||||||
|
url="app.happydomain.org/domains"
|
||||||
|
>}}
|
||||||
|
happy<span class="fw-bold">Domain</span> connects to more than 25 hosting providers worldwide: registrars, cloud DNS, CDNs and your on-premise servers.
|
||||||
|
|
||||||
|
Import a provider in one click and get a single, always up-to-date inventory of every domain your organization owns. No more spreadsheets, no more guessing which account holds what.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Catch incidents before your users do."
|
||||||
|
image="/img/screenshots/checks-dashboard.webp"
|
||||||
|
alt="Monitoring dashboard showing the status of every check on a domain"
|
||||||
|
url="app.happydomain.org/domains/example.com/checks"
|
||||||
|
flip="true"
|
||||||
|
bg="green"
|
||||||
|
>}}
|
||||||
|
happy<span class="fw-bold">Domain</span>'s checkers continuously watch over your whole portfolio: expirations, DNSSEC, delegation, certificates and service availability, with a clear status for each domain.
|
||||||
|
|
||||||
|
Your teams are notified the moment something changes state. Silent failures become actionable alerts, before they become outages.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Review every change before it reaches production."
|
||||||
|
image="/img/screenshots/zone-diff.webp"
|
||||||
|
alt="Review and confirm the changes that will be applied"
|
||||||
|
url="app.happydomain.org/domains/example.com/diff"
|
||||||
|
>}}
|
||||||
|
No change is applied blindly: happy<span class="fw-bold">Domain</span> shows the exact difference between the current zone and the new one, and asks for confirmation.
|
||||||
|
|
||||||
|
A typo in a record no longer takes a service down. Your team sees what will change, validates it, then deploys. It works like a code review, for your DNS.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="A full audit trail, and a way back."
|
||||||
|
image="/img/screenshots/domain-logs.webp"
|
||||||
|
alt="Domain logs showing change history"
|
||||||
|
url="app.happydomain.org/domains/example.com/logs"
|
||||||
|
flip="true"
|
||||||
|
bg="plum"
|
||||||
|
>}}
|
||||||
|
Every modification is recorded: what changed, when, and who made it. When an auditor (or an incident) asks "who touched this zone?", the answer is one click away.
|
||||||
|
|
||||||
|
And because the entire history is kept, you can roll any zone back to a previous state at any time.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Delegate to your teams, without losing control."
|
||||||
|
image="/img/screenshots/domain-abstract.webp"
|
||||||
|
alt="Zone management shared between teams"
|
||||||
|
url="app.happydomain.org/domains/example.com"
|
||||||
|
coming_soon="true"
|
||||||
|
>}}
|
||||||
|
Let each team manage the records related to its own projects, internal or public, instead of queuing tickets to a central admin.
|
||||||
|
|
||||||
|
happy<span class="fw-bold">Domain</span>'s fine-grained access control lets you delegate all or part of a zone, down to a single record. Teams move fast; you keep the oversight.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="No more forgotten subdomains."
|
||||||
|
image="/img/screenshots/domain-services.webp"
|
||||||
|
alt="Services attached to a domain, each with a clear purpose"
|
||||||
|
url="app.happydomain.org/domains/example.com/services"
|
||||||
|
flip="true"
|
||||||
|
bg="green"
|
||||||
|
coming_soon="true"
|
||||||
|
>}}
|
||||||
|
Document the purpose of every subdomain, and set an expiration date on temporary ones: a marketing event, a demo, a test environment.
|
||||||
|
|
||||||
|
When the date comes, happy<span class="fw-bold">Domain</span> cleans up automatically. Stale records pointing at decommissioned servers (the classic path to subdomain takeover) simply stop accumulating.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
@ -1,104 +0,0 @@
|
||||||
+++
|
|
||||||
title = "happyDomain pour les DSI"
|
|
||||||
description = "Obtenez une visibilité complète sur les noms de domaine de votre organisation. happyDomain offre aux DSI un contrôle centralisé, un suivi des changements et une supervision d'équipe."
|
|
||||||
layout = "usage"
|
|
||||||
+++
|
|
||||||
|
|
||||||
<div class="container-fluid mt-3 pt-4 pb-3">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2 col-xl-6 offset-xl-3">
|
|
||||||
<p class="lead text-center">
|
|
||||||
Une interface pour <span class="text-hilight">reprendre le contrôle</span> de ses domaines<br>
|
|
||||||
et <span class="text-hilight">oublier les frictions</span> créées par leur gestion.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container mb-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Garder une trace de chaque modification avec l'historique intégré.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
happy<span class="fw-bold">Domain</span> vous permet de revenir en arrière à n'importe quel moment en cas de problème.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
L'historique vous permet de vous repérer facilement dans les dernières modifications, en gardant une trace des intervenants.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7 py-2 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-logs.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-green-50)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Partagez la gestion des zones entre vos équipes.
|
|
||||||
<small class="text-muted">
|
|
||||||
(bientôt disponible)
|
|
||||||
</small>
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Réduisez les points de frictions entre vos équipes en leur permettant de gérer les enregistrements relatifs à leurs projets (internes ou publics).
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
happy<span class="fw-bold">Domain</span> met en place un puissant système de contrôle d'accès permettant de déléguer tout ou partie d'une zone, jusqu'à l'enregistrement.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Centraliser et synchroniser vos portefeuilles de domaines.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
happy<span class="fw-bold">Domain</span> se connecte à plus de 25 hébergeurs à travers le monde. Vous pouvez les gérer dans l'interface en un clic.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domains-list.webp" alt="Liste des domaines, regroupés astucieusement selon vos besoins">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-plum-100)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/zone-diff.webp" alt="Relisiez puis confirmer les modifications qui seront appliquées">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Garder une trace de la raison d'être de chaque sous-domaine.
|
|
||||||
<small class="text-muted">
|
|
||||||
(bientôt disponible)
|
|
||||||
</small>
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
happy<span class="fw-bold">Domain</span> vous permet de fixer une date d'expiration sur vos sous-domaines pour éviter qu'un événement temporaire et ses serveurs restent accessibles simplement parce qu'un ticket de fermeture n'a pas été traité. On s'en occupe automatiquement.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
95
content/use-happyDomain/cio.fr.md
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
+++
|
||||||
|
title = "happyDomain pour les DSI"
|
||||||
|
description = "Obtenez une visibilité complète sur les noms de domaine de votre organisation. happyDomain offre aux DSI un contrôle centralisé, un suivi des changements et une supervision d'équipe."
|
||||||
|
layout = "usage"
|
||||||
|
+++
|
||||||
|
|
||||||
|
{{< usage-lead >}}
|
||||||
|
Les domaines de votre organisation, <span class="text-hilight px-1">pleinement visibles</span>, <span class="text-hilight px-1">sous contrôle</span> et <span class="text-hilight px-1">auditables</span>, quels que soient vos hébergeurs.
|
||||||
|
{{< /usage-lead >}}
|
||||||
|
|
||||||
|
{{< usage-points title="Ça vous parle ?" >}}
|
||||||
|
{{< usage-point icon="diagram-3" title="Éparpillés un peu partout" >}}
|
||||||
|
Des domaines répartis entre registrars, comptes cloud et serveurs hérités. Personne n'a la vision d'ensemble jusqu'à ce que quelque chose casse.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="person-lock" title="Aux mains d'une seule personne" >}}
|
||||||
|
Chaque modification DNS attend l'unique ingénieur qui détient les accès au registrar. Un goulot d'étranglement, et un point de défaillance unique.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="eye-slash" title="Des pannes découvertes par les utilisateurs" >}}
|
||||||
|
Un domaine expiré, une délégation cassée, un sous-domaine oublié qui pointe encore vers un serveur décommissionné : autant de problèmes découverts en production.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< /usage-points >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Visualisez tout votre portefeuille de domaines au même endroit."
|
||||||
|
image="/img/screenshots/domains-list.webp"
|
||||||
|
url="app.happydomain.org/domains"
|
||||||
|
alt="Liste des domaines de plusieurs hébergeurs, regroupés selon vos besoins"
|
||||||
|
>}}
|
||||||
|
happy<span class="fw-bold">Domain</span> se connecte à plus de 25 hébergeurs à travers le monde : registrars, DNS cloud, CDN et vos serveurs internes.
|
||||||
|
|
||||||
|
Importez un hébergeur en un clic et obtenez un inventaire unique et toujours à jour de chaque domaine que possède votre organisation. Fini les tableurs, fini les devinettes sur le compte qui héberge quoi.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Détectez les incidents avant vos utilisateurs."
|
||||||
|
image="/img/screenshots/checks-dashboard.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/checks"
|
||||||
|
alt="Tableau de bord de supervision affichant l'état de chaque vérification d'un domaine"
|
||||||
|
flip="true"
|
||||||
|
bg="green"
|
||||||
|
>}}
|
||||||
|
Les vérificateurs de happy<span class="fw-bold">Domain</span> surveillent en continu l'ensemble de votre portefeuille : expirations, DNSSEC, délégation, certificats et disponibilité des services, avec un statut clair pour chaque domaine.
|
||||||
|
|
||||||
|
Vos équipes sont notifiées dès qu'un état change. Les pannes silencieuses deviennent des alertes exploitables, avant de devenir des incidents.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Relisez chaque modification avant qu'elle n'atteigne la production."
|
||||||
|
image="/img/screenshots/zone-diff.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/diff"
|
||||||
|
alt="Relisez puis confirmez les modifications qui seront appliquées"
|
||||||
|
>}}
|
||||||
|
Aucune modification n'est appliquée à l'aveugle : happy<span class="fw-bold">Domain</span> affiche la différence exacte entre la zone actuelle et la nouvelle, et demande confirmation.
|
||||||
|
|
||||||
|
Une faute de frappe dans un enregistrement ne met plus un service à terre. Votre équipe voit ce qui va changer, le valide, puis déploie. Cela fonctionne comme une revue de code, mais pour votre DNS.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Une piste d'audit complète, et un retour en arrière possible."
|
||||||
|
image="/img/screenshots/domain-logs.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/logs"
|
||||||
|
alt="Historique des modifications d'un domaine"
|
||||||
|
flip="true"
|
||||||
|
bg="plum"
|
||||||
|
>}}
|
||||||
|
Chaque modification est enregistrée : ce qui a changé, quand, et par qui. Lorsqu'un auditeur (ou un incident) demande « qui a touché à cette zone ? », la réponse est à un clic.
|
||||||
|
|
||||||
|
Et puisque tout l'historique est conservé, vous pouvez restaurer n'importe quelle zone à un état antérieur à tout moment.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Déléguez à vos équipes, sans perdre le contrôle."
|
||||||
|
image="/img/screenshots/domain-abstract.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com"
|
||||||
|
alt="Gestion d'une zone partagée entre les équipes"
|
||||||
|
coming_soon="true"
|
||||||
|
>}}
|
||||||
|
Laissez chaque équipe gérer les enregistrements liés à ses propres projets, internes ou publics, plutôt que d'empiler les tickets auprès d'un administrateur central.
|
||||||
|
|
||||||
|
Le contrôle d'accès fin de happy<span class="fw-bold">Domain</span> vous permet de déléguer tout ou partie d'une zone, jusqu'à l'enregistrement près. Les équipes avancent vite ; vous gardez la supervision.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Fini les sous-domaines oubliés."
|
||||||
|
image="/img/screenshots/domain-services.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/services"
|
||||||
|
alt="Services rattachés à un domaine, chacun avec un objectif clair"
|
||||||
|
flip="true"
|
||||||
|
bg="green"
|
||||||
|
coming_soon="true"
|
||||||
|
>}}
|
||||||
|
Documentez la raison d'être de chaque sous-domaine, et fixez une date d'expiration sur les sous-domaines temporaires : un événement marketing, une démo, un environnement de test.
|
||||||
|
|
||||||
|
Le moment venu, happy<span class="fw-bold">Domain</span> fait le ménage automatiquement. Les enregistrements obsolètes pointant vers des serveurs décommissionnés (le chemin classique vers le détournement de sous-domaine) cessent simplement de s'accumuler.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
@ -1,126 +0,0 @@
|
||||||
+++
|
|
||||||
title = "happyDomain for DevOps Engineers"
|
|
||||||
description = "Automate DNS management with happyDomain's REST API. Integrate domain operations into your CI/CD pipelines and infrastructure workflows."
|
|
||||||
layout = "usage"
|
|
||||||
+++
|
|
||||||
|
|
||||||
<div class="container-fluid mt-3 pt-4 pb-3">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2 col-xl-6 offset-xl-3">
|
|
||||||
<p class="lead text-center">
|
|
||||||
A <span class="text-hilight px-1">REST API and web interface</span> to centralize domain management <span class="text-hilight px-1">in the cloud, with suppliers and on premise</span>.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container mb-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
All your domains' operations<br>
|
|
||||||
accessible via a REST API.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Everything that's done in the happy<span class="fw-bold">Domain</span> web interface can easily be done with the API, in your language of choice.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Our REST API is fully documented, and thanks to Swagger, you can browse it and easily generate a tool using it in any supported language.
|
|
||||||
</p>
|
|
||||||
<a href="/swagger/index.html" target="_blank">
|
|
||||||
See the API documentation and try it out now!
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7 py-2 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/features/rest.png" alt="Our REST API, commented and exposed with Swagger">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-green-50)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Forget about the complexity of each hosting company.<br>
|
|
||||||
Take advantage of our unified interface.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Don't be afraid of discovering a new host. happy<span class="fw-bold">Domain</span> manages over 25 hosts worldwide:
|
|
||||||
</p>
|
|
||||||
<ul class="text-left">
|
|
||||||
<li class="mb-1"><strong>cloud services :</strong> Route53, Azure DNS, Google Cloud DNS, DigitalOcean, Linode, Oracle Cloud, ...</li>
|
|
||||||
<li class="mb-1"><strong>CDN :</strong> Akamai Edge DNS, Cloudflare, ...</li>
|
|
||||||
<li class="mb-1"><strong>registrar :</strong> OVH, Gandi, Namecheap, Vultr, ...</li>
|
|
||||||
<li class="mb-1"><strong>your local setup :</strong> BIND, PowerDNS, knot, ...</li>
|
|
||||||
</ul>
|
|
||||||
<a href="https://docs.dnscontrol.org/service-providers/providers" target="_blank">
|
|
||||||
See the list of supported DNS hosts.
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Respond to all requests<br>
|
|
||||||
with ease.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
A new service? An urgent fix? happy<span class="fw-bold">Domain</span> uses simple terminology to stay focused.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-services.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-plum-100)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/sdk-python.webp" alt="Python SDK usage">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Many tools are already available for you, DevOps.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<ul class="text-left">
|
|
||||||
<li class="mb-2">
|
|
||||||
<a href="https://galaxy.ansible.com/happydns/happydomain" target="_blank">
|
|
||||||
<strong>Ansible collection:</strong>
|
|
||||||
</a>
|
|
||||||
<span class="text-hilight px-1 text-dark">add or modify zone records,</span>
|
|
||||||
manage new domains through their registrar,
|
|
||||||
manage happy<span class="fw-bold">Domain</span>'s users,
|
|
||||||
or deploy happy<span class="fw-bold">Domain</span> using the official Ansible collection.
|
|
||||||
</li>
|
|
||||||
<li class="mb-2">
|
|
||||||
<a href="https://pypi.org/project/happydomain/" target="_blank">
|
|
||||||
<strong>Python SDK:</strong>
|
|
||||||
</a>
|
|
||||||
easily automate all aspects of your domains, with the simplicity of Python.
|
|
||||||
</li>
|
|
||||||
<li class="mb-2">
|
|
||||||
and counting…
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
100
content/use-happyDomain/devops.en.md
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
+++
|
||||||
|
title = "happyDomain for DevOps Engineers"
|
||||||
|
description = "Automate DNS management with happyDomain's REST API. Integrate domain operations into your CI/CD pipelines and infrastructure workflows."
|
||||||
|
layout = "usage"
|
||||||
|
+++
|
||||||
|
|
||||||
|
{{< usage-lead >}}
|
||||||
|
A <span class="text-hilight px-1">REST API and web interface</span> to automate domain management <span class="text-hilight px-1">in the cloud, with suppliers and on premise</span>.
|
||||||
|
{{< /usage-lead >}}
|
||||||
|
|
||||||
|
{{< usage-points title="Does this sound familiar?" >}}
|
||||||
|
{{< usage-point icon="mouse" title="ClickOps doesn't scale" >}}
|
||||||
|
Everything in your stack is code, except DNS. Records are still changed by hand in a provider's console: unscriptable, unreviewable, unrepeatable.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="plug" title="One API per provider" >}}
|
||||||
|
Each host has its own API, its own auth, its own quirks. Your automation is a pile of fragile glue scripts that breaks every time a client changes provider.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="git" title="DNS bypasses your pipeline" >}}
|
||||||
|
Deployments are reviewed, tested and rolled back. DNS changes go straight to production with none of that.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< /usage-points >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="One REST API for all your domains' operations."
|
||||||
|
image="/img/screenshots/features/rest.png"
|
||||||
|
url="app.happydomain.org/swagger/index.html"
|
||||||
|
alt="Our REST API, commented and exposed with Swagger"
|
||||||
|
>}}
|
||||||
|
Everything that's done in the happy<span class="fw-bold">Domain</span> web interface can be done with the API, in your language of choice. Script it once, run it everywhere.
|
||||||
|
|
||||||
|
Our REST API is fully documented, and thanks to Swagger, you can browse it and generate a client in any supported language.
|
||||||
|
|
||||||
|
<a href="/swagger/index.html" target="_blank">See the API documentation and try it out now!</a>
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Forget the quirks of each provider. One abstraction for over 25 hosts."
|
||||||
|
image="/img/screenshots/domain-abstract.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com"
|
||||||
|
alt="A zone displayed the same way, whatever the provider behind it"
|
||||||
|
flip="true"
|
||||||
|
bg="green"
|
||||||
|
>}}
|
||||||
|
Write your automation against happy<span class="fw-bold">Domain</span> once; it speaks to every provider for you:
|
||||||
|
|
||||||
|
<ul class="text-left">
|
||||||
|
<li class="mb-1"><strong>cloud services :</strong> Route53, Azure DNS, Google Cloud DNS, DigitalOcean, Linode, Oracle Cloud, ...</li>
|
||||||
|
<li class="mb-1"><strong>CDN :</strong> Akamai Edge DNS, Cloudflare, ...</li>
|
||||||
|
<li class="mb-1"><strong>registrar :</strong> OVH, Gandi, Namecheap, Vultr, ...</li>
|
||||||
|
<li class="mb-1"><strong>your local setup :</strong> BIND, PowerDNS, knot, ...</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<a href="https://docs.dnscontrol.org/service-providers/providers" target="_blank">See the list of supported DNS hosts.</a>
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Bring DNS into your review workflow."
|
||||||
|
image="/img/screenshots/zone-diff.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/diff"
|
||||||
|
alt="Review and confirm the changes that will be applied"
|
||||||
|
>}}
|
||||||
|
Before anything is published, happy<span class="fw-bold">Domain</span> shows the exact diff between the current zone and the new one, and waits for confirmation.
|
||||||
|
|
||||||
|
You can even cherry-pick which changes ship now and which ones wait. It works like a pull request, for your DNS.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Tooling that plugs into what you already use."
|
||||||
|
image="/img/screenshots/sdk-python.webp"
|
||||||
|
url="pypi.org/project/happydomain"
|
||||||
|
alt="Python SDK usage"
|
||||||
|
flip="true"
|
||||||
|
bg="plum"
|
||||||
|
>}}
|
||||||
|
<ul class="text-left">
|
||||||
|
<li class="mb-2">
|
||||||
|
<a href="https://galaxy.ansible.com/happydns/happydomain" target="_blank"><strong>Ansible collection:</strong></a>
|
||||||
|
<span class="text-hilight px-1 text-dark">add or modify zone records,</span>
|
||||||
|
manage new domains through their registrar,
|
||||||
|
manage happy<span class="fw-bold">Domain</span>'s users,
|
||||||
|
or deploy happy<span class="fw-bold">Domain</span> itself with the official collection.
|
||||||
|
</li>
|
||||||
|
<li class="mb-2">
|
||||||
|
<a href="https://pypi.org/project/happydomain/" target="_blank"><strong>Python SDK:</strong></a>
|
||||||
|
automate all aspects of your domains, with the simplicity of Python.
|
||||||
|
</li>
|
||||||
|
<li class="mb-2">and counting…</li>
|
||||||
|
</ul>
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Monitoring included, no extra stack to deploy."
|
||||||
|
image="/img/screenshots/checks-dashboard.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/checks"
|
||||||
|
alt="Monitoring dashboard showing the status of every check on a domain"
|
||||||
|
>}}
|
||||||
|
happy<span class="fw-bold">Domain</span>'s checkers continuously verify expirations, DNSSEC, delegation, certificates and service availability for every domain you manage.
|
||||||
|
|
||||||
|
Each check reports a clear status and notifies you the moment it changes state, so a broken delegation never waits for a failed deployment to be noticed.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
@ -1,123 +0,0 @@
|
||||||
+++
|
|
||||||
title = "happyDomain pour les DevOps"
|
|
||||||
description = "Automatisez la gestion DNS avec l'API REST de happyDomain. Intégrez les opérations de domaines dans vos pipelines CI/CD et workflows d'infrastructure."
|
|
||||||
layout = "usage"
|
|
||||||
+++
|
|
||||||
|
|
||||||
<div class="container-fluid mt-3 pt-4 pb-3">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2 col-xl-6 offset-xl-3">
|
|
||||||
<p class="lead text-center">
|
|
||||||
Une <span class="text-hilight px-1">API REST documentée et une interface web</span> pour centraliser la gestion des domaines <span class="text-hilight px-1">dans le cloud, chez des fournisseurs et sur site</span>.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container mb-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Tous vos domaines<br>
|
|
||||||
accessibles par une API REST.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Tout ce qui se fait dans l'interface web d'happy<span class="fw-bold">Domain</span> peut se faire facilement avec l'API, dans votre langage de prédilection.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Notre API REST est entièrement documentée et grâce à Swagger, vous pouvez la parcourir et générer aisément un outil l'utilisant dans tous les langages supportés.
|
|
||||||
</p>
|
|
||||||
<a href="/swagger/index.html" target="_blank">
|
|
||||||
Voir la documentation de l'API et l'essayer maintenant !
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7 py-2 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/features/rest.png" alt="L'API REST documentée et exposée avec Swagger">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-green-50)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Oubliez la complexité de chaque hébergeur.<br>
|
|
||||||
Profitez de notre interface unifiée.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
N'ayez plus d'appréhension à découvrir un nouvel hébergeur. happy<span class="fw-bold">Domain</span> gère plus de 25 hébergeurs à travers le monde :
|
|
||||||
</p>
|
|
||||||
<ul class="text-left">
|
|
||||||
<li class="mb-1"><strong>services de cloud :</strong> Route53, Azure DNS, Google Cloud DNS, DigitalOcean, Linode, Oracle Cloud, ...</li>
|
|
||||||
<li class="mb-1"><strong>CDN :</strong> Akamai Edge DNS, Cloudflare, ...</li>
|
|
||||||
<li class="mb-1"><strong>bureaux d'enregistrement :</strong> OVH, Gandi, Namecheap, Vultr, ...</li>
|
|
||||||
<li class="mb-1"><strong>vos serveurs locaux :</strong> BIND, PowerDNS, knot, ...</li>
|
|
||||||
</ul>
|
|
||||||
<a href="https://docs.dnscontrol.org/service-providers/providers" target="_blank">
|
|
||||||
Voir la liste des hébergeurs DNS supportés.
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Répondez à toutes les demandes<br>
|
|
||||||
en toute simplicité.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Un nouveau service ? Une correction urgente ? happy<span class="fw-bold">Domain</span> utilise une terminologie simple, pour rester focalisé sur ses objectifs.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-services.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-plum-100)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/sdk-python.webp" alt="Utilisation du SDK Python">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Déjà de nombreux outils disponibles pour les DevOps.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<ul class="text-left">
|
|
||||||
<li class="mb-2">
|
|
||||||
<a href="https://galaxy.ansible.com/happydns/happydomain" target="_blank">
|
|
||||||
<strong>Collection Ansible :</strong>
|
|
||||||
</a>
|
|
||||||
<span class="text-hilight px-1 text-dark">ajouter ou modifier les enregistrements d'une zone,</span>
|
|
||||||
gérer les bureaux d'enregistrement,
|
|
||||||
gérer les utilisateurs d'happy<span class="fw-bold">Domain</span>,
|
|
||||||
ou encore déployer happy<span class="fw-bold">Domain</span> grâce à la collection Ansible officielle.
|
|
||||||
</li>
|
|
||||||
<li class="mb-2">
|
|
||||||
<a href="https://pypi.org/project/happydomain/" target="_blank">
|
|
||||||
<strong>SDK Python :</strong>
|
|
||||||
</a>
|
|
||||||
automatiser facilement tous les aspects liés à vos domaines, avec la simplicité de Python.
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
100
content/use-happyDomain/devops.fr.md
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
+++
|
||||||
|
title = "happyDomain pour les DevOps"
|
||||||
|
description = "Automatisez la gestion DNS avec l'API REST de happyDomain. Intégrez les opérations de domaines dans vos pipelines CI/CD et workflows d'infrastructure."
|
||||||
|
layout = "usage"
|
||||||
|
+++
|
||||||
|
|
||||||
|
{{< usage-lead >}}
|
||||||
|
Une <span class="text-hilight px-1">API REST et une interface web</span> pour automatiser la gestion des domaines <span class="text-hilight px-1">dans le cloud, chez des fournisseurs et sur site</span>.
|
||||||
|
{{< /usage-lead >}}
|
||||||
|
|
||||||
|
{{< usage-points title="Ça vous parle ?" >}}
|
||||||
|
{{< usage-point icon="mouse" title="Le ClickOps ne passe pas à l'échelle" >}}
|
||||||
|
Tout dans votre stack est du code, sauf le DNS. Les enregistrements sont encore modifiés à la main dans la console d'un fournisseur : impossible à scripter, à relire ou à reproduire.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="plug" title="Une API par hébergeur" >}}
|
||||||
|
Chaque hébergeur a sa propre API, sa propre authentification, ses propres particularités. Votre automatisation devient un amas de scripts fragiles qui casse à chaque fois qu'un client change de fournisseur.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="git" title="Le DNS contourne votre pipeline" >}}
|
||||||
|
Les déploiements sont relus, testés et réversibles. Les changements DNS partent directement en production, sans rien de tout cela.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< /usage-points >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Une seule API REST pour toutes les opérations sur vos domaines."
|
||||||
|
image="/img/screenshots/features/rest.png"
|
||||||
|
url="app.happydomain.org/swagger/index.html"
|
||||||
|
alt="Notre API REST, commentée et exposée avec Swagger"
|
||||||
|
>}}
|
||||||
|
Tout ce qui se fait dans l'interface web d'happy<span class="fw-bold">Domain</span> peut se faire avec l'API, dans votre langage de prédilection. Scriptez-le une fois, exécutez-le partout.
|
||||||
|
|
||||||
|
Notre API REST est entièrement documentée et grâce à Swagger, vous pouvez la parcourir et générer un client dans tous les langages supportés.
|
||||||
|
|
||||||
|
<a href="/swagger/index.html" target="_blank">Voir la documentation de l'API et l'essayer maintenant !</a>
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Oubliez les particularités de chaque hébergeur. Une seule abstraction pour plus de 25 hébergeurs."
|
||||||
|
image="/img/screenshots/domain-abstract.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com"
|
||||||
|
alt="Une zone affichée de la même façon, quel que soit le fournisseur derrière"
|
||||||
|
flip="true"
|
||||||
|
bg="green"
|
||||||
|
>}}
|
||||||
|
Écrivez votre automatisation pour happy<span class="fw-bold">Domain</span> une seule fois ; il dialogue avec chaque fournisseur à votre place :
|
||||||
|
|
||||||
|
<ul class="text-left">
|
||||||
|
<li class="mb-1"><strong>services de cloud :</strong> Route53, Azure DNS, Google Cloud DNS, DigitalOcean, Linode, Oracle Cloud, ...</li>
|
||||||
|
<li class="mb-1"><strong>CDN :</strong> Akamai Edge DNS, Cloudflare, ...</li>
|
||||||
|
<li class="mb-1"><strong>bureaux d'enregistrement :</strong> OVH, Gandi, Namecheap, Vultr, ...</li>
|
||||||
|
<li class="mb-1"><strong>vos serveurs locaux :</strong> BIND, PowerDNS, knot, ...</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<a href="https://docs.dnscontrol.org/service-providers/providers" target="_blank">Voir la liste des hébergeurs DNS supportés.</a>
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Intégrez le DNS dans votre workflow de relecture."
|
||||||
|
image="/img/screenshots/zone-diff.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/diff"
|
||||||
|
alt="Relisez et confirmez les changements qui seront appliqués"
|
||||||
|
>}}
|
||||||
|
Avant toute publication, happy<span class="fw-bold">Domain</span> affiche le diff exact entre la zone actuelle et la nouvelle, et attend votre confirmation.
|
||||||
|
|
||||||
|
Vous pouvez même choisir quels changements partent maintenant et lesquels attendent. Ça fonctionne comme une pull request, pour votre DNS.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Des outils qui s'intègrent à ce que vous utilisez déjà."
|
||||||
|
image="/img/screenshots/sdk-python.webp"
|
||||||
|
url="pypi.org/project/happydomain"
|
||||||
|
alt="Utilisation du SDK Python"
|
||||||
|
flip="true"
|
||||||
|
bg="plum"
|
||||||
|
>}}
|
||||||
|
<ul class="text-left">
|
||||||
|
<li class="mb-2">
|
||||||
|
<a href="https://galaxy.ansible.com/happydns/happydomain" target="_blank"><strong>Collection Ansible :</strong></a>
|
||||||
|
<span class="text-hilight px-1 text-dark">ajouter ou modifier les enregistrements d'une zone,</span>
|
||||||
|
gérer de nouveaux domaines via leur bureau d'enregistrement,
|
||||||
|
gérer les utilisateurs d'happy<span class="fw-bold">Domain</span>,
|
||||||
|
ou encore déployer happy<span class="fw-bold">Domain</span> lui-même grâce à la collection officielle.
|
||||||
|
</li>
|
||||||
|
<li class="mb-2">
|
||||||
|
<a href="https://pypi.org/project/happydomain/" target="_blank"><strong>SDK Python :</strong></a>
|
||||||
|
automatiser tous les aspects liés à vos domaines, avec la simplicité de Python.
|
||||||
|
</li>
|
||||||
|
<li class="mb-2">et d'autres encore…</li>
|
||||||
|
</ul>
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Supervision incluse, aucune stack supplémentaire à déployer."
|
||||||
|
image="/img/screenshots/checks-dashboard.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/checks"
|
||||||
|
alt="Tableau de bord de supervision affichant l'état de chaque vérification d'un domaine"
|
||||||
|
>}}
|
||||||
|
Les vérificateurs d'happy<span class="fw-bold">Domain</span> contrôlent en continu les expirations, le DNSSEC, la délégation, les certificats et la disponibilité des services pour chaque domaine que vous gérez.
|
||||||
|
|
||||||
|
Chaque vérification rapporte un état clair et vous notifie dès qu'il change, pour qu'une délégation cassée n'attende jamais un déploiement raté pour être remarquée.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
@ -1,100 +0,0 @@
|
||||||
+++
|
|
||||||
title = "happyDomain for Freelancers"
|
|
||||||
description = "Manage all your clients' domain names from a single interface. happyDomain simplifies DNS management for freelancers and agencies."
|
|
||||||
layout = "usage"
|
|
||||||
+++
|
|
||||||
|
|
||||||
<div class="container-fluid mt-3 pt-4 pb-3">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2 col-xl-6 offset-xl-3">
|
|
||||||
<p class="lead text-center">
|
|
||||||
A <span class="text-hilight">unified interface</span> to manage all your clients' domains. Everything you need.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container mb-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
All domain names<br>
|
|
||||||
grouped by customer.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
No matter how many customers you follow, happy<span class="fw-bold">Domain</span> always gives you a clear overview.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7 py-2 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domains-list.webp" alt="List of domain names, cleverly grouped by client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-green-50)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Forget about the complexity of each hosting company.<br>
|
|
||||||
Take advantage of our unified interface.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Don't be afraid of discovering a new host. happy<span class="fw-bold">Domain</span> manages over 25 hosts worldwide. Your customers are probably using them.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Respond to all requests<br>
|
|
||||||
with ease.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
A new service? An urgent fix? happy<span class="fw-bold">Domain</span> uses simple terminology to stay focused.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-services.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-plum-100)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Share the management of the area with your client, his teams or your collaborators.
|
|
||||||
<small class="text-muted">
|
|
||||||
(coming soon)
|
|
||||||
</small>
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Whether it is permanent or in preparation for a particular event, happy<span class="fw-bold">Domain</span> offers you the possibility to collaborate on the editing of the same area.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Delegate to your client's teams all or only part of the area, it's up to you.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
81
content/use-happyDomain/freelance.en.md
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
+++
|
||||||
|
title = "happyDomain for Freelancers"
|
||||||
|
description = "Manage all your clients' domain names from a single interface. happyDomain simplifies DNS management for freelancers and agencies."
|
||||||
|
layout = "usage"
|
||||||
|
+++
|
||||||
|
|
||||||
|
{{< usage-lead >}}
|
||||||
|
<span class="text-hilight px-1">All your clients' domains</span> in one interface. Spend your time on billable work, <span class="text-hilight px-1">not on registrar consoles</span>.
|
||||||
|
{{< /usage-lead >}}
|
||||||
|
|
||||||
|
{{< usage-points title="Does this sound familiar?" >}}
|
||||||
|
{{< usage-point icon="key" title="A vault full of logins" >}}
|
||||||
|
Each client came with their own registrar, their own account, their own credentials. Finding the right login takes longer than the change itself.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="window-stack" title="A different console every time" >}}
|
||||||
|
OVH today, GoDaddy tomorrow, Cloudflare next week. Each interface has its own logic, and each one is a new chance to make a mistake on a client's zone.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="telephone" title="The client calls first" >}}
|
||||||
|
An expired domain, broken mail, an invalid certificate. Too often, the person who notices is the client paying you to prevent exactly that.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< /usage-points >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="All your clients' domains, grouped by client."
|
||||||
|
image="/img/screenshots/domains-list.webp"
|
||||||
|
url="app.happydomain.org/domains"
|
||||||
|
alt="List of domain names, cleverly grouped by client"
|
||||||
|
>}}
|
||||||
|
No matter how many clients you follow, happy<span class="fw-bold">Domain</span> gives you a clear overview of every domain you are responsible for, organized your way.
|
||||||
|
|
||||||
|
One login, one inventory, no more digging through password managers to answer a simple question.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="One interface, whatever your client's provider."
|
||||||
|
image="/img/screenshots/domain-abstract.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com"
|
||||||
|
alt="A zone displayed the same way, whatever the provider behind it"
|
||||||
|
flip="true"
|
||||||
|
bg="green"
|
||||||
|
>}}
|
||||||
|
happy<span class="fw-bold">Domain</span> manages over 25 hosts worldwide. Your clients are probably using them already.
|
||||||
|
|
||||||
|
Every zone is displayed and edited the same way, so a new client with an exotic registrar is no longer a problem: you already know the interface.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Fix issues before your client even notices."
|
||||||
|
image="/img/screenshots/checks-dashboard.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/checks"
|
||||||
|
alt="Monitoring dashboard showing the status of every check on a client domain"
|
||||||
|
>}}
|
||||||
|
happy<span class="fw-bold">Domain</span>'s built-in checkers keep watch over every client domain: expiry dates, DNSSEC, mail and web service availability, TLS certificates and more, all reported with a clear <span class="fw-bold">OK</span> / <span class="fw-bold">Warning</span> / <span class="fw-bold">Critical</span> status.
|
||||||
|
|
||||||
|
Get notified the moment something changes, fix it quietly, and show up looking like the expert they hired.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Respond to every request with ease."
|
||||||
|
image="/img/screenshots/domain-services.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/services"
|
||||||
|
alt="Services attached to a domain, described in plain words"
|
||||||
|
flip="true"
|
||||||
|
bg="plum"
|
||||||
|
>}}
|
||||||
|
A new website? Mail to set up? An urgent fix? happy<span class="fw-bold">Domain</span> uses simple, service-oriented terminology, so you go straight to the result your client asked for.
|
||||||
|
|
||||||
|
Less time decoding record types, more time delivering.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Collaborate on a zone with your client or your team."
|
||||||
|
image="/img/screenshots/domain-abstract.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com"
|
||||||
|
alt="Zone management shared with clients and collaborators"
|
||||||
|
coming_soon="true"
|
||||||
|
>}}
|
||||||
|
Whether it's permanent or in preparation for a specific event, happy<span class="fw-bold">Domain</span> lets several people work on the same zone.
|
||||||
|
|
||||||
|
Delegate to your client's team all or only part of the zone, down to a single record. They handle the routine, you keep the keys.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
@ -1,100 +0,0 @@
|
||||||
+++
|
|
||||||
title = "happyDomain pour les freelances"
|
|
||||||
description = "Gérez les noms de domaine de tous vos clients depuis une seule interface. happyDomain simplifie la gestion DNS pour les freelances et agences."
|
|
||||||
layout = "usage"
|
|
||||||
+++
|
|
||||||
|
|
||||||
<div class="container-fluid mt-3 pt-4 pb-3">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2 col-xl-6 offset-xl-3">
|
|
||||||
<p class="lead text-center">
|
|
||||||
Une <span class="text-hilight">interface unifiée</span> pour gérer tous les domaines de vos clients. Tout ce dont vous avez besoin.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container mb-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Tous les domaines<br>
|
|
||||||
regroupés par client.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Quel que soit le nombre de clients que vous suivez, happy<span class="fw-bold">Domain</span> vous <span class="text-stroke">donne un aperçu toujours clair</span>.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7 py-2 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domains-list.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-green-50)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Oubliez la complexité de chaque hébergeur.<br>
|
|
||||||
Profitez de notre interface unifiée.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
N'ayez plus d'appréhension à découvrir un nouvel hébergeur. happy<span class="fw-bold">Domain</span> gère plus de 25 hébergeurs à travers le monde. Vos clients les utilisent sûrement.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Répondez à toutes les demandes<br>
|
|
||||||
en toute simplicité.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Un nouveau service ? Une correction urgente ? happy<span class="fw-bold">Domain</span> utilise une terminologie simple, pour rester focalisé sur ses objectifs.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-services.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-plum-100)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Partagez la gestion de la zone avec votre client, ses équipes ou vos collaborateurs.
|
|
||||||
<small class="text-muted">
|
|
||||||
(bientôt disponible)
|
|
||||||
</small>
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Que ce soit de façon permanente ou en préparation d'un événement particulier, happy<span class="fw-bold">Domain</span> vous offre la possibilité de collaborer à l'édition d'un même domaine.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Déléguez aux équipes de votre client tout ou partie de la zone, c'est vous qui choisissez.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
81
content/use-happyDomain/freelance.fr.md
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
+++
|
||||||
|
title = "happyDomain pour les freelances"
|
||||||
|
description = "Gérez les noms de domaine de tous vos clients depuis une seule interface. happyDomain simplifie la gestion DNS pour les freelances et agences."
|
||||||
|
layout = "usage"
|
||||||
|
+++
|
||||||
|
|
||||||
|
{{< usage-lead >}}
|
||||||
|
<span class="text-hilight px-1">Tous les domaines de vos clients</span> dans une seule interface. Passez votre temps sur le travail facturable, <span class="text-hilight px-1">pas sur les consoles des hébergeurs</span>.
|
||||||
|
{{< /usage-lead >}}
|
||||||
|
|
||||||
|
{{< usage-points title="Ça vous parle ?" >}}
|
||||||
|
{{< usage-point icon="key" title="Un coffre-fort plein d'identifiants" >}}
|
||||||
|
Chaque client est arrivé avec son propre hébergeur, son propre compte, ses propres identifiants. Retrouver le bon login prend plus de temps que la modification elle-même.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="window-stack" title="Une console différente à chaque fois" >}}
|
||||||
|
OVH aujourd'hui, GoDaddy demain, Cloudflare la semaine prochaine. Chaque interface a sa propre logique, et chacune est une nouvelle occasion de se tromper sur la zone d'un client.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="telephone" title="C'est le client qui appelle en premier" >}}
|
||||||
|
Un domaine expiré, un mail en panne, un certificat invalide. Trop souvent, celui qui s'en aperçoit est le client qui vous paie justement pour éviter ça.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< /usage-points >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Tous les domaines de vos clients, regroupés par client."
|
||||||
|
image="/img/screenshots/domains-list.webp"
|
||||||
|
url="app.happydomain.org/domains"
|
||||||
|
alt="Liste des domaines, regroupés astucieusement par client"
|
||||||
|
>}}
|
||||||
|
Quel que soit le nombre de clients que vous suivez, happy<span class="fw-bold">Domain</span> vous donne un aperçu clair de chaque domaine dont vous êtes responsable, organisé à votre façon.
|
||||||
|
|
||||||
|
Un seul login, un seul inventaire, fini de fouiller dans les gestionnaires de mots de passe pour répondre à une simple question.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Une seule interface, quel que soit l'hébergeur de votre client."
|
||||||
|
image="/img/screenshots/domain-abstract.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com"
|
||||||
|
alt="Une zone affichée de la même façon, quel que soit l'hébergeur derrière"
|
||||||
|
flip="true"
|
||||||
|
bg="green"
|
||||||
|
>}}
|
||||||
|
happy<span class="fw-bold">Domain</span> gère plus de 25 hébergeurs à travers le monde. Vos clients les utilisent sûrement déjà.
|
||||||
|
|
||||||
|
Chaque zone s'affiche et s'édite de la même façon, ainsi un nouveau client avec un hébergeur exotique n'est plus un problème : vous connaissez déjà l'interface.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Corrigez les problèmes avant même que votre client ne s'en aperçoive."
|
||||||
|
image="/img/screenshots/checks-dashboard.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/checks"
|
||||||
|
alt="Tableau de bord de supervision affichant l'état de chaque vérification d'un domaine client"
|
||||||
|
>}}
|
||||||
|
Les vérificateurs intégrés de happy<span class="fw-bold">Domain</span> veillent sur chaque domaine client : dates d'expiration, DNSSEC, disponibilité des services mail et web, certificats TLS et plus encore, le tout reporté avec un statut clair <span class="fw-bold">OK</span> / <span class="fw-bold">Avertissement</span> / <span class="fw-bold">Critique</span>.
|
||||||
|
|
||||||
|
Soyez notifié dès qu'un changement survient, corrigez-le discrètement, et affirmez l'expertise pour laquelle votre client vous a choisi.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Répondez à toutes les demandes en toute simplicité."
|
||||||
|
image="/img/screenshots/domain-services.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/services"
|
||||||
|
alt="Services attachés à un domaine, décrits avec des mots simples"
|
||||||
|
flip="true"
|
||||||
|
bg="plum"
|
||||||
|
>}}
|
||||||
|
Un nouveau site ? Un mail à configurer ? Une correction urgente ? happy<span class="fw-bold">Domain</span> utilise une terminologie simple, orientée services, pour aller droit au résultat que votre client a demandé.
|
||||||
|
|
||||||
|
Moins de temps à décoder les types d'enregistrements, plus de temps à livrer.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Collaborez sur une zone avec votre client ou votre équipe."
|
||||||
|
image="/img/screenshots/domain-abstract.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com"
|
||||||
|
alt="Gestion de zone partagée avec les clients et les collaborateurs"
|
||||||
|
coming_soon="true"
|
||||||
|
>}}
|
||||||
|
Que ce soit de façon permanente ou en préparation d'un événement particulier, happy<span class="fw-bold">Domain</span> permet à plusieurs personnes de travailler sur la même zone.
|
||||||
|
|
||||||
|
Déléguez aux équipes de votre client tout ou partie de la zone, jusqu'à un seul enregistrement. Ils gèrent le quotidien, vous gardez les clés.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
@ -1,112 +0,0 @@
|
||||||
+++
|
|
||||||
title = "happyDomain for Enthusiasts"
|
|
||||||
description = "Take control of your domain names with a powerful, open-source interface. happyDomain makes DNS management fun and accessible for hobbyists and tech enthusiasts."
|
|
||||||
layout = "usage"
|
|
||||||
+++
|
|
||||||
|
|
||||||
<div class="container-fluid mt-3 pt-4 pb-3">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2 col-xl-6 offset-xl-3">
|
|
||||||
<p class="lead text-center">
|
|
||||||
An interface to <span class="text-hilight">keep your independence</span> on the web.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container mb-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Discover a simple and clear interface.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Whatever the host of your zones, happy<span class="fw-bold">Domain</span> displays them in a clear way to limit errors.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
By installing happy<span class="fw-bold">Domain</span> next to your Bind or PowerDNS, enjoy the interface without changing your configuration.
|
|
||||||
<span class="text-muted">(coming soon)</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7 py-2 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-green-50)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Self-hosting made easy.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
happy<span class="fw-bold">Domain</span> allows you with the same interface to manage your DNS zone with a third party provider, or to manage your own DNS servers.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Don't be afraid to edit a zone text file, we take care of it!
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Our solution doesn't need a lot of resources and can be used on a Raspberry Pi. Or even be launched only when needed.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Meet all your needs<br>
|
|
||||||
in all simplicity.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
A new service? An urgent fix? happy<span class="fw-bold">Domain</span> uses simple terminology to stay focused on the expected result.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
We are committed to providing the latest in DNS registration and services.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-services.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-plum-100)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/service-caa.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Manage easily, even special zones.
|
|
||||||
<small class="text-muted">
|
|
||||||
(coming soon)
|
|
||||||
</small>
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Looking for an interface that displays reverse IPv4/IPv6 zones in a human way?
|
|
||||||
Or a <a href="https://en.wikipedia.org/wiki/DNSBL">Real-time Blockhole List (DNSBL)</a> zone? Or a DNS <a href="https://www.dnsrpz.info/">Response Policy Zones</a> (DNS-RPZ)?
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
happy<span class="fw-bold">Domain</span> understands them and allows you to manage them unequivocally.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
85
content/use-happyDomain/geek.en.md
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
+++
|
||||||
|
title = "happyDomain for Enthusiasts"
|
||||||
|
description = "Take control of your domain names with a powerful, open-source interface. happyDomain makes DNS management fun and accessible for hobbyists and tech enthusiasts."
|
||||||
|
layout = "usage"
|
||||||
|
+++
|
||||||
|
|
||||||
|
{{< usage-lead >}}
|
||||||
|
An <span class="text-hilight px-1">open-source interface</span> to keep your <span class="text-hilight px-1">independence</span> on the web.
|
||||||
|
{{< /usage-lead >}}
|
||||||
|
|
||||||
|
{{< usage-points title="Does this sound familiar?" >}}
|
||||||
|
{{< usage-point icon="house-gear" title="Self-hosted, except DNS" >}}
|
||||||
|
Your mail, your cloud, your git are on your own servers. But your DNS still lives in a closed registrar console you don't control.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="exclamation-triangle" title="One typo from disaster" >}}
|
||||||
|
Raw zone files are unforgiving. A missing dot, a wrong TTL, and your mail silently vanishes for hours before you notice.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="lock" title="Locked into a provider" >}}
|
||||||
|
Each registrar's interface decides what you can do and how. Moving your zones elsewhere means relearning everything.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< /usage-points >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="A simple and clear interface, whatever the host."
|
||||||
|
image="/img/screenshots/domain-abstract.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com"
|
||||||
|
alt="A zone displayed in a clear, human-readable way"
|
||||||
|
>}}
|
||||||
|
Whether your zones live at a registrar or on your own servers, happy<span class="fw-bold">Domain</span> displays them the same clear way, limiting errors.
|
||||||
|
|
||||||
|
Install happy<span class="fw-bold">Domain</span> next to your Bind or PowerDNS and enjoy the interface without changing your configuration.
|
||||||
|
<span class="text-muted">(coming soon)</span>
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Self-hosting made easy, even for DNS."
|
||||||
|
image="/img/screenshots/providers-list.webp"
|
||||||
|
url="app.happydomain.org/providers"
|
||||||
|
alt="List of supported providers, from cloud services to self-hosted servers"
|
||||||
|
flip="true"
|
||||||
|
bg="green"
|
||||||
|
>}}
|
||||||
|
With the same interface, manage your zone at a third-party provider or run your own DNS servers. Your domains, your rules.
|
||||||
|
|
||||||
|
Don't be afraid of editing a zone text file: we take care of it.
|
||||||
|
|
||||||
|
happy<span class="fw-bold">Domain</span> is open source, needs very few resources, runs happily on a Raspberry Pi, and can even be launched only when needed.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Tinker without fear: preview, history, rollback."
|
||||||
|
image="/img/screenshots/zone-diff.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/diff"
|
||||||
|
alt="Review and confirm the changes that will be applied"
|
||||||
|
>}}
|
||||||
|
Before any change is published, happy<span class="fw-bold">Domain</span> shows you exactly what will be modified and asks for confirmation. No more silent typos.
|
||||||
|
|
||||||
|
And since every version of your zone is kept in history, you can experiment freely and roll back in one click if something goes wrong.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Set up any service in all simplicity."
|
||||||
|
image="/img/screenshots/domain-services.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/services"
|
||||||
|
alt="Services attached to a domain, described in plain words"
|
||||||
|
flip="true"
|
||||||
|
bg="plum"
|
||||||
|
>}}
|
||||||
|
A new service? An urgent fix? happy<span class="fw-bold">Domain</span> uses simple terminology to stay focused on the expected result.
|
||||||
|
|
||||||
|
We are committed to providing the latest in DNS registration and services, so your setup never lags behind the standards.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Manage easily, even special zones."
|
||||||
|
image="/img/screenshots/service-caa.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/services"
|
||||||
|
alt="Editing an advanced DNS service through a guided form"
|
||||||
|
coming_soon="true"
|
||||||
|
>}}
|
||||||
|
Looking for an interface that displays reverse IPv4/IPv6 zones in a human way?
|
||||||
|
Or a <a href="https://en.wikipedia.org/wiki/DNSBL">Real-time Blackhole List (DNSBL)</a> zone? Or DNS <a href="https://www.dnsrpz.info/">Response Policy Zones</a> (DNS-RPZ)?
|
||||||
|
|
||||||
|
happy<span class="fw-bold">Domain</span> understands them and lets you manage them unequivocally.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
@ -1,111 +0,0 @@
|
||||||
+++
|
|
||||||
title = "happyDomain pour les passionnés"
|
|
||||||
description = "Prenez le contrôle de vos noms de domaine avec une interface open source puissante. happyDomain rend la gestion DNS accessible et agréable pour les passionnés de tech."
|
|
||||||
layout = "usage"
|
|
||||||
+++
|
|
||||||
|
|
||||||
<div class="container-fluid mt-3 pt-4 pb-3">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2 col-xl-6 offset-xl-3">
|
|
||||||
<p class="lead text-center">
|
|
||||||
Une interface pour <span class="text-hilight">garder son indépendance</span> sur le web.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container mb-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Découvrez une interface simple et claire.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Quel que soit l'hébergeur de vos zones, happy<span class="fw-bold">Domain</span> les affiche de manière claire pour limiter les erreurs.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
En installant happy<span class="fw-bold">Domain</span> à côté de votre Bind ou PowerDNS, profitez de l'interface sans changer votre configuration.
|
|
||||||
<span class="text-muted">(bientôt disponible)</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7 py-2 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-green-50)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Auto-hébergement facilité.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
happy<span class="fw-bold">Domain</span> vous permet avec la même interface de gérer votre zone DNS auprès d'un fournisseur tiers, ou de gérer votre/vos propres serveurs DNS.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
N'ayez plus peur de mal éditer un fichier texte de zone, on s'en occupe !
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Notre solution n'a pas besoin de beaucoup de ressources et peut s'utiliser sur un Raspberry Pi. Ou même n'être lancée que lorsque c'est nécessaire.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Répondez à tous vos besoins<br>
|
|
||||||
en toute simplicité.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Un nouveau service ? Une correction urgente ? happy<span class="fw-bold">Domain</span> utilise une terminologie simple, pour rester focalisé sur le résultat attendu.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Nous avons à cœur de mettre à disposition les dernières nouveautés en terme d'enregistrement DNS et de services.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-services.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-plum-100)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/service-caa.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Gérez simplement, même les zones spéciales.
|
|
||||||
<small class="text-muted">
|
|
||||||
(bientôt disponible)
|
|
||||||
</small>
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Vous recherchez une interface qui affiche d'une manière humaine les zones de <span class="font-italic">reverse</span> IPv4/IPv6 ? ou une zone <a href="https://fr.wikipedia.org/wiki/DNSBL"><span class="font-italic">Real-time Blockhole List</span> (DNSBL)</a> ? Ou encore une zone de politique <a href="https://www.dnsrpz.info/">de filtrage des réponses DNS (DNS-RPZ)</a> ?
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
happy<span class="fw-bold">Domain</span> les comprend et vous permet de les gérer sans équivoque.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
85
content/use-happyDomain/geek.fr.md
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
+++
|
||||||
|
title = "happyDomain pour les passionnés"
|
||||||
|
description = "Prenez le contrôle de vos noms de domaine avec une interface open source puissante. happyDomain rend la gestion DNS accessible et agréable pour les passionnés de tech."
|
||||||
|
layout = "usage"
|
||||||
|
+++
|
||||||
|
|
||||||
|
{{< usage-lead >}}
|
||||||
|
Une <span class="text-hilight px-1">interface open source</span> pour <span class="text-hilight px-1">garder son indépendance</span> sur le web.
|
||||||
|
{{< /usage-lead >}}
|
||||||
|
|
||||||
|
{{< usage-points title="Ça vous parle ?" >}}
|
||||||
|
{{< usage-point icon="house-gear" title="Auto-hébergé, sauf le DNS" >}}
|
||||||
|
Votre mail, votre cloud, votre git sont sur vos propres serveurs. Mais votre DNS reste enfermé dans une console de registrar fermée que vous ne contrôlez pas.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="exclamation-triangle" title="Une faute de frappe et c'est la catastrophe" >}}
|
||||||
|
Les fichiers de zone bruts ne pardonnent rien. Un point oublié, un TTL erroné, et votre mail disparaît silencieusement pendant des heures avant que vous ne le remarquiez.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="lock" title="Prisonnier d'un fournisseur" >}}
|
||||||
|
L'interface de chaque registrar décide de ce que vous pouvez faire et comment. Déplacer vos zones ailleurs, c'est tout réapprendre.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< /usage-points >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Une interface simple et claire, quel que soit l'hébergeur."
|
||||||
|
image="/img/screenshots/domain-abstract.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com"
|
||||||
|
alt="Une zone affichée de manière claire et lisible"
|
||||||
|
>}}
|
||||||
|
Que vos zones soient chez un registrar ou sur vos propres serveurs, happy<span class="fw-bold">Domain</span> les affiche de la même manière claire, pour limiter les erreurs.
|
||||||
|
|
||||||
|
Installez happy<span class="fw-bold">Domain</span> à côté de votre Bind ou PowerDNS et profitez de l'interface sans changer votre configuration.
|
||||||
|
<span class="text-muted">(bientôt disponible)</span>
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="L'auto-hébergement facilité, même pour le DNS."
|
||||||
|
image="/img/screenshots/providers-list.webp"
|
||||||
|
url="app.happydomain.org/providers"
|
||||||
|
alt="Liste des fournisseurs pris en charge, des services cloud aux serveurs auto-hébergés"
|
||||||
|
flip="true"
|
||||||
|
bg="green"
|
||||||
|
>}}
|
||||||
|
Avec la même interface, gérez votre zone chez un fournisseur tiers ou faites tourner vos propres serveurs DNS. Vos domaines, vos règles.
|
||||||
|
|
||||||
|
N'ayez plus peur d'éditer un fichier texte de zone : on s'en occupe.
|
||||||
|
|
||||||
|
happy<span class="fw-bold">Domain</span> est open source, n'a besoin que de très peu de ressources, tourne sans souci sur un Raspberry Pi, et peut même n'être lancé que lorsque c'est nécessaire.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Bidouillez sans crainte : aperçu, historique, retour arrière."
|
||||||
|
image="/img/screenshots/zone-diff.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/diff"
|
||||||
|
alt="Vérifiez et confirmez les modifications qui seront appliquées"
|
||||||
|
>}}
|
||||||
|
Avant la publication de toute modification, happy<span class="fw-bold">Domain</span> vous montre exactement ce qui va changer et demande confirmation. Fini les fautes de frappe silencieuses.
|
||||||
|
|
||||||
|
Et comme chaque version de votre zone est conservée dans l'historique, vous pouvez expérimenter librement et revenir en arrière en un clic si quelque chose tourne mal.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Répondez à tous vos besoins en toute simplicité."
|
||||||
|
image="/img/screenshots/domain-services.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/services"
|
||||||
|
alt="Services rattachés à un domaine, décrits en mots simples"
|
||||||
|
flip="true"
|
||||||
|
bg="plum"
|
||||||
|
>}}
|
||||||
|
Un nouveau service ? Une correction urgente ? happy<span class="fw-bold">Domain</span> utilise une terminologie simple, pour rester focalisé sur le résultat attendu.
|
||||||
|
|
||||||
|
Nous avons à cœur de mettre à disposition les dernières nouveautés en terme d'enregistrement DNS et de services, pour que votre configuration ne soit jamais en retard sur les standards.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Gérez simplement, même les zones spéciales."
|
||||||
|
image="/img/screenshots/service-caa.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/services"
|
||||||
|
alt="Édition d'un service DNS avancé via un formulaire guidé"
|
||||||
|
coming_soon="true"
|
||||||
|
>}}
|
||||||
|
Vous recherchez une interface qui affiche d'une manière humaine les zones de <span class="font-italic">reverse</span> IPv4/IPv6 ?
|
||||||
|
Ou une zone <a href="https://fr.wikipedia.org/wiki/DNSBL"><span class="font-italic">Real-time Blackhole List</span> (DNSBL)</a> ? Ou encore une zone de politique <a href="https://www.dnsrpz.info/">de filtrage des réponses DNS (DNS-RPZ)</a> ?
|
||||||
|
|
||||||
|
happy<span class="fw-bold">Domain</span> les comprend et vous permet de les gérer sans équivoque.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
@ -1,110 +0,0 @@
|
||||||
+++
|
|
||||||
title = "happyDomain for System Administrators"
|
|
||||||
description = "Simplify DNS zone management across multiple providers. happyDomain gives sysadmins a unified interface with history, rollback, and audit trails."
|
|
||||||
layout = "usage"
|
|
||||||
+++
|
|
||||||
|
|
||||||
<div class="container-fluid mt-3 pt-4 pb-3">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2 col-xl-6 offset-xl-3">
|
|
||||||
<p class="lead text-center">
|
|
||||||
A <span class="text-hilight">simple interface</span> to view and manage your zones, both internals <span class="text-nowrap">(Bind, ...)</span> and publics <span class="text-nowrap">(OVH, Gandi, ...)</span>.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container mb-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Edit your zone files more efficiently.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Whatever the host of your zones, happy<span class="fw-bold">Domain</span> displays them in a clear way to limit errors.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
By installing happy<span class="fw-bold">Domain</span> next to your Bind or PowerDNS, enjoy the interface without changing your configuration. <span class="text-muted">(coming soon)</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7 py-2 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-green-50)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/zone-diff.webp" alt="Review and confirm the changes that will be applied">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
View your changes before applying them.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Before publishing your changes, happy<span class="fw-bold">Domain</span> shows you what changes will be made. A preview that will avoid many mistakes.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
You can even select which changes you want to release now and which ones should wait.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Share the zone management with your teams or collaborators.
|
|
||||||
<small class="text-muted">
|
|
||||||
(coming soon)
|
|
||||||
</small>
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Whether it's permanent or in preparation for a particular event, happy<span class="fw-bold">Domain</span> gives you the ability to collaborate on editing the same area.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Delegate to your teams all or only part of the area, it's up to you.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-plum-100)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domains-list.png" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Manage simply, even the special zones.
|
|
||||||
<small class="text-muted">
|
|
||||||
(coming soon)
|
|
||||||
</small>
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Looking for an interface that displays reverse IPv4/IPv6 zones in a human way?
|
|
||||||
Or a <a href="https://en.wikipedia.org/wiki/DNSBL">Real-time Blockhole List (DNSBL)</a> zone? Or a DNS <a href="https://www.dnsrpz.info/">Response Policy Zones</a> (DNS-RPZ)?
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
happy<span class="fw-bold">Domain</span> understands them and allows you to manage them unequivocally.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
96
content/use-happyDomain/sysadmin.en.md
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
+++
|
||||||
|
title = "happyDomain for System Administrators"
|
||||||
|
description = "Simplify DNS zone management across multiple providers. happyDomain gives sysadmins a unified interface with history, rollback, and audit trails."
|
||||||
|
layout = "usage"
|
||||||
|
+++
|
||||||
|
|
||||||
|
{{< usage-lead >}}
|
||||||
|
A <span class="text-hilight px-1">single interface</span> to view and manage your zones, both internal <span class="text-nowrap">(Bind, ...)</span> and public <span class="text-nowrap">(OVH, Gandi, ...)</span>.
|
||||||
|
{{< /usage-lead >}}
|
||||||
|
|
||||||
|
{{< usage-points title="Does this sound familiar?" >}}
|
||||||
|
{{< usage-point icon="terminal" title="Two worlds, two workflows" >}}
|
||||||
|
SSH and a text editor for the internal zones, a different web console for each public provider. Same records, completely different tools.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="arrow-counterclockwise" title="No undo" >}}
|
||||||
|
A bad record propagates in seconds. Recovering means digging through backups or your memory, while the service is down.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="inboxes" title="Every change lands on you" >}}
|
||||||
|
You're the only one trusted to touch DNS, so every record request becomes a ticket in your queue.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< /usage-points >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Edit all your zones in one place, internal and public."
|
||||||
|
image="/img/screenshots/domain-abstract.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com"
|
||||||
|
alt="A zone displayed the same clear way, whatever the host"
|
||||||
|
>}}
|
||||||
|
Whatever the host of your zones, happy<span class="fw-bold">Domain</span> displays them in the same clear way, limiting errors.
|
||||||
|
|
||||||
|
Install happy<span class="fw-bold">Domain</span> next to your Bind or PowerDNS and enjoy the interface without changing your configuration. <span class="text-muted">(coming soon)</span>
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="View your changes before applying them."
|
||||||
|
image="/img/screenshots/zone-diff.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/diff"
|
||||||
|
alt="Review and confirm the changes that will be applied"
|
||||||
|
flip="true"
|
||||||
|
bg="green"
|
||||||
|
>}}
|
||||||
|
Before publishing, happy<span class="fw-bold">Domain</span> shows you exactly what will change. A preview that avoids many mistakes, on zones where mistakes are expensive.
|
||||||
|
|
||||||
|
You can even select which changes go out now and which ones should wait.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Full history, instant rollback."
|
||||||
|
image="/img/screenshots/domain-history.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/logs"
|
||||||
|
alt="History of every version of a zone"
|
||||||
|
>}}
|
||||||
|
Every version of every zone is kept, with who changed what and when.
|
||||||
|
|
||||||
|
When something breaks, you don't reconstruct the previous state from backups: you roll the zone back to it in one click, then investigate calmly.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Catch problems before they become outages."
|
||||||
|
image="/img/screenshots/checks-dashboard.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/checks"
|
||||||
|
alt="Monitoring dashboard showing the status of every check on a domain"
|
||||||
|
flip="true"
|
||||||
|
bg="plum"
|
||||||
|
>}}
|
||||||
|
With built-in checkers, happy<span class="fw-bold">Domain</span> keeps an eye on your domains and zones around the clock: registration expiry, DNSSEC validity, delegation consistency, TLS certificates, response times and more.
|
||||||
|
|
||||||
|
Each check is evaluated against clear rules and reported as <span class="fw-bold">OK</span>, <span class="fw-bold">Warning</span> or <span class="fw-bold">Critical</span>, so you spot what needs attention at a glance and get notified the moment a check changes state.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Share zone management with your teams."
|
||||||
|
image="/img/screenshots/domain-abstract-records.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com"
|
||||||
|
alt="Zone management shared between teams"
|
||||||
|
coming_soon="true"
|
||||||
|
>}}
|
||||||
|
Whether it's permanent or in preparation for a particular event, happy<span class="fw-bold">Domain</span> lets several people collaborate on the same zone.
|
||||||
|
|
||||||
|
Delegate all or only part of a zone, down to a single record. The routine requests leave your queue; the control stays with you.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Manage simply, even the special zones."
|
||||||
|
image="/img/screenshots/service-caa.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/services"
|
||||||
|
alt="Editing an advanced DNS service through a guided form"
|
||||||
|
flip="true"
|
||||||
|
bg="green"
|
||||||
|
coming_soon="true"
|
||||||
|
>}}
|
||||||
|
Looking for an interface that displays reverse IPv4/IPv6 zones in a human way?
|
||||||
|
Or a <a href="https://en.wikipedia.org/wiki/DNSBL">Real-time Blackhole List (DNSBL)</a> zone? Or DNS <a href="https://www.dnsrpz.info/">Response Policy Zones</a> (DNS-RPZ)?
|
||||||
|
|
||||||
|
happy<span class="fw-bold">Domain</span> understands them and lets you manage them unequivocally.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
@ -1,109 +0,0 @@
|
||||||
+++
|
|
||||||
title = "happyDomain pour les administrateurs systèmes"
|
|
||||||
description = "Simplifiez la gestion des zones DNS chez plusieurs hébergeurs. happyDomain offre aux sysadmins une interface unifiée avec historique, rollback et journal d'audit."
|
|
||||||
layout = "usage"
|
|
||||||
+++
|
|
||||||
|
|
||||||
<div class="container-fluid mt-3 pt-4 pb-3">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-10 offset-md-1 col-lg-8 offset-lg-2 col-xl-6 offset-xl-3">
|
|
||||||
<p class="lead text-center">
|
|
||||||
Une <span class="text-hilight">interface simple</span> pour voir et gérer vos zones, tant internes <span class="text-nowrap">(Bind, ...)</span> que publiques <span class="text-nowrap">(OVH, Gandi, ...)</span>.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container mb-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Éditez plus efficacement vos fichiers de zone.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Quel que soit l'hébergeur de vos zones, happy<span class="fw-bold">Domain</span> les affiche de manière claire pour limiter les erreurs.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
En installant happy<span class="fw-bold">Domain</span> à côté de votre Bind ou PowerDNS, profitez de l'interface sans changer votre configuration. <span class="text-muted">(bientôt disponible)</span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7 py-2 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-green-50)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/zone-diff.webp" alt="Relisiez puis confirmer les modifications qui seront appliquées">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Visualisez les modifications apportées avant de les appliquer.
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Avant de publier vos changements, happy<span class="fw-bold">Domain</span> vous montre quelles modifications seront faites. Une prévisualisation qui évitera bien des erreurs.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Vous pouvez même sélectionner les changements que vous souhaitez diffuser maintenant et ceux qui doivent attendre.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-0 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Partagez la gestion de la zone avec vos équipes ou vos collaborateurs.
|
|
||||||
<small class="text-muted">
|
|
||||||
(bientôt disponible)
|
|
||||||
</small>
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Que ce soit permanent ou en préparation d'un événement particulier, happy<span class="fw-bold">Domain</span> vous offre la possibilité de collaborer à l'édition d'un même domaine.
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Déléguez à vos équipes tout ou partie de la zone, c'est vous qui choisissez.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="order-1 col-md-7">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domain-abstract.webp" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="container-fluid py-5" style="background: var(--hd-plum-100)">
|
|
||||||
<div class="container my-5">
|
|
||||||
<div class="row">
|
|
||||||
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
|
||||||
<img class="rounded img-thumbnail" src="/img/screenshots/domains-list.png" alt="Liste des domaines, regroupés astucieusement par client">
|
|
||||||
</div>
|
|
||||||
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
|
||||||
<h4 class="fw-bold">
|
|
||||||
Gérez simplement, même les zones spéciales.
|
|
||||||
<small class="text-muted">
|
|
||||||
(bientôt disponible)
|
|
||||||
</small>
|
|
||||||
</h4>
|
|
||||||
<hr class="bg-light mx-5">
|
|
||||||
<p>
|
|
||||||
Vous recherchez une interface qui affiche d'une manière humaine les zones de <span class="font-italic">reverse</span> IPv4/IPv6 ? ou une zone <a href="https://fr.wikipedia.org/wiki/DNSBL"><span class="font-italic">Real-time Blockhole List</span> (DNSBL)</a> ? Ou encore une zone de politique <a href="https://www.dnsrpz.info/">de filtrage des réponses DNS (DNS-RPZ)</a> ?
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
happy<span class="fw-bold">Domain</span> les comprend et vous permet de les gérer sans équivoque.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
96
content/use-happyDomain/sysadmin.fr.md
Normal file
|
|
@ -0,0 +1,96 @@
|
||||||
|
+++
|
||||||
|
title = "happyDomain pour les administrateurs systèmes"
|
||||||
|
description = "Simplifiez la gestion des zones DNS chez plusieurs hébergeurs. happyDomain offre aux sysadmins une interface unifiée avec historique, rollback et journal d'audit."
|
||||||
|
layout = "usage"
|
||||||
|
+++
|
||||||
|
|
||||||
|
{{< usage-lead >}}
|
||||||
|
Une <span class="text-hilight px-1">interface unique</span> pour voir et gérer vos zones, tant internes <span class="text-nowrap">(Bind, ...)</span> que publiques <span class="text-nowrap">(OVH, Gandi, ...)</span>.
|
||||||
|
{{< /usage-lead >}}
|
||||||
|
|
||||||
|
{{< usage-points title="Ça vous parle ?" >}}
|
||||||
|
{{< usage-point icon="terminal" title="Deux mondes, deux méthodes" >}}
|
||||||
|
SSH et un éditeur de texte pour les zones internes, une console web différente pour chaque hébergeur public. Les mêmes enregistrements, des outils complètement différents.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="arrow-counterclockwise" title="Aucun retour arrière" >}}
|
||||||
|
Un mauvais enregistrement se propage en quelques secondes. Pour le récupérer, il faut fouiller dans les sauvegardes ou dans votre mémoire, pendant que le service est en panne.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< usage-point icon="inboxes" title="Tout retombe sur vous" >}}
|
||||||
|
Vous êtes la seule personne de confiance pour toucher au DNS, alors chaque demande d'enregistrement devient un ticket dans votre file.
|
||||||
|
{{< /usage-point >}}
|
||||||
|
{{< /usage-points >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Éditez toutes vos zones au même endroit, internes et publiques."
|
||||||
|
image="/img/screenshots/domain-abstract.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com"
|
||||||
|
alt="Une zone affichée de la même manière claire, quel que soit l'hébergeur"
|
||||||
|
>}}
|
||||||
|
Quel que soit l'hébergeur de vos zones, happy<span class="fw-bold">Domain</span> les affiche de la même manière claire, pour limiter les erreurs.
|
||||||
|
|
||||||
|
Installez happy<span class="fw-bold">Domain</span> à côté de votre Bind ou PowerDNS et profitez de l'interface sans changer votre configuration. <span class="text-muted">(bientôt disponible)</span>
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Visualisez vos modifications avant de les appliquer."
|
||||||
|
image="/img/screenshots/zone-diff.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/diff"
|
||||||
|
alt="Relisez puis confirmez les modifications qui seront appliquées"
|
||||||
|
flip="true"
|
||||||
|
bg="green"
|
||||||
|
>}}
|
||||||
|
Avant de publier, happy<span class="fw-bold">Domain</span> vous montre exactement ce qui va changer. Une prévisualisation qui évite bien des erreurs, sur des zones où les erreurs coûtent cher.
|
||||||
|
|
||||||
|
Vous pouvez même sélectionner les changements qui partent maintenant et ceux qui doivent attendre.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Historique complet, retour arrière instantané."
|
||||||
|
image="/img/screenshots/domain-history.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/logs"
|
||||||
|
alt="Historique de chaque version d'une zone"
|
||||||
|
>}}
|
||||||
|
Chaque version de chaque zone est conservée, avec qui a changé quoi et quand.
|
||||||
|
|
||||||
|
Quand quelque chose casse, vous ne reconstruisez pas l'état précédent à partir des sauvegardes : vous y ramenez la zone en un clic, puis vous enquêtez calmement.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Détectez les problèmes avant qu'ils ne deviennent des pannes."
|
||||||
|
image="/img/screenshots/checks-dashboard.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/checks"
|
||||||
|
alt="Tableau de bord de supervision affichant l'état de chaque vérification d'un domaine"
|
||||||
|
flip="true"
|
||||||
|
bg="plum"
|
||||||
|
>}}
|
||||||
|
Grâce aux vérificateurs intégrés, happy<span class="fw-bold">Domain</span> surveille vos domaines et vos zones en permanence : expiration de la réservation, validité DNSSEC, cohérence de la délégation, certificats TLS, temps de réponse et bien plus.
|
||||||
|
|
||||||
|
Chaque vérification est évaluée selon des règles claires et reportée en <span class="fw-bold">OK</span>, <span class="fw-bold">Avertissement</span> ou <span class="fw-bold">Critique</span>, pour repérer d'un coup d'œil ce qui demande votre attention, et soyez notifié dès qu'une vérification change d'état.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Partagez la gestion de la zone avec vos équipes."
|
||||||
|
image="/img/screenshots/domain-abstract-records.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com"
|
||||||
|
alt="Gestion de zone partagée entre les équipes"
|
||||||
|
coming_soon="true"
|
||||||
|
>}}
|
||||||
|
Que ce soit permanent ou en préparation d'un événement particulier, happy<span class="fw-bold">Domain</span> permet à plusieurs personnes de collaborer sur une même zone.
|
||||||
|
|
||||||
|
Déléguez tout ou seulement une partie d'une zone, jusqu'à un seul enregistrement. Les demandes de routine quittent votre file ; le contrôle reste chez vous.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
||||||
|
{{< usage-feature
|
||||||
|
title="Gérez simplement, même les zones spéciales."
|
||||||
|
image="/img/screenshots/service-caa.webp"
|
||||||
|
url="app.happydomain.org/domains/example.com/services"
|
||||||
|
alt="Édition d'un service DNS avancé via un formulaire guidé"
|
||||||
|
flip="true"
|
||||||
|
bg="green"
|
||||||
|
coming_soon="true"
|
||||||
|
>}}
|
||||||
|
Vous recherchez une interface qui affiche d'une manière humaine les zones de <span class="font-italic">reverse</span> IPv4/IPv6 ?
|
||||||
|
Ou une zone <a href="https://fr.wikipedia.org/wiki/DNSBL"><span class="font-italic">Real-time Blackhole List</span> (DNSBL)</a> ? Ou encore une zone de politique <a href="https://www.dnsrpz.info/">de filtrage des réponses DNS (DNS-RPZ)</a> ?
|
||||||
|
|
||||||
|
happy<span class="fw-bold">Domain</span> les comprend et vous permet de les gérer sans équivoque.
|
||||||
|
{{< /usage-feature >}}
|
||||||
|
|
@ -13,10 +13,14 @@
|
||||||
|
|
||||||
{{ partial "jumbo.html" . }}
|
{{ partial "jumbo.html" . }}
|
||||||
|
|
||||||
{{ partial "carousel.html" . }}
|
{{ partial "work-with.html" . }}
|
||||||
|
|
||||||
|
{{ partial "big-idea.html" . }}
|
||||||
|
|
||||||
{{ partial "features.html" . }}
|
{{ partial "features.html" . }}
|
||||||
|
|
||||||
|
{{ partial "carousel.html" . }}
|
||||||
|
|
||||||
{{ partial "discover.html" . }}
|
{{ partial "discover.html" . }}
|
||||||
|
|
||||||
{{/* partial "testimonials.html" . */}}
|
{{/* partial "testimonials.html" . */}}
|
||||||
|
|
|
||||||
72
layouts/partials/big-idea.html
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
<!-- ── The big idea: services not records ─────────────── -->
|
||||||
|
<section class="section section--paper" id="idea">
|
||||||
|
<div class="container">
|
||||||
|
<div class="section-head">
|
||||||
|
<span class="eyebrow"><span class="dot"></span>The big idea</span>
|
||||||
|
<h2 class="h2">Stop reading zone files.<br>Start managing services.</h2>
|
||||||
|
<p class="lede">DNS records are an implementation detail. happyDomain groups them by what they actually <em>do</em> — your email, your website, your delegation — so you can edit with intent instead of decoding RFCs.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="idea-grid">
|
||||||
|
<div class="idea-col">
|
||||||
|
<div class="idea-tag"><span class="num">A</span>Without happyDomain</div>
|
||||||
|
<h3><span class="strike">happydomain.org</span> · zone file</h3>
|
||||||
|
<pre class="zone-pre"><span class="c">; Zone: happydomain.org.</span>
|
||||||
|
<span class="c">; TTL = 3600</span>
|
||||||
|
|
||||||
|
@ IN <span class="k">SOA</span> ns1 admin 2024010101 3600 900 604800 300
|
||||||
|
@ IN <span class="k">NS</span> ns1.happydomain.org.
|
||||||
|
@ IN <span class="k">NS</span> ns2.happydomain.org.
|
||||||
|
@ IN <span class="k">A</span> <span class="v">93.184.216.34</span>
|
||||||
|
@ IN <span class="k">AAAA</span> <span class="v">2606:2800:220:1:248:1893:25c8:1946</span>
|
||||||
|
@ IN <span class="k">MX</span> 10 mail.happydomain.org.
|
||||||
|
@ IN <span class="k">TXT</span> <span class="v">"v=spf1 include:_spf.eu ~all"</span>
|
||||||
|
_dmarc IN <span class="k">TXT</span> <span class="v">"v=DMARC1; p=none; rua=…"</span>
|
||||||
|
mail IN <span class="k">A</span> <span class="v">93.184.216.40</span>
|
||||||
|
www IN <span class="k">CNAME</span> @
|
||||||
|
@ IN <span class="k">CAA</span> <span class="v">0 issue "letsencrypt.org"</span></pre>
|
||||||
|
</div>
|
||||||
|
<div class="idea-col">
|
||||||
|
<div class="idea-tag"><span class="num">B</span>With happyDomain</div>
|
||||||
|
<h3>happydomain.org · services</h3>
|
||||||
|
<div class="svc">
|
||||||
|
<div class="svc-row">
|
||||||
|
<div class="svc-l">
|
||||||
|
<div class="svc-ico"><i class="bi bi-globe2"></i></div>
|
||||||
|
<div><div class="svc-name">Website</div><div class="svc-desc">A, AAAA on @ · CNAME on www</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="svc-r"><span class="svc-cnt">3</span><span class="svc-ok"><i class="bi bi-check-circle-fill"></i> OK</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="svc">
|
||||||
|
<div class="svc-row">
|
||||||
|
<div class="svc-l">
|
||||||
|
<div class="svc-ico"><i class="bi bi-envelope"></i></div>
|
||||||
|
<div><div class="svc-name">Email</div><div class="svc-desc">MX, SPF and DMARC policy</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="svc-r"><span class="svc-cnt">3</span><span class="svc-ok"><i class="bi bi-check-circle-fill"></i> OK</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="svc">
|
||||||
|
<div class="svc-row">
|
||||||
|
<div class="svc-l">
|
||||||
|
<div class="svc-ico"><i class="bi bi-diagram-3"></i></div>
|
||||||
|
<div><div class="svc-name">Delegation</div><div class="svc-desc">2 nameservers</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="svc-r"><span class="svc-cnt">2</span><span class="svc-ok"><i class="bi bi-check-circle-fill"></i> OK</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="svc">
|
||||||
|
<div class="svc-row">
|
||||||
|
<div class="svc-l">
|
||||||
|
<div class="svc-ico"><i class="bi bi-shield-check"></i></div>
|
||||||
|
<div><div class="svc-name">TLS / Security</div><div class="svc-desc">CAA · Let's Encrypt only</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="svc-r"><span class="svc-cnt">1</span><span class="svc-ok"><i class="bi bi-check-circle-fill"></i> OK</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p style="font-size:12.5px; color: var(--fg-3); margin: 16px 0 0;">Same zone. Edit by intent, not by record type.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
@ -1,6 +1,14 @@
|
||||||
<nav aria-label="breadcrumb" style="background-color: #e9ecef; padding-top: 64px">
|
<nav class="hd-breadcrumb" aria-label="breadcrumb">
|
||||||
<ol class="breadcrumb container">
|
<div class="container">
|
||||||
<li class="breadcrumb-item"><a href="../">{{ i18n "home" }}</a></li>
|
<ol class="hd-breadcrumb__trail">
|
||||||
<li class="breadcrumb-item active" aria-current="page">{{ .Title }}</li>
|
<li>
|
||||||
</ol>
|
<a href="/{{ .Site.Language.Lang }}/">
|
||||||
|
<i class="bi bi-house-door-fill"></i> {{ i18n "home" }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<span class="current" aria-current="page">{{ .Title }}</span>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,36 @@
|
||||||
<nav aria-label="breadcrumb" style="background-color: #e9ecef; padding-top: 64px">
|
<nav class="hd-breadcrumb hd-breadcrumb--usage" aria-label="breadcrumb">
|
||||||
<div class="container d-flex gap-1">
|
<div class="hd-breadcrumb__row container">
|
||||||
<div class="align-self-center">
|
<p class="hd-breadcrumb__lead">
|
||||||
{{ i18n "usage-discover-pre" }} <span style="font-family: var(--hd-font-brand)">happy<strong>Domain</strong></span> {{ i18n "usage-discover-post" }}
|
{{ i18n "usage-discover-pre" }}
|
||||||
</div>
|
<span class="brand">happy<strong>Domain</strong></span>
|
||||||
<ol class="breadcrumb mb-0">
|
{{ i18n "usage-discover-post" }}
|
||||||
<li class="breadcrumb-item"><a href="{{ ref . "/use-happyDomain/freelance" }}">{{ i18n "freelance" }}</a></li>
|
</p>
|
||||||
<li class="breadcrumb-item"><a href="{{ ref . "/use-happyDomain/sysadmin" }}">{{ i18n "sysadmin" }}</a></li>
|
<ul class="hd-breadcrumb__personas">
|
||||||
<li class="breadcrumb-item"><a href="{{ ref . "/use-happyDomain/devops" }}">{{ i18n "devops" }}</a></li>
|
<li>
|
||||||
<li class="breadcrumb-item"><a href="{{ ref . "/use-happyDomain/cio" }}">{{ i18n "cio" }}</a></li>
|
<a href="{{ ref . "/use-happyDomain/freelance" }}">
|
||||||
<li class="breadcrumb-item"><a href="{{ ref . "/use-happyDomain/geek" }}">{{ i18n "geek" }}</a></li>
|
<i class="bi bi-person-workspace"></i> {{ i18n "freelance" }}
|
||||||
</ol>
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="{{ ref . "/use-happyDomain/sysadmin" }}">
|
||||||
|
<i class="bi bi-hdd-rack"></i> {{ i18n "sysadmin" }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="{{ ref . "/use-happyDomain/devops" }}">
|
||||||
|
<i class="bi bi-infinity"></i> {{ i18n "devops" }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="{{ ref . "/use-happyDomain/cio" }}">
|
||||||
|
<i class="bi bi-building"></i> {{ i18n "cio" }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="{{ ref . "/use-happyDomain/geek" }}">
|
||||||
|
<i class="bi bi-controller"></i> {{ i18n "geek" }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<footer class="pt-5 pb-3 bg-dark text-light">
|
<footer class="pt-5 pb-3">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-5 g-4 mb-4">
|
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-5 g-4 mb-4">
|
||||||
<div class="col footer-brand-col">
|
<div class="col footer-brand-col">
|
||||||
|
|
@ -33,11 +33,11 @@
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<h4 class="footer-heading">{{ i18n "footer-product" }}</h4>
|
<h4 class="footer-heading">{{ i18n "footer-product" }}</h4>
|
||||||
<ul class="footer-links">
|
<ul class="footer-links">
|
||||||
<li><a href="#features">{{ i18n "footer-happydomain-features" }}</a></li>
|
<li><a href="/{{ .Site.Language.Lang }}/#features">{{ i18n "footer-happydomain-features" }}</a></li>
|
||||||
<li><a href="#discover">{{ i18n "discover-title" }}</a></li>
|
<li><a href="/{{ .Site.Language.Lang }}/#discover">{{ i18n "discover-title" }}</a></li>
|
||||||
<li><a href="https://try.happydomain.org/" data-umami-event="footer-tryit">{{ i18n "tryit" }}</a></li>
|
<li><a href="https://try.happydomain.org/" data-umami-event="footer-tryit">{{ i18n "tryit" }}</a></li>
|
||||||
<!--li><a href="#">{{ i18n "footer-happydomain-testimonials" }}</a></li-->
|
<!--li><a href="#">{{ i18n "footer-happydomain-testimonials" }}</a></li-->
|
||||||
<li><a href="#downloads">{{ i18n "footer-happydomain-downloads" }}</a></li>
|
<li><a href="/{{ .Site.Language.Lang }}/#downloads">{{ i18n "footer-happydomain-downloads" }}</a></li>
|
||||||
<!--li><a href="#">{{ i18n "footer-happydomain-prices" }}</a></li-->
|
<!--li><a href="#">{{ i18n "footer-happydomain-prices" }}</a></li-->
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,88 +1,254 @@
|
||||||
<style>
|
<style>
|
||||||
.jumbo-hero {
|
.jumbo-hero {
|
||||||
padding: 8rem 0 5rem;
|
padding: 8rem 0 5rem;
|
||||||
background: linear-gradient(135deg, var(--hd-accent-subtle, #f0fdf4) 0%, var(--hd-bg-canvas, white) 60%);
|
background: linear-gradient(
|
||||||
}
|
135deg,
|
||||||
.hero-eyebrow {
|
var(--hd-accent-subtle, #f0fdf4) 0%,
|
||||||
display: flex;
|
var(--hd-bg-canvas, white) 60%
|
||||||
align-items: center;
|
);
|
||||||
flex-wrap: wrap;
|
}
|
||||||
gap: .75rem;
|
.hero-eyebrow {
|
||||||
margin-bottom: 1.5rem;
|
display: flex;
|
||||||
font-size: .875rem;
|
align-items: center;
|
||||||
color: var(--hd-fg-3, #6b7280);
|
flex-wrap: wrap;
|
||||||
}
|
gap: 0.75rem;
|
||||||
.hero-eyebrow .badge-os {
|
margin-bottom: 1.5rem;
|
||||||
display: inline-flex;
|
font-size: 0.875rem;
|
||||||
align-items: center;
|
color: var(--hd-fg-3, #6b7280);
|
||||||
gap: .35rem;
|
}
|
||||||
padding: .25em .75em;
|
.hero-eyebrow .badge-os {
|
||||||
background: var(--hd-accent-subtle, #f0fdf4);
|
display: inline-flex;
|
||||||
border: 1px solid var(--hd-accent, #22c55e);
|
align-items: center;
|
||||||
border-radius: 2em;
|
gap: 0.35rem;
|
||||||
color: var(--hd-accent, #22c55e);
|
padding: 0.25em 0.75em;
|
||||||
font-weight: 600;
|
background: var(--hd-accent-subtle, #f0fdf4);
|
||||||
font-size: .8rem;
|
border: 1px solid var(--hd-accent, #22c55e);
|
||||||
}
|
border-radius: 2em;
|
||||||
.hero-meta {
|
color: var(--hd-accent, #22c55e);
|
||||||
display: flex;
|
font-weight: 600;
|
||||||
flex-wrap: wrap;
|
font-size: 0.8rem;
|
||||||
gap: 1rem;
|
}
|
||||||
margin-top: 1.5rem;
|
.hero-meta {
|
||||||
font-size: .875rem;
|
display: flex;
|
||||||
color: var(--hd-fg-3, #6b7280);
|
flex-wrap: wrap;
|
||||||
}
|
gap: 1rem;
|
||||||
.hero-meta .check { color: var(--hd-accent, #22c55e); margin-right: .25rem; }
|
margin-top: 1.5rem;
|
||||||
/* Browser mockup */
|
font-size: 0.875rem;
|
||||||
.hero-stack { position: relative; }
|
color: var(--hd-fg-3, #6b7280);
|
||||||
.hero-stack .browser:last-child {
|
}
|
||||||
position: absolute;
|
.hero-meta .check {
|
||||||
bottom: 0; right: 0;
|
color: var(--hd-accent, #22c55e);
|
||||||
width: 86%;
|
margin-right: 0.25rem;
|
||||||
z-index: 0;
|
}
|
||||||
opacity: .45;
|
/* Browser mockup */
|
||||||
pointer-events: none;
|
.hero-stack {
|
||||||
}
|
position: relative;
|
||||||
.hero-stack .browser:first-child { position: relative; z-index: 1; }
|
}
|
||||||
.browser {
|
.hero-stack .browser:last-child {
|
||||||
background: var(--hd-bg-canvas, #fff);
|
position: absolute;
|
||||||
border-radius: 10px;
|
bottom: 0;
|
||||||
box-shadow: 0 16px 48px rgba(0,0,0,.12);
|
right: 0;
|
||||||
overflow: hidden;
|
width: 86%;
|
||||||
border: 1px solid var(--hd-border, #e5e7eb);
|
z-index: 0;
|
||||||
}
|
opacity: 0.45;
|
||||||
.browser-bar {
|
pointer-events: none;
|
||||||
display: flex;
|
}
|
||||||
align-items: center;
|
.hero-stack .browser:first-child {
|
||||||
gap: .75rem;
|
position: relative;
|
||||||
padding: .55rem 1rem;
|
z-index: 1;
|
||||||
background: var(--hd-bg-subtle, #f9fafb);
|
}
|
||||||
border-bottom: 1px solid var(--hd-border, #e5e7eb);
|
.browser {
|
||||||
}
|
background: var(--hd-bg-canvas, #fff);
|
||||||
.browser-dots { display: flex; gap: 5px; }
|
border-radius: 10px;
|
||||||
.browser-dots span { width: 10px; height: 10px; border-radius: 50%; background: var(--hd-border, #e5e7eb); }
|
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.12);
|
||||||
.browser-url {
|
overflow: hidden;
|
||||||
flex: 1;
|
border: 1px solid var(--hd-border, #e5e7eb);
|
||||||
display: flex;
|
}
|
||||||
align-items: center;
|
.browser-bar {
|
||||||
gap: .01rem;
|
display: flex;
|
||||||
background: var(--hd-bg-canvas, #fff);
|
align-items: center;
|
||||||
border-radius: 4px;
|
gap: 0.75rem;
|
||||||
padding: .22rem .6rem;
|
padding: 0.55rem 1rem;
|
||||||
font-size: .75rem;
|
background: var(--hd-bg-subtle, #f9fafb);
|
||||||
color: var(--hd-fg-3, #6b7280);
|
border-bottom: 1px solid var(--hd-border, #e5e7eb);
|
||||||
}
|
}
|
||||||
.browser-url .lock { color: var(--hd-accent, #22c55e); font-size: .7rem; }
|
.browser-dots {
|
||||||
|
display: flex;
|
||||||
|
gap: 5px;
|
||||||
|
}
|
||||||
|
.browser-dots span {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: var(--hd-border, #e5e7eb);
|
||||||
|
}
|
||||||
|
.browser-url {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.01rem;
|
||||||
|
background: var(--hd-bg-canvas, #fff);
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 0.22rem 0.6rem;
|
||||||
|
font-size: 0.75rem;
|
||||||
|
color: var(--hd-fg-3, #6b7280);
|
||||||
|
}
|
||||||
|
.browser-url .lock {
|
||||||
|
color: var(--hd-accent, #22c55e);
|
||||||
|
font-size: 0.7rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── Screenshot carousel ── */
|
||||||
|
.browser {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
/* window dots double as carousel indicators */
|
||||||
|
.browser-dots .bdot {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
padding: 0;
|
||||||
|
border: none;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: var(--hd-border, #e5e7eb);
|
||||||
|
cursor: pointer;
|
||||||
|
transition:
|
||||||
|
background 0.35s ease,
|
||||||
|
transform 0.35s ease,
|
||||||
|
box-shadow 0.35s ease;
|
||||||
|
}
|
||||||
|
.browser-dots .bdot:hover {
|
||||||
|
transform: scale(1.18);
|
||||||
|
}
|
||||||
|
.browser-dots .bdot.active {
|
||||||
|
background: var(--hd-accent, #22c55e);
|
||||||
|
transform: scale(1.25);
|
||||||
|
box-shadow: 0 0 0 3px var(--hd-accent-subtle, #f0fdf4);
|
||||||
|
}
|
||||||
|
/* URL path swaps with the slide */
|
||||||
|
.browser-url .url-path {
|
||||||
|
transition: opacity 0.25s ease;
|
||||||
|
}
|
||||||
|
.browser.loading .url-path {
|
||||||
|
opacity: 0.35;
|
||||||
|
}
|
||||||
|
/* loading sweep, like a browser navigating */
|
||||||
|
.browser-load {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
height: 2px;
|
||||||
|
width: 0;
|
||||||
|
background: var(--hd-accent, #22c55e);
|
||||||
|
opacity: 0;
|
||||||
|
z-index: 6;
|
||||||
|
pointer-events: none;
|
||||||
|
border-radius: 0 2px 2px 0;
|
||||||
|
}
|
||||||
|
.browser.loading .browser-load {
|
||||||
|
animation: browserLoad 0.7s ease-out;
|
||||||
|
}
|
||||||
|
@keyframes browserLoad {
|
||||||
|
0% {
|
||||||
|
width: 0;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
70% {
|
||||||
|
width: 85%;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
width: 100%;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* the carousel viewport */
|
||||||
|
.carousel-window {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
aspect-ratio: 1920 / 980;
|
||||||
|
background: var(--hd-bg-subtle, #f9fafb);
|
||||||
|
}
|
||||||
|
.carousel-track {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
}
|
||||||
|
.carousel-track .slide {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
margin: 0;
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.8s ease;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.carousel-track .slide.active {
|
||||||
|
opacity: 1;
|
||||||
|
pointer-events: auto;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
.carousel-track .slide img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
object-position: top left;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
/* 7s progress indicator */
|
||||||
|
.carousel-progress {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
height: 3px;
|
||||||
|
width: 100%;
|
||||||
|
background: rgba(0, 0, 0, 0.06);
|
||||||
|
z-index: 4;
|
||||||
|
}
|
||||||
|
.carousel-progress span {
|
||||||
|
display: block;
|
||||||
|
height: 100%;
|
||||||
|
width: 0;
|
||||||
|
background: var(--hd-accent, #22c55e);
|
||||||
|
}
|
||||||
|
.carousel-progress span.run {
|
||||||
|
animation: carProg 7s linear forwards;
|
||||||
|
}
|
||||||
|
@keyframes carProg {
|
||||||
|
from {
|
||||||
|
width: 0;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* pause the progress timer on hover */
|
||||||
|
.browser.paused .carousel-progress span {
|
||||||
|
animation-play-state: paused;
|
||||||
|
}
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
.carousel-track .slide {
|
||||||
|
transition: none;
|
||||||
|
}
|
||||||
|
.carousel-progress span.run {
|
||||||
|
animation: none;
|
||||||
|
}
|
||||||
|
.browser.loading .browser-load {
|
||||||
|
animation: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<section class="jumbo-hero">
|
<section class="jumbo-hero">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row align-items-center g-5">
|
<div class="row align-items-center g-5">
|
||||||
|
|
||||||
<!-- Copy column -->
|
<!-- Copy column -->
|
||||||
<div class="col-lg-5">
|
<div class="col-lg-5">
|
||||||
<a class="hero-eyebrow" href="https://git.happydomain.org/" target="_blank">
|
<a
|
||||||
<span class="badge-os"><i class="bi bi-git"></i> Open source</span>
|
class="hero-eyebrow"
|
||||||
|
href="https://git.happydomain.org/"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
<span class="badge-os"
|
||||||
|
><i class="bi bi-git"></i> Open source</span
|
||||||
|
>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<h1 class="display-4 fw-bold mb-5" style="text-wrap: balance">
|
<h1 class="display-4 fw-bold mb-5" style="text-wrap: balance">
|
||||||
|
|
@ -111,41 +277,93 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="hero-meta">
|
<div class="hero-meta">
|
||||||
<span><i class="bi bi-check2 check"></i><strong>No account</strong> needed for the demo</span>
|
<span
|
||||||
<span><i class="bi bi-check2 check"></i><strong>~30s</strong> to first zone</span>
|
><i class="bi bi-check2 check"></i
|
||||||
<span><i class="bi bi-check2 check"></i><strong>55+</strong> providers</span>
|
><strong>No account</strong> needed for the demo</span
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
><i class="bi bi-check2 check"></i
|
||||||
|
><strong>~30s</strong> to first zone</span
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
><i class="bi bi-check2 check"></i
|
||||||
|
><strong>55+</strong> providers</span
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Visual column -->
|
<!-- Visual column -->
|
||||||
<div class="col-lg-7 d-none d-lg-block">
|
<div class="col-lg-7 d-none d-lg-block">
|
||||||
<div class="hero-stack">
|
<div class="hero-stack">
|
||||||
<!-- Front browser frame: zone editor -->
|
<!-- Front browser frame: screenshot carousel -->
|
||||||
<div class="browser">
|
<div class="browser" id="hero-carousel">
|
||||||
|
<span class="browser-load"></span>
|
||||||
<div class="browser-bar">
|
<div class="browser-bar">
|
||||||
<div class="browser-dots"><span></span><span></span><span></span></div>
|
<div
|
||||||
|
class="browser-dots"
|
||||||
|
role="tablist"
|
||||||
|
aria-label="Screenshots"
|
||||||
|
>
|
||||||
|
{{ range $i, $s := sort .Site.Params.jumboscreen "weight" }}
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
class="bdot{{ if eq $i 0 }} active{{ end }}"
|
||||||
|
data-slide="{{ $i }}"
|
||||||
|
role="tab"
|
||||||
|
aria-selected="{{ if eq $i 0 }}true{{ else }}false{{ end }}"
|
||||||
|
aria-label="{{ $s.alt }}"
|
||||||
|
></button>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
<div class="browser-url">
|
<div class="browser-url">
|
||||||
<i class="bi bi-lock-fill lock me-1"></i>
|
<i class="bi bi-lock-fill lock me-1"></i>
|
||||||
<span>app.</span><strong>happydomain.org</strong><span>/zone/happydomain.org</span>
|
<span>app.</span><strong>happydomain.org</strong
|
||||||
|
><span class="url-path"
|
||||||
|
>{{ with index (sort .Site.Params.jumboscreen "weight") 0 }}{{ .path }}{{ end }}</span
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<img
|
<div class="carousel-window">
|
||||||
src="/img/screenshots/domain-abstract.webp"
|
<div class="carousel-track">
|
||||||
alt="happyDomain zone editor"
|
{{ range $i, $s := sort .Site.Params.jumboscreen "weight" }}
|
||||||
style="width:100%;display:block"
|
<figure
|
||||||
/>
|
class="slide{{ if eq $i 0 }} active{{ end }}"
|
||||||
|
data-path="{{ $s.path }}"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
src="{{ $s.image }}"
|
||||||
|
alt="{{ $s.alt }}"
|
||||||
|
loading="lazy"
|
||||||
|
decoding="async"
|
||||||
|
/>
|
||||||
|
</figure>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
<div class="carousel-progress"><span></span></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Back browser frame, peeking -->
|
<!-- Back browser frame, peeking -->
|
||||||
<div class="browser" aria-hidden="true">
|
<div class="browser" aria-hidden="true">
|
||||||
<div class="browser-bar">
|
<div class="browser-bar">
|
||||||
<div class="browser-dots"><span></span><span></span><span></span></div>
|
<div class="browser-dots">
|
||||||
<div class="browser-url"><i class="bi bi-lock-fill lock"></i><span>try.</span><strong>happydomain.org</strong></div>
|
<span></span><span></span><span></span>
|
||||||
|
</div>
|
||||||
|
<div class="browser-url">
|
||||||
|
<i class="bi bi-lock-fill lock"></i
|
||||||
|
><span>try.</span
|
||||||
|
><strong>happydomain.org</strong>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="padding:14px 16px;height:120px;background:var(--hd-bg-subtle,#f9fafb)"></div>
|
<div
|
||||||
|
style="
|
||||||
|
padding: 14px 16px;
|
||||||
|
height: 120px;
|
||||||
|
background: var(--hd-bg-subtle, #f9fafb);
|
||||||
|
"
|
||||||
|
></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="alert alert-warning mt-5 mb-0" role="alert">
|
<div class="alert alert-warning mt-5 mb-0" role="alert">
|
||||||
|
|
@ -188,3 +406,86 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function () {
|
||||||
|
var root = document.getElementById("hero-carousel");
|
||||||
|
if (!root) return;
|
||||||
|
|
||||||
|
var slides = Array.prototype.slice.call(
|
||||||
|
root.querySelectorAll(".slide"),
|
||||||
|
);
|
||||||
|
var dots = Array.prototype.slice.call(root.querySelectorAll(".bdot"));
|
||||||
|
var pathEl = root.querySelector(".url-path");
|
||||||
|
var prog = root.querySelector(".carousel-progress span");
|
||||||
|
var paths = slides.map(function (slide) {
|
||||||
|
return slide.getAttribute("data-path");
|
||||||
|
});
|
||||||
|
|
||||||
|
var DURATION = 7000;
|
||||||
|
var i = 0,
|
||||||
|
timer = null;
|
||||||
|
var reduce =
|
||||||
|
window.matchMedia &&
|
||||||
|
window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
||||||
|
|
||||||
|
function restartProgress() {
|
||||||
|
if (!prog || reduce) return;
|
||||||
|
prog.classList.remove("run");
|
||||||
|
void prog.offsetWidth; // force reflow so the animation restarts
|
||||||
|
prog.classList.add("run");
|
||||||
|
}
|
||||||
|
|
||||||
|
function go(n) {
|
||||||
|
n = ((n % slides.length) + slides.length) % slides.length;
|
||||||
|
if (n === i) return;
|
||||||
|
|
||||||
|
// mimic a real page navigation: brief loading sweep + dimmed URL
|
||||||
|
root.classList.add("loading");
|
||||||
|
window.setTimeout(function () {
|
||||||
|
root.classList.remove("loading");
|
||||||
|
}, 700);
|
||||||
|
|
||||||
|
slides[i].classList.remove("active");
|
||||||
|
dots[i].classList.remove("active");
|
||||||
|
dots[i].setAttribute("aria-selected", "false");
|
||||||
|
|
||||||
|
i = n;
|
||||||
|
|
||||||
|
slides[i].classList.add("active");
|
||||||
|
dots[i].classList.add("active");
|
||||||
|
dots[i].setAttribute("aria-selected", "true");
|
||||||
|
if (pathEl) pathEl.textContent = paths[i];
|
||||||
|
|
||||||
|
restartProgress();
|
||||||
|
}
|
||||||
|
|
||||||
|
function schedule() {
|
||||||
|
window.clearInterval(timer);
|
||||||
|
if (reduce) return;
|
||||||
|
timer = window.setInterval(function () {
|
||||||
|
go(i + 1);
|
||||||
|
}, DURATION);
|
||||||
|
}
|
||||||
|
|
||||||
|
dots.forEach(function (dot, idx) {
|
||||||
|
dot.addEventListener("click", function () {
|
||||||
|
go(idx);
|
||||||
|
schedule(); // reset the timer so the chosen slide gets its full 7s
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Pause while the visitor is inspecting a screenshot.
|
||||||
|
root.addEventListener("mouseenter", function () {
|
||||||
|
root.classList.add("paused");
|
||||||
|
window.clearInterval(timer);
|
||||||
|
});
|
||||||
|
root.addEventListener("mouseleave", function () {
|
||||||
|
root.classList.remove("paused");
|
||||||
|
schedule();
|
||||||
|
});
|
||||||
|
|
||||||
|
restartProgress();
|
||||||
|
schedule();
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -38,9 +38,9 @@
|
||||||
</a>
|
</a>
|
||||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||||
{{ range .Children }}
|
{{ range .Children }}
|
||||||
<a href="{{ .URL }}" class="dropdown-item"
|
<a href="{{ .URL }}" class="dropdown-item">
|
||||||
>{{ .Name }}</a
|
{{ .Name }}
|
||||||
>
|
</a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
{{ else }}
|
{{ else }}
|
||||||
|
|
|
||||||
22
layouts/partials/usage-browser.html
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
{{/*
|
||||||
|
Wraps a screenshot in a fake browser frame, like the hero on the home page.
|
||||||
|
Params (passed as a dict):
|
||||||
|
image (required) — screenshot URL
|
||||||
|
alt — alt text
|
||||||
|
url — address shown in the URL bar (default: app.happydomain.org)
|
||||||
|
*/}}
|
||||||
|
{{ $image := .image }}
|
||||||
|
{{ $alt := .alt | default "" }}
|
||||||
|
{{ $url := .url | default "app.happydomain.org" }}
|
||||||
|
<div class="usage-browser">
|
||||||
|
<div class="browser-bar">
|
||||||
|
<div class="browser-dots"><span></span><span></span><span></span></div>
|
||||||
|
<div class="browser-url">
|
||||||
|
<i class="bi bi-lock-fill lock"></i>
|
||||||
|
<span>{{ $url }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="browser-body">
|
||||||
|
<img src="{{ $image }}" alt="{{ $alt }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
18
layouts/partials/work-with.html
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
<!-- ── Trust strip ──────────────────────────────────────── -->
|
||||||
|
<section class="trust">
|
||||||
|
<div class="container trust-grid">
|
||||||
|
<div class="trust-tag"><span class="dot"></span>Works with</div>
|
||||||
|
<div class="trust-list">
|
||||||
|
<span><i class="bi bi-globe2"></i>OVH</span>
|
||||||
|
<span><i class="bi bi-leaf"></i>Gandi</span>
|
||||||
|
<span><i class="bi bi-droplet"></i>DigitalOcean</span>
|
||||||
|
<span><i class="bi bi-cloud"></i>Cloudflare</span>
|
||||||
|
<span><i class="bi bi-server"></i>Hetzner</span>
|
||||||
|
<span><i class="bi bi-tag"></i>Namecheap</span>
|
||||||
|
<span><i class="bi bi-terminal"></i>BIND</span>
|
||||||
|
<span><i class="bi bi-hdd-network"></i>Knot DNS</span>
|
||||||
|
<span><i class="bi bi-cpu"></i>PowerDNS</span>
|
||||||
|
</div>
|
||||||
|
<a class="trust-more" href="https://app.happydomain.org/providers/features" target="_blank" rel="noopener">+ 46 more →</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
39
layouts/shortcodes/usage-feature.html
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
{{ $image := .Get "image" }}
|
||||||
|
{{ $alt := .Get "alt" | default "" }}
|
||||||
|
{{ $url := .Get "url" }}
|
||||||
|
{{ $title := .Get "title" }}
|
||||||
|
{{ $flip := eq (.Get "flip") "true" }}
|
||||||
|
{{ $bg := .Get "bg" | default "" }}
|
||||||
|
{{ $comingSoon := eq (.Get "coming_soon") "true" }}
|
||||||
|
|
||||||
|
{{ $style := "" }}
|
||||||
|
{{ if eq $bg "green" }}{{ $style = "background: var(--hd-green-50)" }}{{ end }}
|
||||||
|
{{ if eq $bg "plum" }}{{ $style = "background: var(--hd-plum-100)" }}{{ end }}
|
||||||
|
|
||||||
|
{{ $browserArgs := dict "image" $image "alt" $alt "url" $url }}
|
||||||
|
|
||||||
|
<div class="container-fluid py-5"{{ with $style }} style="{{ . }}"{{ end }}>
|
||||||
|
<div class="container my-5">
|
||||||
|
<div class="row">
|
||||||
|
{{ if $flip }}
|
||||||
|
<div class="order-1 order-md-0 col-md-7 align-self-center">
|
||||||
|
{{ partial "usage-browser.html" $browserArgs }}
|
||||||
|
</div>
|
||||||
|
<div class="order-0 order-md-1 col-md-5 align-self-center text-center">
|
||||||
|
{{ else }}
|
||||||
|
<div class="order-0 col-md-5 align-self-center text-center">
|
||||||
|
{{ end }}
|
||||||
|
<h4 class="fw-bold">
|
||||||
|
{{ $title }}{{ if $comingSoon }} <small class="text-muted">(coming soon)</small>{{ end }}
|
||||||
|
</h4>
|
||||||
|
<hr class="bg-light mx-5">
|
||||||
|
{{ .Inner | markdownify }}
|
||||||
|
</div>
|
||||||
|
{{ if not $flip }}
|
||||||
|
<div class="order-1 col-md-7 py-2 align-self-center">
|
||||||
|
{{ partial "usage-browser.html" $browserArgs }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
9
layouts/shortcodes/usage-lead.html
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<div class="container-fluid my-5 py-4">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-10 offset-lg-1 col-xl-8 offset-xl-2">
|
||||||
|
<p class="display-6 text-center" style="line-height: 1.5">
|
||||||
|
{{ .Inner | markdownify }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
9
layouts/shortcodes/usage-point.html
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{{ $icon := .Get "icon" }}
|
||||||
|
{{ $title := .Get "title" }}
|
||||||
|
<div class="col">
|
||||||
|
<div class="card h-100 border-0 shadow-sm p-4 text-center">
|
||||||
|
{{ with $icon }}<div class="display-5 mb-2 text-primary"><i class="bi bi-{{ . }}"></i></div>{{ end }}
|
||||||
|
<h5 class="fw-bold">{{ $title }}</h5>
|
||||||
|
<div class="text-muted">{{ .Inner | markdownify }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
9
layouts/shortcodes/usage-points.html
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{{ $title := .Get "title" }}
|
||||||
|
<div class="container-fluid py-5 bg-primary-subtle">
|
||||||
|
<div class="container my-5 py-5">
|
||||||
|
{{ with $title }}<h3 class="fw-bold text-center mb-5">{{ . }}</h3>{{ end }}
|
||||||
|
<div class="row row-cols-1 row-cols-md-3 g-4 justify-content-center">
|
||||||
|
{{ .Inner }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
@ -1,4 +1,75 @@
|
||||||
|
/* Fake browser frame wrapping usage screenshots (see partials/usage-browser.html) */
|
||||||
|
.usage-browser {
|
||||||
|
background: var(--hd-bg-canvas);
|
||||||
|
border: 1px solid var(--hd-border-1);
|
||||||
|
border-radius: 10px;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: 0 12px 32px -12px rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
.usage-browser .browser-bar {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
padding: 10px 12px;
|
||||||
|
background: var(--hd-bg-subtle);
|
||||||
|
border-bottom: 1px solid var(--hd-border-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.usage-browser .browser-dots {
|
||||||
|
display: flex;
|
||||||
|
gap: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.usage-browser .browser-dots span {
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: var(--hd-border-2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.usage-browser .browser-url {
|
||||||
|
flex: 1;
|
||||||
|
font-family: var(--hd-font-mono, monospace);
|
||||||
|
font-size: 11px;
|
||||||
|
background: var(--hd-bg-canvas);
|
||||||
|
border: 1px solid var(--hd-border-1);
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 4px 10px;
|
||||||
|
color: var(--hd-fg-3);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.usage-browser .browser-url .lock {
|
||||||
|
color: var(--hd-accent);
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.usage-browser .browser-body {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.usage-browser .browser-body img {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
nav.navbar {
|
nav.navbar {
|
||||||
|
/* Bootstrap bakes the navbar text to a fixed dark color, so it stays dark
|
||||||
|
on the dark background in dark mode. Drive it from the theme-reactive
|
||||||
|
--hd-fg-* vars so the text flips light when the background goes dark. */
|
||||||
|
--bs-navbar-color: var(--hd-fg-2);
|
||||||
|
--bs-navbar-hover-color: var(--hd-fg-1);
|
||||||
|
--bs-navbar-active-color: var(--hd-fg-1);
|
||||||
|
--bs-navbar-brand-color: var(--hd-fg-1);
|
||||||
|
--bs-navbar-brand-hover-color: var(--hd-fg-1);
|
||||||
|
color: var(--hd-fg-2);
|
||||||
background: var(--hd-bg-canvas);
|
background: var(--hd-bg-canvas);
|
||||||
box-shadow: 0 0px 3px 0 var(--hd-accent);
|
box-shadow: 0 0px 3px 0 var(--hd-accent);
|
||||||
border-bottom: 1px solid var(--hd-accent);
|
border-bottom: 1px solid var(--hd-accent);
|
||||||
|
|
@ -7,7 +78,11 @@ nav.navbar {
|
||||||
}
|
}
|
||||||
nav.navbar.beginscroll {
|
nav.navbar.beginscroll {
|
||||||
background:
|
background:
|
||||||
linear-gradient(90deg, var(--hd-accent-subtle) 0%, white 100%),
|
linear-gradient(
|
||||||
|
90deg,
|
||||||
|
var(--hd-accent-subtle) 0%,
|
||||||
|
var(--hd-bg-canvas) 100%
|
||||||
|
),
|
||||||
var(--hd-accent-subtle);
|
var(--hd-accent-subtle);
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
border-bottom: none;
|
border-bottom: none;
|
||||||
|
|
@ -18,6 +93,153 @@ nav.navbar.scrolled {
|
||||||
border-bottom: 1px solid var(--hd-accent);
|
border-bottom: 1px solid var(--hd-accent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ── Page breadcrumb band ──
|
||||||
|
Sits directly under the fixed navbar (64px tall) and gives pages a proper
|
||||||
|
header strip: a soft brand-tinted band with a clickable trail. */
|
||||||
|
.hd-breadcrumb {
|
||||||
|
position: relative;
|
||||||
|
padding-top: calc(64px + 30px);
|
||||||
|
padding-bottom: 26px;
|
||||||
|
background:
|
||||||
|
radial-gradient(
|
||||||
|
120% 160% at 0% 0%,
|
||||||
|
var(--hd-accent-subtle) 0%,
|
||||||
|
transparent 52%
|
||||||
|
),
|
||||||
|
linear-gradient(
|
||||||
|
180deg,
|
||||||
|
var(--hd-bg-subtle) 0%,
|
||||||
|
var(--hd-bg-canvas) 100%
|
||||||
|
);
|
||||||
|
border-bottom: 1px solid var(--hd-border-1);
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Thin accent rule along the bottom edge */
|
||||||
|
.hd-breadcrumb::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: -1px;
|
||||||
|
width: 180px;
|
||||||
|
height: 2px;
|
||||||
|
background: linear-gradient(
|
||||||
|
90deg,
|
||||||
|
var(--hd-accent) 0%,
|
||||||
|
var(--hd-brand-dark) 100%
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hd-breadcrumb__trail {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 2px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
font-size: 0.8125rem;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hd-breadcrumb__trail li {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hd-breadcrumb__trail li + li::before {
|
||||||
|
content: "";
|
||||||
|
width: 6px;
|
||||||
|
height: 6px;
|
||||||
|
margin: 0 6px;
|
||||||
|
border-right: 1.5px solid var(--hd-border-3);
|
||||||
|
border-bottom: 1.5px solid var(--hd-border-3);
|
||||||
|
transform: rotate(-45deg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hd-breadcrumb__trail a {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
color: var(--hd-fg-3);
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: 500;
|
||||||
|
padding: 4px 9px;
|
||||||
|
border-radius: var(--hd-radius);
|
||||||
|
transition:
|
||||||
|
color 0.15s,
|
||||||
|
background-color 0.15s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hd-breadcrumb__trail a:hover {
|
||||||
|
color: var(--hd-accent);
|
||||||
|
background: var(--hd-accent-subtle);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hd-breadcrumb__trail .bi {
|
||||||
|
font-size: 0.875rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hd-breadcrumb__trail .current {
|
||||||
|
color: var(--hd-fg-1);
|
||||||
|
font-weight: 600;
|
||||||
|
padding: 4px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ── Usage / persona breadcrumb band (row of persona pills) ── */
|
||||||
|
.hd-breadcrumb--usage .hd-breadcrumb__row {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 14px 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hd-breadcrumb__lead {
|
||||||
|
font-size: 0.9375rem;
|
||||||
|
color: var(--hd-fg-2);
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hd-breadcrumb__lead .brand {
|
||||||
|
font-family: var(--hd-font-brand);
|
||||||
|
color: var(--hd-fg-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.hd-breadcrumb__personas {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 8px;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hd-breadcrumb__personas a {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
font-size: 0.8125rem;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--hd-fg-2);
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 6px 13px;
|
||||||
|
background: var(--hd-bg-canvas);
|
||||||
|
border: 1px solid var(--hd-border-1);
|
||||||
|
border-radius: var(--hd-radius-full);
|
||||||
|
transition:
|
||||||
|
color 0.15s,
|
||||||
|
border-color 0.15s,
|
||||||
|
background-color 0.15s,
|
||||||
|
transform 0.15s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hd-breadcrumb__personas a:hover {
|
||||||
|
color: var(--hd-accent);
|
||||||
|
border-color: var(--hd-accent-border);
|
||||||
|
background: var(--hd-accent-subtle);
|
||||||
|
transform: translateY(-1px);
|
||||||
|
}
|
||||||
|
|
||||||
a.card {
|
a.card {
|
||||||
background: var(--hd-bg-subtle);
|
background: var(--hd-bg-subtle);
|
||||||
transition: transform 250ms;
|
transition: transform 250ms;
|
||||||
|
|
@ -68,6 +290,7 @@ a.card:hover {
|
||||||
|
|
||||||
.text-hilight {
|
.text-hilight {
|
||||||
background-color: yellow;
|
background-color: yellow;
|
||||||
|
color: black !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#voxppl {
|
#voxppl {
|
||||||
|
|
@ -194,6 +417,10 @@ img {
|
||||||
|
|
||||||
footer {
|
footer {
|
||||||
border-top: 3px solid var(--hd-plum-400);
|
border-top: 3px solid var(--hd-plum-400);
|
||||||
|
/* Footer is always a dark band (all child text is hardcoded white),
|
||||||
|
so pin its colors instead of using the theme-reactive .bg-dark/.text-light. */
|
||||||
|
background-color: #212529;
|
||||||
|
color: #f8f9fa;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-tagline {
|
.footer-tagline {
|
||||||
|
|
@ -316,6 +543,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) {
|
@media (min-width: 768px) {
|
||||||
#community > div > div {
|
#community > div > div {
|
||||||
width: 50% !important;
|
width: 50% !important;
|
||||||
|
|
|
||||||
BIN
static/img/screenshots/checks-dashboard.webp
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
static/img/screenshots/domain-abstract-records.webp
Normal file
|
After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 250 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 25 KiB |
BIN
static/img/screenshots/home.webp
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
static/img/screenshots/providers-list.webp
Normal file
|
After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 141 KiB After Width: | Height: | Size: 61 KiB |