Initial commit
This commit is contained in:
commit
ff41d5ea95
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
public/
|
||||
resources/
|
87
config.toml
Normal file
87
config.toml
Normal file
@ -0,0 +1,87 @@
|
||||
title = "happyDNS"
|
||||
baseURL = "https://happydns.org/"
|
||||
|
||||
defaultContentLanguageInSubdir = true
|
||||
removePathAccents = true
|
||||
|
||||
[Author]
|
||||
name = "happyDNS team"
|
||||
framagit = "happyDNS/"
|
||||
|
||||
[languages]
|
||||
[languages.en]
|
||||
title = "happyDNS. Finally a simple interface for domain names."
|
||||
weight = 1
|
||||
|
||||
[languages.fr]
|
||||
title = "happyDNS. L'interface des noms de domaines."
|
||||
weight = 2
|
||||
[languages.fr.menu]
|
||||
[[languages.fr.menu.main]]
|
||||
identifier = "features"
|
||||
name = "Fonctionnalités"
|
||||
url = "/fr/#features"
|
||||
weight = 10
|
||||
|
||||
[[languages.fr.menu.main]]
|
||||
identifier = "downloads"
|
||||
name = "Téléchargements"
|
||||
url = "/fr/#downloads"
|
||||
weight = 20
|
||||
|
||||
# [[languages.fr.menu.main]]
|
||||
# identifier = "blog"
|
||||
# name = "Blog"
|
||||
# url = "https://blog.happydns.org/"
|
||||
# weight = 30
|
||||
|
||||
[languages.fr.params]
|
||||
[[languages.fr.params.carousel]]
|
||||
title = "domains-lists"
|
||||
description = "**Page d'accueil:** liste des domaines, de différents hébergeurs"
|
||||
image = "/img/screenshots/domains-list.png"
|
||||
|
||||
[[languages.fr.params.carousel]]
|
||||
title = "domain-records"
|
||||
description = "Les enregistrements d'une zone"
|
||||
image = "/img/screenshots/domain-records.png"
|
||||
|
||||
[params]
|
||||
newsletter = "newsletter@happydns.org"
|
||||
tryit = "/join"
|
||||
|
||||
[[params.carousel]]
|
||||
title = "domains-lists"
|
||||
description = "**Home page:** domains list on dedicated provider"
|
||||
image = "/img/screenshots/domains-list.png"
|
||||
|
||||
[[params.carousel]]
|
||||
title = "domain-records"
|
||||
description = "Resources record for a zone"
|
||||
image = "/img/screenshots/domain-records.png"
|
||||
|
||||
[menu]
|
||||
[[menu.main]]
|
||||
identifier = "features"
|
||||
name = "Features"
|
||||
url = "/en/#features"
|
||||
weight = 10
|
||||
|
||||
[[menu.main]]
|
||||
identifier = "downloads"
|
||||
name = "Downloads"
|
||||
url = "/en/#downloads"
|
||||
weight = 20
|
||||
|
||||
# [[menu.main]]
|
||||
# identifier = "blog"
|
||||
# name = "Blog"
|
||||
# url = "https://blog.happydns.org/"
|
||||
# weight = 30
|
||||
|
||||
[markup]
|
||||
[markup.goldmark]
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = true
|
||||
[outputs]
|
||||
home = [ "HTML", "RSS" ]
|
36
content/legal-notice.en.md
Normal file
36
content/legal-notice.en.md
Normal file
@ -0,0 +1,36 @@
|
||||
+++
|
||||
title = "Legal Notice"
|
||||
+++
|
||||
|
||||
|
||||
# Legal Notice
|
||||
|
||||
|
||||
**Editor:** Pierre-Olivier Mercier
|
||||
|
||||
|
||||
### Owner
|
||||
|
||||
De facto association "happyDNS"
|
||||
|
||||
<address style="margin-left: 2em; margin-top: -.5em">
|
||||
Association happyDNS<br>
|
||||
ABS Pierre-Olivier Mercier<br>
|
||||
40 avenue Raspail<br>
|
||||
94250 GENTILLY
|
||||
</address>
|
||||
|
||||
|
||||
### Hosting
|
||||
|
||||
This website is hosted by the association, autonomously, on its own infrastructures.
|
||||
|
||||
|
||||
## Personal Data
|
||||
|
||||
We are required to process personal data (such as your email address, used as
|
||||
an identifier, means of account retrieval or possibly the sending of our
|
||||
newsletter).
|
||||
|
||||
You can contact our data protection officer by e-mail at <code>dpo at
|
||||
happydns.org</code> or by mail to our headquarters address.
|
37
content/legal-notice.fr.md
Normal file
37
content/legal-notice.fr.md
Normal file
@ -0,0 +1,37 @@
|
||||
+++
|
||||
title = "Mentions légales"
|
||||
+++
|
||||
|
||||
|
||||
# Mentions légales
|
||||
|
||||
|
||||
**Directeur de publication :** Pierre-Olivier Mercier
|
||||
|
||||
|
||||
### À propos de l'association
|
||||
|
||||
Association de fait régie par la loi du 1er juillet 1901.
|
||||
|
||||
Siège social :
|
||||
|
||||
<address style="margin-left: 2em; margin-top: -.5em">
|
||||
Association happyDNS<br>
|
||||
ABS Pierre-Olivier Mercier<br>
|
||||
40 avenue Raspail<br>
|
||||
94250 GENTILLY
|
||||
</address>
|
||||
|
||||
### Hébergement
|
||||
|
||||
Ce site web est hébergé de manière autonome par l’association, sur ses propres infrastructures.
|
||||
|
||||
|
||||
## Données personnelles
|
||||
|
||||
Nous sommes amenés à traiter des données personnelles (telle que votre adresse
|
||||
électronique, utilisée comme identifiant, moyen de récupération de compte ou
|
||||
éventuellement l'envoi de notre newsletter).
|
||||
|
||||
Vous pouvez contacter notre délégué à la protection de données par courriel à
|
||||
<code>dpo at happydns.org</code> ou par courrier à l'adresse du siège.
|
167
data/social.toml
Normal file
167
data/social.toml
Normal file
@ -0,0 +1,167 @@
|
||||
[[social_icons]]
|
||||
id = "email"
|
||||
url = "mailto:%s"
|
||||
title = "Email me"
|
||||
icon = "fas fa-envelope"
|
||||
|
||||
[[social_icons]]
|
||||
id = "facebook"
|
||||
url = "https://www.facebook.com/%s"
|
||||
title = "Facebook"
|
||||
icon = "fab fa-facebook"
|
||||
|
||||
[[social_icons]]
|
||||
id = "github"
|
||||
url = "https://github.com/%s"
|
||||
title = "GitHub"
|
||||
icon = "fab fa-github"
|
||||
|
||||
[[social_icons]]
|
||||
id = "gitlab"
|
||||
url = "https://gitlab.com/%s"
|
||||
title = "GitLab"
|
||||
icon = "fab fa-gitlab"
|
||||
|
||||
[[social_icons]]
|
||||
id = "framagit"
|
||||
url = "https://framagit.org/%s"
|
||||
title = "Framagit"
|
||||
icon = "fab fa-gitlab"
|
||||
|
||||
[[social_icons]]
|
||||
id = "bitbucket"
|
||||
url = "https://bitbucket.org/%s"
|
||||
title = "Bitbucket"
|
||||
icon = "fab fa-bitbucket"
|
||||
|
||||
[[social_icons]]
|
||||
id = "twitter"
|
||||
url = "https://twitter.com/%s"
|
||||
title = "Twitter"
|
||||
icon = "fab fa-twitter"
|
||||
|
||||
[[social_icons]]
|
||||
id = "slack"
|
||||
url = "https://%s.slack.com/"
|
||||
title = "Slack"
|
||||
icon = "fab fa-slack"
|
||||
|
||||
[[social_icons]]
|
||||
id = "reddit"
|
||||
url = "https://reddit.com/u/%s"
|
||||
title = "Reddit"
|
||||
icon = "fab fa-reddit-alien"
|
||||
|
||||
[[social_icons]]
|
||||
id = "linkedin"
|
||||
url = "https://linkedin.com/in/%s"
|
||||
title = "LinkedIn"
|
||||
icon = "fab fa-linkedin"
|
||||
|
||||
[[social_icons]]
|
||||
id = "xing"
|
||||
url = "https://www.xing.com/profile/%s"
|
||||
title = "Xing"
|
||||
icon = "fab fa-xing"
|
||||
|
||||
[[social_icons]]
|
||||
id = "stackoverflow"
|
||||
url = "https://stackoverflow.com/%s"
|
||||
title = "StackOverflow"
|
||||
icon = "fab fa-stack-overflow"
|
||||
|
||||
[[social_icons]]
|
||||
id = "snapchat"
|
||||
url = "https://www.snapchat.com/add/%s"
|
||||
title = "Snapchat"
|
||||
icon = "fab fa-snapchat-ghost"
|
||||
|
||||
[[social_icons]]
|
||||
id = "instagram"
|
||||
url = "https://www.instagram.com/%s"
|
||||
title = "Instagram"
|
||||
icon = "fab fa-instagram"
|
||||
|
||||
[[social_icons]]
|
||||
id = "youtube"
|
||||
url = "https://www.youtube.com/%s"
|
||||
title = "Youtube"
|
||||
icon = "fab fa-youtube"
|
||||
|
||||
[[social_icons]]
|
||||
id = "soundcloud"
|
||||
url = "https://soundcloud.com/%s"
|
||||
title = "SoundCloud"
|
||||
icon = "fab fa-soundcloud"
|
||||
|
||||
[[social_icons]]
|
||||
id = "spotify"
|
||||
url = "https://open.spotify.com/user/%s"
|
||||
title = "Spotify"
|
||||
icon = "fab fa-spotify"
|
||||
|
||||
[[social_icons]]
|
||||
id = "bandcamp"
|
||||
url = "https://%s.bandcamp.com/"
|
||||
title = "Bandcamp"
|
||||
icon = "fab fa-bandcamp"
|
||||
|
||||
[[social_icons]]
|
||||
id = "itchio"
|
||||
url = "https://itch.io/profile/%s"
|
||||
title = "Itch.io"
|
||||
icon = "fas fa-gamepad"
|
||||
|
||||
[[social_icons]]
|
||||
id = "keybase"
|
||||
url = "https://keybase.io/%s"
|
||||
title = "Keybase"
|
||||
icon = "fab fa-keybase"
|
||||
|
||||
[[social_icons]]
|
||||
id = "vk"
|
||||
url = "https://vk.com/%s"
|
||||
title = "VK"
|
||||
icon = "fab fa-vk"
|
||||
|
||||
[[social_icons]]
|
||||
id = "paypal"
|
||||
url = "https://paypal.me/%s"
|
||||
title = "PayPal"
|
||||
icon = "fab fa-paypal"
|
||||
|
||||
[[social_icons]]
|
||||
id = "telegram"
|
||||
url = "https://telegram.me/%s"
|
||||
title = "Telegram"
|
||||
icon = "fab fa-telegram"
|
||||
|
||||
[[social_icons]]
|
||||
id = "500px"
|
||||
url = "https://500px.com/%s"
|
||||
title = "500px"
|
||||
icon = "fab fa-500px"
|
||||
|
||||
[[social_icons]]
|
||||
id = "codepen"
|
||||
url = "https://codepen.io/%s"
|
||||
title = "CodePen"
|
||||
icon = "fab fa-codepen"
|
||||
|
||||
[[social_icons]]
|
||||
id = "kaggle"
|
||||
url = "https://www.kaggle.com/%s"
|
||||
title = "kaggle"
|
||||
icon = "fab fa-kaggle"
|
||||
|
||||
[[social_icons]]
|
||||
id = "mastodon"
|
||||
url = "https://%s"
|
||||
title = "Mastodon"
|
||||
icon = "fab fa-mastodon"
|
||||
|
||||
[[social_icons]]
|
||||
id = "weibo"
|
||||
url = "https://weibo.com/%s"
|
||||
title = "Weibo"
|
||||
icon = "fab fa-weibo"
|
78
i18n/en.yaml
Normal file
78
i18n/en.yaml
Normal file
@ -0,0 +1,78 @@
|
||||
- id: slogan
|
||||
translation: "Finally a simple interface for domain names."
|
||||
|
||||
- id: lead
|
||||
translation: "is a modern open-source web application, that aims to simplify all your usages of domain names. Connecting a blog, a shop or doing advanced stuff become easy."
|
||||
|
||||
- id: tryit
|
||||
translation: "Try it online now"
|
||||
|
||||
- id: tryhappydns
|
||||
translation: "Try happyDNS now"
|
||||
|
||||
- id: downloadit
|
||||
translation: "Download now"
|
||||
|
||||
- id: home
|
||||
translation: "Home"
|
||||
|
||||
- id: legal-notice
|
||||
translation: "Legal notice"
|
||||
|
||||
- id: features-title
|
||||
translation: |
|
||||
Do you find <span class="text-hilight">hosting providers' interfaces</span> for domain name <span class="text-hilight">incomprehensible</span> or <span class="text-hilight">unusable</span>?
|
||||
|
||||
- id: features-lead
|
||||
translation: |
|
||||
Reconcile with your domain names, thanks to an interface designed for you.
|
||||
|
||||
- id: features-col1
|
||||
translation: |
|
||||
**Neophyte** friends, our **simple** interface will guide you in the configuration of your domain name, without going through the proper domain name terminology.
|
||||
|
||||
- id: features-col2
|
||||
translation: |
|
||||
Recognized **experts:** change your point of view on DNS, with an **ergonomic** interface in the age of time that will meet all your expectations.
|
||||
|
||||
- id: downloads-title
|
||||
translation: |
|
||||
Online demo and downloads
|
||||
|
||||
- id: downloads-text
|
||||
translation: |
|
||||
You can try happyDNS online directly [on our servers](/join).
|
||||
|
||||
There is no prebuilt binary currently (check back soon).
|
||||
|
||||
Our source code is freely available under the [CeCILL license](http://cecill.info/licences/Licence_CeCILL_V2.1-en.html) in our [git repository](https://git.happydns.org/), hosted by Framagit.
|
||||
|
||||
- id: community-chat
|
||||
translation: "Chat"
|
||||
- id: community-chat-text
|
||||
translation: |
|
||||
Join our IRC channel `#happydns` on freenode to share ideas or ask questions.
|
||||
|
||||
- id: community-bugs
|
||||
translation: "Bugs and Features"
|
||||
- id: community-bugs-text
|
||||
translation: |
|
||||
If you notice a problem or a missing feature, feel free to report it on the project's issues page.
|
||||
|
||||
- id: community-translation
|
||||
translation: "Translations"
|
||||
- id: community-translation-text
|
||||
translation: |
|
||||
We will need you help to translate happyDNS. Come back later, when we've set up the translation tool.
|
||||
|
||||
- id: community-code
|
||||
translation: "Code"
|
||||
- id: community-code-text
|
||||
translation: |
|
||||
We invite interested developers to contribute code. Check out [our repository](https://git.happydns.org/) on Framagit.
|
||||
|
||||
- id: community-contact
|
||||
translation: "contact"
|
||||
- id: community-contact-text
|
||||
translation: |
|
||||
You can contact our team at `contact at happydns.org` for any professional requests.
|
79
i18n/fr.yaml
Normal file
79
i18n/fr.yaml
Normal file
@ -0,0 +1,79 @@
|
||||
- id: slogan
|
||||
translation: "L'interface des noms de domaines."
|
||||
|
||||
- id: lead
|
||||
translation: "est une application web libre, moderne, qui veut vous simplifier l'usage des noms de domaines. Connecter un blog, une boutique ou effectuer des opérations avancées devient vraiment facile."
|
||||
|
||||
- id: tryit
|
||||
translation: "Essayer en ligne maintenant"
|
||||
|
||||
- id: tryhappydns
|
||||
translation: "Essayer happyDNS maintenant"
|
||||
|
||||
- id: downloadit
|
||||
translation: "Télécharger"
|
||||
|
||||
- id: home
|
||||
translation: "Accueil"
|
||||
|
||||
- id: legal-notice
|
||||
translation: "Mentions légales"
|
||||
|
||||
- id: features-title
|
||||
translation: |
|
||||
Vous trouvez les <span class="text-hilight">interfaces des hébergeurs</span> de noms de domaine <span class="text-hilight">incompréhensibles</span> ou <span class="text-hilight">inutilisables</span> ?
|
||||
|
||||
- id: features-lead
|
||||
translation: |
|
||||
Réconciliez-vous avec vos noms de domaine, grâce à une interface pensée pour vous.
|
||||
|
||||
- id: features-col1
|
||||
translation: |
|
||||
Amis **néophytes**, notre interface **simple** saura vous guider dans la configuration de votre nom de domaine, sans passer par la terminologie propre des noms de domaine.
|
||||
|
||||
- id: features-col2
|
||||
translation: |
|
||||
**Experts** chevronnés : changez votre point de vue sur le DNS, avec une interface **ergonomique** dans l’ère du temps, qui répondra à toutes vos attentes.
|
||||
|
||||
- id: downloads-title
|
||||
translation: |
|
||||
Démonstration en ligne et téléchargements
|
||||
|
||||
- id: downloads-text
|
||||
translation: |
|
||||
Vous pouvez essayer happyDNS en ligne, directement [sur nos serveurs](/join).
|
||||
|
||||
|
||||
Une version précompilée sera prochainement proposée au téléchargement, pour une utilisation locale.
|
||||
|
||||
Le code source de notre projet est libre ; il est disponible sous les termes de la [licence CeCILL](http://cecill.info/licences/Licence_CeCILL_V2.1-fr.html) dans notre [dépôt Git](https://git.happydns.org/), hébergé par Framagit.
|
||||
|
||||
- id: community-chat
|
||||
translation: "Chat"
|
||||
- id: community-chat-text
|
||||
translation: |
|
||||
Rejoignez notre canal IRC `#happydns` sur Freenode, pour partager des idées ou poser des questions.
|
||||
|
||||
- id: community-bugs
|
||||
translation: "Bugs et fonctionnalités"
|
||||
- id: community-bugs-text
|
||||
translation: |
|
||||
Si vous remarquez un problème ou une fonctionnalité manquante, n'hésitez pas à nous l'indiquer via le formulaire dédié de notre projet.
|
||||
|
||||
- id: community-translation
|
||||
translation: "Translations"
|
||||
- id: community-translation-text
|
||||
translation: |
|
||||
Nous aurons besoin de votre aide pour traduire happyDNS. Revenez dans quelques semaines, lorsque nous aurons mis en place l'outil de traduction.
|
||||
|
||||
- id: community-code
|
||||
translation: "Code"
|
||||
- id: community-code-text
|
||||
translation: |
|
||||
Si vous savez programmer, n'hésitez pas à contribuer, via notre [dépôt Git](https://git.happydns.org/) sur Framagit.
|
||||
|
||||
- id: community-contact
|
||||
translation: "contact"
|
||||
- id: community-contact-text
|
||||
translation: |
|
||||
Contactez notre équipe à `contact at happydns.org` pour toute demande de formation ou commerciale.
|
42
layouts/_default/single.html
Normal file
42
layouts/_default/single.html
Normal file
@ -0,0 +1,42 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ .Site.LanguageCode }}">
|
||||
|
||||
{{ partial "head.html" . }}
|
||||
|
||||
<body>
|
||||
|
||||
<div id="all">
|
||||
|
||||
{{ partial "nav.html" . }}
|
||||
|
||||
{{ partial "breadcrumbs.html" . }}
|
||||
|
||||
<div id="content" class="mt-5 mb-5">
|
||||
{{ if isset .Params "id" }}
|
||||
|
||||
{{ partial .Params.id . }}
|
||||
|
||||
{{ else }}
|
||||
|
||||
<div class="container">
|
||||
|
||||
<div>
|
||||
{{ .Content }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- /.container -->
|
||||
|
||||
{{ end }}
|
||||
</div>
|
||||
<!-- /#content -->
|
||||
|
||||
</div>
|
||||
<!-- /#all -->
|
||||
|
||||
{{ partial "footer.html" . }}
|
||||
|
||||
{{ partial "scripts.html" . }}
|
||||
|
||||
</body>
|
||||
</html>
|
32
layouts/index.html
Normal file
32
layouts/index.html
Normal file
@ -0,0 +1,32 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ .Site.LanguageCode }}" style="background-color: #3A0B4D">
|
||||
|
||||
{{ partial "head.html" . }}
|
||||
|
||||
<body>
|
||||
|
||||
<div id="all">
|
||||
|
||||
{{ partial "top.html" . }}
|
||||
|
||||
{{ partial "nav.html" . }}
|
||||
|
||||
{{ partial "jumbo.html" . }}
|
||||
|
||||
{{ partial "carousel.html" . }}
|
||||
|
||||
{{ partial "features.html" . }}
|
||||
|
||||
{{ partial "downloads.html" . }}
|
||||
|
||||
{{ partial "community.html" . }}
|
||||
|
||||
</div>
|
||||
<!-- /#all -->
|
||||
|
||||
{{ partial "footer.html" . }}
|
||||
|
||||
{{ partial "scripts.html" . }}
|
||||
|
||||
</body>
|
||||
</html>
|
6
layouts/partials/breadcrumbs.html
Normal file
6
layouts/partials/breadcrumbs.html
Normal file
@ -0,0 +1,6 @@
|
||||
<nav aria-label="breadcrumb" style="background-color: #e9ecef">
|
||||
<ol class="breadcrumb container">
|
||||
<li class="breadcrumb-item"><a href="../">{{ i18n "home" }}</a></li>
|
||||
<li class="breadcrumb-item active" aria-current="page">{{ .Title }}</li>
|
||||
</ol>
|
||||
</nav>
|
15
layouts/partials/carousel.html
Normal file
15
layouts/partials/carousel.html
Normal file
@ -0,0 +1,15 @@
|
||||
{{ if isset .Site.Params "carousel" }}
|
||||
{{ if gt (len .Site.Params.carousel) 0 }}
|
||||
<div class="anchor" id="features"></div>
|
||||
<div class="carousel text-light pt-5 pb-3 d-flex flex-row justify-content-around">
|
||||
{{ range sort .Site.Params.carousel "weight" }}
|
||||
<figure class="">
|
||||
<a href="{{ .image }}">
|
||||
<img class="rounded img-thumbnail" src="{{ .image }}" alt="{{ .title }}" style="max-height: 300px;">
|
||||
</a>
|
||||
<figcaption class="mt-2 text-center">{{ .description | markdownify }}</figcaption>
|
||||
</figure>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
62
layouts/partials/community.html
Normal file
62
layouts/partials/community.html
Normal file
@ -0,0 +1,62 @@
|
||||
<div class="container d-flex flex-wrap justify-content-around mb-5" id="community" style="gap: 2em 0;">
|
||||
<div style="width: 28%" class="text-center">
|
||||
<h4>
|
||||
<span class="fa-stack fa-lg" style="color: #20a7c9">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fas fa-comments fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
{{ i18n "community-chat" }}
|
||||
</h4>
|
||||
<p>
|
||||
{{ i18n "community-chat-text" | markdownify }}
|
||||
</p>
|
||||
</div>
|
||||
<div style="width: 28%" class="text-center">
|
||||
<h4>
|
||||
<span class="fa-stack fa-lg" style="color: #9720c9">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fas fa-bug fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
{{ i18n "community-bugs" }}
|
||||
</h4>
|
||||
<p>
|
||||
{{ i18n "community-bugs-text" | markdownify }}
|
||||
</p>
|
||||
</div>
|
||||
<div style="width: 28%" class="text-center">
|
||||
<h4>
|
||||
<span class="fa-stack fa-lg" style="color: #c92052">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fas fa-language fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
{{ i18n "community-translation" }}
|
||||
</h4>
|
||||
<p>
|
||||
{{ i18n "community-translation-text" | markdownify }}
|
||||
</p>
|
||||
</div>
|
||||
<div style="width: 28%" class="text-center">
|
||||
<h4>
|
||||
<span class="fa-stack fa-lg" style="color: #c99720">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fas fa-code fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
{{ i18n "community-code" }}
|
||||
</h4>
|
||||
<p>
|
||||
{{ i18n "community-code-text" | markdownify }}
|
||||
</p>
|
||||
</div>
|
||||
<div style="width: 28%" class="text-center">
|
||||
<h4>
|
||||
<span class="fa-stack fa-lg" style="color: #20c943">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fas fa-paper-plane fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
{{ i18n "community-contact" }}
|
||||
</h4>
|
||||
<p>
|
||||
{{ i18n "community-contact-text" | markdownify }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
15
layouts/partials/downloads.html
Normal file
15
layouts/partials/downloads.html
Normal file
@ -0,0 +1,15 @@
|
||||
<div class="anchor" id="downloads"></div>
|
||||
<div class="jumbotron">
|
||||
<div class="container">
|
||||
<h3 class="font-weight-bolder">
|
||||
{{ i18n "downloads-title" }}
|
||||
</h3>
|
||||
<div class="row">
|
||||
<div class="col-md-10 offset-md-1">
|
||||
<p>
|
||||
{{ i18n "downloads-text" | markdownify }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
38
layouts/partials/features.html
Normal file
38
layouts/partials/features.html
Normal file
@ -0,0 +1,38 @@
|
||||
<div class="container">
|
||||
<div class="row mt-3">
|
||||
<h3 class="text-center font-weight-bolder mt-5 mb-5 offset-md-2 col-md-8" style="line-height: 1.5em;">
|
||||
{{ i18n "features-title" | safeHTML }}
|
||||
</h3>
|
||||
</div>
|
||||
<div class="row mt-4 mb-5 text-justify">
|
||||
<div class="col-md-4 pt-5">
|
||||
<p class="font-weight-bold" style="font-size: 1.15rem;">
|
||||
{{ i18n "features-lead" }}
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-4">
|
||||
<div class="text-center mb-2">
|
||||
<hr style="margin-top: 21px; margin-bottom: -21px; border-color: #9720c955;">
|
||||
<span class="fa-stack fa-lg" style="color: #4b1064">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fas fa-gamepad fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</div>
|
||||
<p>
|
||||
{{ i18n "features-col1" | markdownify }}
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-sm-6 col-md-4">
|
||||
<div class="text-center mb-2">
|
||||
<hr style="margin-top: 21px; margin-bottom: -21px; border-color: #9720c955;">
|
||||
<span class="fa-stack fa-lg" style="color: #4b1064">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fas fa-rocket fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</div>
|
||||
<p>
|
||||
{{ i18n "features-col2" | markdownify }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
14
layouts/partials/footer.html
Normal file
14
layouts/partials/footer.html
Normal file
@ -0,0 +1,14 @@
|
||||
<footer class="pt-3 pb-5 bg-dark text-light">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md">
|
||||
© 2019-2020 <span style="font-family: 'Fortheenas01';font-weight:bold;">happy<span style="font-family: 'Fortheenas01 Bold';margin-left:.1em;">DNS</span></span>
|
||||
</div>
|
||||
<div class="col-md">
|
||||
<a href="/{{ .Site.Language.Lang }}/legal-notice/" class="text-secondary">
|
||||
{{ i18n "legal-notice" }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
49
layouts/partials/head.html
Normal file
49
layouts/partials/head.html
Normal file
@ -0,0 +1,49 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<meta name="robots" content="all,follow">
|
||||
<meta name="googlebot" content="index,follow,snippet,archive">
|
||||
<title>{{ .Title }}</title>
|
||||
<meta name="author" content="{{ .Site.Author.name }}" />
|
||||
{{ .Hugo.Generator }}
|
||||
|
||||
{{ if .Keywords }}
|
||||
<meta name="keywords" content="{{ delimit .Keywords ", " }}">
|
||||
{{ else if .Site.Params.DefaultKeywords }}
|
||||
<meta name="keywords" content="{{ delimit .Site.Params.DefaultKeywords ", " }}">
|
||||
{{ end }}
|
||||
|
||||
{{ if .Description }}
|
||||
<meta name="description" content="{{ .Description }}">
|
||||
{{ else if .Site.Params.DefaultDescription }}
|
||||
<meta name="description" content="{{ .Site.Params.DefaultDescription }}">
|
||||
{{ end }}
|
||||
|
||||
<link rel="stylesheet" href="/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" crossorigin="anonymous">
|
||||
|
||||
<!-- Theme stylesheet, if possible do not edit this stylesheet -->
|
||||
{{ if and (isset .Site.Params "style") .Site.Params.style }}
|
||||
<link href="{{ .Site.BaseURL }}css/style.{{ .Site.Params.style }}.css" rel="stylesheet" id="theme-stylesheet">
|
||||
{{ else }}
|
||||
<link href="{{ .Site.BaseURL }}css/style.default.css" rel="stylesheet" id="theme-stylesheet">
|
||||
{{ end }}
|
||||
|
||||
<!-- Custom stylesheet - for your changes -->
|
||||
<link href="{{ .Site.BaseURL }}css/custom.css" rel="stylesheet">
|
||||
|
||||
<!-- Responsivity for older IE -->
|
||||
{{ `
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
` | safeHTML }}
|
||||
|
||||
<!-- Favicon and apple touch icons-->
|
||||
<link rel="shortcut icon" href="{{ .Site.BaseURL }}img/favicon.ico" type="image/x-icon" />
|
||||
<link rel="apple-touch-icon" href="{{ .Site.BaseURL }}img/apple-touch-icon.png" />
|
||||
|
||||
<link rel="alternate" href="{{ "/index.xml" | absURL }}" type="application/rss+xml" title="{{ .Site.Title }}">
|
||||
</head>
|
18
layouts/partials/jumbo.html
Normal file
18
layouts/partials/jumbo.html
Normal file
@ -0,0 +1,18 @@
|
||||
<div class="jumbotron bg-light mt-n1 mb-0">
|
||||
<div class="container">
|
||||
<h1 class="display-3 text-center">
|
||||
<span style="font-family: 'Fortheenas01';font-weight:bold;">happy</span><span style="font-family: 'Fortheenas01 Bold';margin-left:.1em;">DNS</span>
|
||||
</h1>
|
||||
<h2 class="display-5 text-center text-muted">
|
||||
{{ i18n "slogan" }}
|
||||
</h2>
|
||||
<p class="mt-4 lead">
|
||||
<span style="font-family: 'Fortheenas01';font-weight:bold;">happy</span><span style="font-family: 'Fortheenas01 Bold';margin-left:.1em;">DNS</span>
|
||||
{{ i18n "lead" | markdownify }}
|
||||
</p>
|
||||
<p>
|
||||
<a class="btn btn-primary mt-2" href="/join">{{ i18n "tryit" }} »</a>
|
||||
<a class="btn btn-outline-secondary mt-2" href="#downloads">{{ i18n "downloadit" }} »</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
58
layouts/partials/nav.html
Normal file
58
layouts/partials/nav.html
Normal file
@ -0,0 +1,58 @@
|
||||
<nav class="navbar navbar-expand-md sticky-top navbar-light bg-light">
|
||||
<div class="container">
|
||||
<a class="h1 navbar-brand mb-0" href="/" style="font-family: 'Fortheenas01';font-weight:bold;">
|
||||
happy<span style="font-family: 'Fortheenas01 Bold';margin-left:.1em;">DNS</span>
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse justify-content-between" id="navbarCollapse">
|
||||
<ul class="navbar-nav">
|
||||
{{ range .Site.Menus.main }}
|
||||
{{ if .HasChildren }}
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
{{ .Name }}
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||
{{ range .Children }}
|
||||
<a href="{{ .URL }}" class="dropdown-item">{{ .Name }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ else }}
|
||||
<li class="nav-item">
|
||||
<a href="{{ .URL }}" class="nav-link">{{ .Name }}</a>
|
||||
{{ end }}
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
<div class="nav-item nav-ext-links">
|
||||
{{ range .Site.Data.social.social_icons }}
|
||||
{{- if isset $.Site.Author .id }}
|
||||
<a class="nav-icon-link" href="{{ printf .url (index $.Site.Author .id) }}" title="{{ .title }}"><span class="fa-stack fa-lg"><i class="fa fa-circle fa-stack-2x"></i><i class="fa {{ .icon }} fa-stack-1x fa-inverse"></i></span></a>
|
||||
{{- end -}}
|
||||
{{ end }}
|
||||
{{ if .Site.Params.rss }}
|
||||
{{ if .RSSLink }}
|
||||
<a href="{{ .RSSLink }}" title="RSS" class="nav-icon-link">
|
||||
{{ else }}
|
||||
<a href="{{ .Site.RSSLink }}" title="RSS" class="nav-icon-link">
|
||||
{{ end }}
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-rss fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ if .Site.Params.tryit }}
|
||||
<a href="{{ .Site.Params.tryit }}" title="{{ i18n "tryhappydns" }}" class="nav-icon-link">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-arrow-right fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
2
layouts/partials/scripts.html
Normal file
2
layouts/partials/scripts.html
Normal file
@ -0,0 +1,2 @@
|
||||
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
|
18
layouts/partials/top.html
Normal file
18
layouts/partials/top.html
Normal file
@ -0,0 +1,18 @@
|
||||
{{ if .Site.Params.topbar.enable }}
|
||||
<div id="top">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-xs-5">
|
||||
{{ .Site.Params.topbar.text | safeHTML }}
|
||||
</div>
|
||||
<div class="col-xs-7">
|
||||
<div class="social">
|
||||
{{ range .Site.Menus.topbar.ByWeight }}
|
||||
<a href="{{ .URL }}" target="_blank" style="opacity: 1;">{{ .Pre }}</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
1
static/css/bootstrap.min.css
vendored
Normal file
1
static/css/bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
50
static/css/custom.css
Normal file
50
static/css/custom.css
Normal file
@ -0,0 +1,50 @@
|
||||
@font-face {
|
||||
font-family: 'Montserrat';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Montserrat Regular'), local('Montserrat-Regular'), url(/fonts/Montserrat.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Fortheenas01';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Fortheenas 01'), local('Fortheenas01'), local('Fortheenas_01'), url(/fonts/Fortheenas_01.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Fortheenas01 Bold';
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
src: local('Fortheenas 01 Bold'), local('Fortheenas01 Bold'), local('Fortheenas_01 Bold'), url('/fonts/Fortheenas_01 Bold.woff2') format('woff2');
|
||||
unicode-range: U+0000-00FF;
|
||||
}
|
||||
|
||||
html {
|
||||
background-color: #343a40;
|
||||
}
|
||||
body {
|
||||
font-family: Montserrat,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji,sans
|
||||
}
|
||||
nav.navbar {
|
||||
box-shadow: 0 1px 3px 0 #9720c944;
|
||||
}
|
||||
|
||||
.anchor {
|
||||
margin-top: -60px;
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
.carousel {
|
||||
background-color: #300940;
|
||||
}
|
||||
|
||||
.text-hilight {
|
||||
background-color: yellow;
|
||||
}
|
||||
|
||||
footer {
|
||||
border-top: 3px solid #9720c9;
|
||||
box-shadow: 0 -7px 12px 0 #344a4055;
|
||||
z-index: 2
|
||||
}
|
BIN
static/fonts/Fortheenas_01 Bold.woff2
Normal file
BIN
static/fonts/Fortheenas_01 Bold.woff2
Normal file
Binary file not shown.
BIN
static/fonts/Fortheenas_01.woff2
Normal file
BIN
static/fonts/Fortheenas_01.woff2
Normal file
Binary file not shown.
BIN
static/fonts/Montserrat.woff2
Normal file
BIN
static/fonts/Montserrat.woff2
Normal file
Binary file not shown.
BIN
static/img/screenshots/domain-records.png
Normal file
BIN
static/img/screenshots/domain-records.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 171 KiB |
BIN
static/img/screenshots/domains-list.png
Normal file
BIN
static/img/screenshots/domains-list.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 54 KiB |
2
static/robots.txt
Normal file
2
static/robots.txt
Normal file
@ -0,0 +1,2 @@
|
||||
User-agent: *
|
||||
Disallow:
|
Loading…
Reference in New Issue
Block a user