diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index 2bd24bc..0000000 --- a/.drone.yml +++ /dev/null @@ -1,73 +0,0 @@ ---- -# see https://docs.drone.io/pipeline/configuration/ -kind: pipeline -type: docker -name: build - -steps: - - name: restore-cache - image: meltwater/drone-cache:v1.1.0 - environment: - AWS_ACCESS_KEY_ID: - from_secret: cache_aws_access_key_id - AWS_SECRET_ACCESS_KEY: - from_secret: cache_aws_secret_access_key - pull: true - settings: - restore: true - bucket: drone-cache - region: garage - mount: - - 'node_modules' - path_style: true - endpoint: https://garage.deuxfleurs.fr - - - name: build - # cf https://hub.docker.com/_/node?tab=description&page=1&ordering=last_updated - image: node:14-buster - commands: - - npm install - - node render.js - - - name: upload - image: plugins/s3 - settings: - bucket: deuxfleurs.fr - access_key: - from_secret: aws_access_key_id - secret_key: - from_secret: aws_secret_access_key - source: static/**/* - strip_prefix: static/ - target: / - path_style: true - endpoint: https://garage.deuxfleurs.fr - region: garage - when: - branch: - - main - event: - exclude: - - pull_request - - - name: rebuild-cache - image: meltwater/drone-cache:v1.1.0 - environment: - AWS_ACCESS_KEY_ID: - from_secret: cache_aws_access_key_id - AWS_SECRET_ACCESS_KEY: - from_secret: cache_aws_secret_access_key - pull: true - settings: - rebuild: true - bucket: drone-cache - region: garage - mount: - - 'node_modules' - path_style: true - endpoint: https://garage.deuxfleurs.fr ---- -kind: signature -hmac: f1fcc439a2180d4e98224dec1cd2dc10691b58161bfee7739ae700e84f04c905 - -... diff --git a/DEPLOY.md b/DEPLOY.md deleted file mode 100644 index 808f834..0000000 --- a/DEPLOY.md +++ /dev/null @@ -1,18 +0,0 @@ -## À réaliser au premier clonage du dépôt - -Commencer par créer un fichier `.awsclirc` avec cette structure : - -``` -export AWS_ACCESS_KEY_ID='xxxx' -export AWS_SECRET_ACCESS_KEY='xxxx' -export AWS_DEFAULT_REGION='garage' -alias awsdf="aws --endpoint-url https://garage.deuxfleurs.fr" -``` - -Installer [l'outil en ligne de commande de AWS version 2](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) qui fournit la commande `aws`. - -Enfin, déployer en exécutant : - -``` -./deploy -``` diff --git a/README.md b/README.md index 72596c7..00d7bdd 100644 --- a/README.md +++ b/README.md @@ -1,64 +1 @@ -# site - -[![Build Status](https://drone.deuxfleurs.fr/api/badges/Deuxfleurs/site/status.svg?ref=refs/heads/main)](https://drone.deuxfleurs.fr/Deuxfleurs/site) - -Ce dépôt git contient les sources pour le site [deuxfleurs.fr](https://deuxfleurs.fr/). -C'est ici que vous pourrez apporter des modifications au site. - -## Comment ajouter du contenu ? - -Prérequis : - - Un compte sur cette instance gitea. - - Le logiciel git d'installé. [téléchager](https://git-scm.com/downloads). - -Pour commencer, assurez-vous d'être connecté. -Ensuite cliquez sur le bouton "Bifurcation" en haut à droite (*fork* en anglais). -Finalement, vous pourrez cloner votre dépôt en local : - -``` -git clone https://git.deuxfleurs.fr//site.git -``` - -Pour ajouter du contenu, vous pouvez tout simplement ajouter un fichier dans le dossier `src`. -Par exemple, le fichier `src/Association/Statuts.md` se retrouve à l'adresse `https://deuxfleurs.fr/Association/Statuts.html`. - -Deux formats de fichiers différents sont supportés pour l'instant : - - - `.md` pour Markdown. [documentation](https://fr.wikipedia.org/wiki/Markdown). Rapide à apprendre, il est très pratique pour rajouter du contenu sans se poser la question de l'apparence. - - `.pug` pour Pug. [documentation](https://pugjs.org). PugJS est une syntaxe différente pour représenter du HTML. Elle offre donc toute la souplesse de ce dernier et s'adapte plus à des mises en page complexe. - -Si vous ne savez pas par où commencer, choisissez markdown ! -N'hésitez pas à vous inspirer des fichiers existants. - -Une fois vos modifications terminées, vous pouvez commit et push : - -``` -git add src/Association/MonFichier.md -git commit -a -git push -``` - -Ensuite, vous pouvez créer une demande d'ajout (*pull request* ou *merge request* en anglais) depuis cette adresse (ou en cliquant sur l'onglet éponyme) : https://git.deuxfleurs.fr/Deuxfleurs/site/pulls - -## Comment prévisualiser mes modifications ? - -Prérequis : - - nodejs et npm d'installé. [télécharger](https://nodejs.org/en/download/) - -Vous pourriez vouloir vérifier que vos modifications rendent bien avant de faire votre demande d'ajout. -Pour cela, nous utilisons un script de notre cru nommé `render.js`. Il convertit le dossier `src/` vers un site web contenu dans le dossier `static/` et peut, optionnellement, servir de serveur web. - -La façon la plus simple de prévisualiser vos modifications est donc de : - -```bash -npm install # installer les dépendances -LISTEN=3000 node render.js # effectuer le rendu puis démarrer un serveur web sur le port 3000 -``` - -Votre aperçu est alors disponible à cette URL : http://127.0.0.1:3000 - -À chaque modification, vous pouvez arrêter la dernière commande (CTRL+C) et la relancer pour forcer le rendu. - -## Comment le site est mis à jour depuis ce dépôt ? - -*Nous sommes actuellement dans une phase de transition sur ce point. Veuillez contacter un·e des maintainers. Si vous êtes maintainer ou curieux·se, vous pouvez vous réferrer au fichier DEPLOY.md* +WIP diff --git a/deploy b/deploy deleted file mode 100755 index da23b39..0000000 --- a/deploy +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -shopt -s expand_aliases -source .awsclirc -npm install -node render.js -awsdf s3 sync --size-only static s3://deuxfleurs.fr diff --git a/img/deuxfleurs-common-ratio.jpg b/img/deuxfleurs-common-ratio.jpg new file mode 100644 index 0000000..485ec8b Binary files /dev/null and b/img/deuxfleurs-common-ratio.jpg differ diff --git a/img/deuxfleurs-rect.jpg b/img/deuxfleurs-rect.jpg new file mode 100644 index 0000000..e515e9f Binary files /dev/null and b/img/deuxfleurs-rect.jpg differ diff --git a/img/deuxfleurs-square.jpg b/img/deuxfleurs-square.jpg new file mode 100644 index 0000000..77e26f8 Binary files /dev/null and b/img/deuxfleurs-square.jpg differ diff --git a/img/favicon.ico b/img/favicon.ico new file mode 100644 index 0000000..0d1103c Binary files /dev/null and b/img/favicon.ico differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..0f55fb2 --- /dev/null +++ b/index.html @@ -0,0 +1,1603 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deuxfleurs : fabriquons un internet convivial + + + + + + + + + + +
+
+

💮💮 deuxfleurs

+
+ +

Fabriquons un internet convivial ⤵

+
+

💮💮 deuxfleurs

+

Avec nos propres infrastructures

+ + +

Nous fournissons des services numériques garantis "sans datacenter". À la place, nous utilisons moins d'une dizaine de vieux ordinateurs reconditionnés à nos domiciles qui peuvent fournir des services numériques à plusieurs dizaines de milliers de personnes. Actuellement ces ordinateurs sont situés à Lyon, Orsay, Lille et Bruxelles. Nous avons également des machines à Suresnes pour les sauvegardes. En savoir plus.

Cette infrastructure atypique nous mène à développer de nouveaux logiciels libres. Si vous êtes dans la technique, vous pourriez être intéressé·e par Garage, Bottin, Tricot, Diplonat et nos autres projets.

+

Avec nos services sobres

+
+ +
+
+ + + + + + + + + + + + + + + + + + +
+
+

Remplacez WhatsApp, Slack, Gmail, Zoom ou encore Google Drive par des outils Deuxfleurs. Nous proposons des alternatives sobres et non-marchandes à ces services, pour que vous restiez en contact avec votre entourage, votre association ou votre collectif.

+

Envie de faire entendre votre voix sur Internet ? Nous mettons à disposition plusieurs outils de publication sur le web allant de la plateforme de blog partagée à la publication de sites web en autonomie.

+

Prenez contact avec nous, nous vous aiderons à identifier les outils dont vous avez besoin et nous vous accompagnerons dans votre transition. ⤵

+
+

Avec des valeurs fortes

+
+ Deux personnages qui regardent et s'avancent vers une maison cabane perchée dans un arbre, illustrant notre envie d'un internet plus éthique. +
+
+

La coopération - eg. promouvoir l'intéropérabilité, les communs, le libre, et les formats de données ouverts

+

L'autonomie - eg. gérer nos propres moyens de communications, prendre nos propres décisions

+

La solidarité - eg. partager le savoir, partager les ressources informatiques, s'entraider pour la gestion des services

+

La liberté - eg. permettre à toutes et tous de s'exprimer, respecter la vie privée

+

Suivez notre actualité, réflexions et analyses sur notre blog Plume

+
+

Faisons connaissance

+
+

L'accès à nos services est à prix libre. Nous estimons leur coût à 15€/an/compte pour leur maintien en fonctionnement et recommandons le double pour permettre à l'association de se développer. Il est conditionné par les ressources disponibles, à la fois matérielles et humaines.

+

Pour accéder à nos services ou simplement discuter avec nous, écrivez à coucou[@]deuxfleurs.fr, rejoignez-nous sur le salon Matrix #deuxfleurs:deuxfleurs.fr ou rencontrez-nous à :

+
    + + + + + + + + + + + + + + + + + + + + + +
  • Réunion mensuelle "au coin du feu" en ligne, le 5 septembre à 19h.
    Un fois par mois nous organisons une réunion en ligne informelle. C'est le bon moment pour venir faire un coucou si vous voulez parler à des gens de vive voix numérique.
  • +
  • Soirée affaire du «8 décembre» à la bourse du travail à Paris, le 25 septembre à 19h00.
    Soirée de discussion autour de la criminalisation du chiffrement à l’œuvre dans l’affaire du «8 décembre», en présence de la Quadrature du Net, N0thing2Hide, le SNJ, et les avocat·es concernés. Vous pourrez y trouver Vincent.
  • +
  • Permanence associative autour du Libre au Café Citoyen à Lille, le 26 septembre à 20h00.
    La permanence associative autour du Libre est une manifestation conviviale, ouverte à toutes et tous, organisée le dernier mardi de chaque mois par les associations Chtinux, Raoull et Deuxfleurs, avec l'amicale participation de Mycélium, CLX et Cliss XXI. Vous pourrez y croiser Adrien.
  • +
  • Quadrapero au Garage de la Quadrature de Net, le 29 septembre à 19h00.
    Apéritif convivial pour discuter des divers enjeux en cours autour des droits et libertés numériques, en présence de membres de la Quadrature du Net et de bien autres intéressés. Vous y verrez Vincent.
  • +
  • Grand RDV Salle Irène Joliot-Curie à Vénissieux, le 30 septembre à 9h00.
    Nous y tiendrons un stand Deuxfleurs sur le "numérique durable" où nous parlerons d'obsolescence dans le numérique et des solutions qu'on explore. Vous y verrez Quentin et Léa.
  • + + + +
  • Réunion mensuelle "au coin du feu" en ligne, le 3 octobre à 19h.
    Un fois par mois nous organisons une réunion en ligne informelle. C'est le bon moment pour venir faire un coucou si vous voulez parler à des gens de vive voix numérique.
  • +
  • Assemblée pour les CHATONS à Paris VIII, le 14 octobre à 9h.
    (Réservé en priorité aux CHATONS) Nous serons à Paris pour discuter de l'avenir du collectif le temps d'une journée.
  • +
  • Permanence associative autour du Libre au Café Citoyen à Lille, le 31 octobre à 20h00.
    La permanence associative autour du Libre est une manifestation conviviale, ouverte à toutes et tous, organisée le dernier mardi de chaque mois, et regroupant les collectifs Chtinux, Raoull, Deuxfleurs, Mycélium, CLX et Cliss XXI.
  • + +
+ +
+
+ + + + + + + + +
+
+ + +
+
+ + + + diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 517ebae..0000000 --- a/package-lock.json +++ /dev/null @@ -1,909 +0,0 @@ -{ - "name": "site", - "version": "1.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "site", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "clean-css": "^5.1.2", - "jstransformer-markdown-it": "^2.1.0", - "marked": "^0.8.2", - "pug": "^3.0.2", - "source-map": "^0.7.3", - "uglify-js": "^3.13.3" - }, - "devDependencies": {} - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" - }, - "node_modules/@babel/parser": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.15.tgz", - "integrity": "sha512-b9COtcAlVEQljy/9fbcMHpG+UIW9ReF+gpaxDHTlZd0c6/UU9ng8zdySAW9sRTzpvcdCHn6bUcbuYUgGzLAWVQ==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "node_modules/assert-never": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", - "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" - }, - "node_modules/babel-walk": { - "version": "3.0.0-canary-5", - "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", - "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", - "dependencies": { - "@babel/types": "^7.9.6" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/character-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", - "dependencies": { - "is-regex": "^1.0.3" - } - }, - "node_modules/clean-css": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.1.2.tgz", - "integrity": "sha512-QcaGg9OuMo+0Ds933yLOY+gHPWbxhxqF0HDexmToPf8pczvmvZGYzd+QqWp9/mkucAOKViI+dSFOqoZIvXbeBw==", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/constantinople": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", - "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", - "dependencies": { - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.1" - } - }, - "node_modules/doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" - }, - "node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-expression": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", - "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", - "dependencies": { - "acorn": "^7.1.1", - "object-assign": "^4.1.1" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" - }, - "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/js-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" - }, - "node_modules/jstransformer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", - "dependencies": { - "is-promise": "^2.0.0", - "promise": "^7.0.1" - } - }, - "node_modules/jstransformer-markdown-it": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/jstransformer-markdown-it/-/jstransformer-markdown-it-2.1.0.tgz", - "integrity": "sha1-aewwzkUYvtWZezjwJ2SOjChekvc=", - "dependencies": { - "markdown-it": "^8.0.0" - }, - "engines": { - "node": ">=7" - } - }, - "node_modules/linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/markdown-it": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", - "dependencies": { - "argparse": "^1.0.7", - "entities": "~1.1.1", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/marked": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz", - "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==", - "bin": { - "marked": "bin/marked" - }, - "engines": { - "node": ">= 8.16.2" - } - }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dependencies": { - "asap": "~2.0.3" - } - }, - "node_modules/pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", - "dependencies": { - "pug-code-gen": "^3.0.2", - "pug-filters": "^4.0.0", - "pug-lexer": "^5.0.1", - "pug-linker": "^4.0.0", - "pug-load": "^3.0.0", - "pug-parser": "^6.0.0", - "pug-runtime": "^3.0.1", - "pug-strip-comments": "^2.0.0" - } - }, - "node_modules/pug-attrs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", - "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", - "dependencies": { - "constantinople": "^4.0.1", - "js-stringify": "^1.0.2", - "pug-runtime": "^3.0.0" - } - }, - "node_modules/pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", - "dependencies": { - "constantinople": "^4.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.2", - "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", - "void-elements": "^3.1.0", - "with": "^7.0.0" - } - }, - "node_modules/pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" - }, - "node_modules/pug-filters": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", - "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", - "dependencies": { - "constantinople": "^4.0.1", - "jstransformer": "1.0.0", - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0", - "resolve": "^1.15.1" - } - }, - "node_modules/pug-lexer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", - "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", - "dependencies": { - "character-parser": "^2.2.0", - "is-expression": "^4.0.0", - "pug-error": "^2.0.0" - } - }, - "node_modules/pug-linker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", - "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", - "dependencies": { - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0" - } - }, - "node_modules/pug-load": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", - "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", - "dependencies": { - "object-assign": "^4.1.1", - "pug-walk": "^2.0.0" - } - }, - "node_modules/pug-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", - "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", - "dependencies": { - "pug-error": "^2.0.0", - "token-stream": "1.0.0" - } - }, - "node_modules/pug-runtime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", - "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==" - }, - "node_modules/pug-strip-comments": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", - "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", - "dependencies": { - "pug-error": "^2.0.0" - } - }, - "node_modules/pug-walk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", - "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "engines": { - "node": ">=4" - } - }, - "node_modules/token-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", - "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=" - }, - "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" - }, - "node_modules/uglify-js": { - "version": "3.13.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.3.tgz", - "integrity": "sha512-otIc7O9LyxpUcQoXzj2hL4LPWKklO6LJWoJUzNa8A17Xgi4fOeDC8FBDOLHnC/Slo1CQgsZMcM6as0M76BZaig==", - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/void-elements": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/with": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", - "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", - "dependencies": { - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "assert-never": "^1.2.1", - "babel-walk": "3.0.0-canary-5" - }, - "engines": { - "node": ">= 10.0.0" - } - } - }, - "dependencies": { - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" - }, - "@babel/parser": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.15.tgz", - "integrity": "sha512-b9COtcAlVEQljy/9fbcMHpG+UIW9ReF+gpaxDHTlZd0c6/UU9ng8zdySAW9sRTzpvcdCHn6bUcbuYUgGzLAWVQ==" - }, - "@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "assert-never": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz", - "integrity": "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==" - }, - "babel-walk": { - "version": "3.0.0-canary-5", - "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", - "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", - "requires": { - "@babel/types": "^7.9.6" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "character-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", - "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", - "requires": { - "is-regex": "^1.0.3" - } - }, - "clean-css": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.1.2.tgz", - "integrity": "sha512-QcaGg9OuMo+0Ds933yLOY+gHPWbxhxqF0HDexmToPf8pczvmvZGYzd+QqWp9/mkucAOKViI+dSFOqoZIvXbeBw==", - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "constantinople": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", - "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", - "requires": { - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.1" - } - }, - "doctypes": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - }, - "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "requires": { - "has": "^1.0.3" - } - }, - "is-expression": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", - "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", - "requires": { - "acorn": "^7.1.1", - "object-assign": "^4.1.1" - } - }, - "is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" - }, - "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" - } - }, - "js-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" - }, - "jstransformer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", - "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", - "requires": { - "is-promise": "^2.0.0", - "promise": "^7.0.1" - } - }, - "jstransformer-markdown-it": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/jstransformer-markdown-it/-/jstransformer-markdown-it-2.1.0.tgz", - "integrity": "sha1-aewwzkUYvtWZezjwJ2SOjChekvc=", - "requires": { - "markdown-it": "^8.0.0" - } - }, - "linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", - "requires": { - "uc.micro": "^1.0.1" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "markdown-it": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz", - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==", - "requires": { - "argparse": "^1.0.7", - "entities": "~1.1.1", - "linkify-it": "^2.0.0", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - } - }, - "marked": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz", - "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==" - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "~2.0.3" - } - }, - "pug": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz", - "integrity": "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==", - "requires": { - "pug-code-gen": "^3.0.2", - "pug-filters": "^4.0.0", - "pug-lexer": "^5.0.1", - "pug-linker": "^4.0.0", - "pug-load": "^3.0.0", - "pug-parser": "^6.0.0", - "pug-runtime": "^3.0.1", - "pug-strip-comments": "^2.0.0" - } - }, - "pug-attrs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", - "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", - "requires": { - "constantinople": "^4.0.1", - "js-stringify": "^1.0.2", - "pug-runtime": "^3.0.0" - } - }, - "pug-code-gen": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz", - "integrity": "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==", - "requires": { - "constantinople": "^4.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.2", - "pug-attrs": "^3.0.0", - "pug-error": "^2.0.0", - "pug-runtime": "^3.0.0", - "void-elements": "^3.1.0", - "with": "^7.0.0" - } - }, - "pug-error": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz", - "integrity": "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==" - }, - "pug-filters": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", - "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", - "requires": { - "constantinople": "^4.0.1", - "jstransformer": "1.0.0", - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0", - "resolve": "^1.15.1" - } - }, - "pug-lexer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", - "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", - "requires": { - "character-parser": "^2.2.0", - "is-expression": "^4.0.0", - "pug-error": "^2.0.0" - } - }, - "pug-linker": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", - "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", - "requires": { - "pug-error": "^2.0.0", - "pug-walk": "^2.0.0" - } - }, - "pug-load": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", - "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", - "requires": { - "object-assign": "^4.1.1", - "pug-walk": "^2.0.0" - } - }, - "pug-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", - "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", - "requires": { - "pug-error": "^2.0.0", - "token-stream": "1.0.0" - } - }, - "pug-runtime": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", - "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==" - }, - "pug-strip-comments": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", - "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", - "requires": { - "pug-error": "^2.0.0" - } - }, - "pug-walk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", - "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - }, - "token-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", - "integrity": "sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=" - }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" - }, - "uglify-js": { - "version": "3.13.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.3.tgz", - "integrity": "sha512-otIc7O9LyxpUcQoXzj2hL4LPWKklO6LJWoJUzNa8A17Xgi4fOeDC8FBDOLHnC/Slo1CQgsZMcM6as0M76BZaig==" - }, - "void-elements": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=" - }, - "with": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", - "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", - "requires": { - "@babel/parser": "^7.9.6", - "@babel/types": "^7.9.6", - "assert-never": "^1.2.1", - "babel-walk": "3.0.0-canary-5" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index 554209e..0000000 --- a/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "site", - "version": "1.0.0", - "description": "deuxfleurs.fr", - "main": "render.js", - "dependencies": { - "clean-css": "^5.1.2", - "jstransformer-markdown-it": "^2.1.0", - "marked": "^0.8.2", - "pug": "^3.0.2", - "source-map": "^0.7.3", - "uglify-js": "^3.13.3" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git@git.deuxfleurs.fr:Deuxfleurs/site.git" - }, - "author": "", - "license": "ISC" -} diff --git a/render.js b/render.js deleted file mode 100644 index 2a46114..0000000 --- a/render.js +++ /dev/null @@ -1,264 +0,0 @@ -'use strict' - -const pug = require('pug') -const marked = require('marked') -const fs = require('fs').promises -const http = require('http') - -const unit = (...args) => null -const log = process.env.VERBOSE ? console.log : unit - -const walk = async (path, filename) => { - log('[walk]', path) - const type = await fs.lstat(path) - if (type.isFile()) return {type: 'file', path: path, name: filename || path, tags:[]} - if (!type.isDirectory()) return null - - const files = await fs.readdir(path) - return { - type: 'folder', - path: path, - name: filename || path, - tags: [], - children: await Promise.all(files.map(file => walk(`${path}/${file}`, file))) - } -} - -const ext_static = ['.css', '.js', '.otf', '.png', '.svg', '.txt', '.png', '.jpg', '.webp', 'client', 'server', '.pdf', '.ttf', '.xml', '.properties'] -const ext_md = ['.md', '.markdown'] -const ext_pug = ['.pug', '.jade'] - -const suffix = file => ext => file.substring(file.length - ext.length) == ext ? ext : null -const suffixl = (...l) => file => l.find(suffix(file)) -const is_static = suffixl(...ext_static) -const is_md = suffixl(...ext_md) -const is_pug = suffixl(...ext_pug) -const is_templated = f => is_md(f) /* || is_rst(f) */ -const is_document = f => is_templated(f) || is_pug(f) - -const prefix = file => ext => file.substring(0, ext.length) == ext ? ext : null -const prefixl = (...l) => file => l.find(prefix(file)) - -const rm_prefix = (...l) => file => file.substring(prefixl(...l)(file).length) -const rm_suffix = (...l) => file => file.substring(0, file.length - suffixl(...l)(file).length) - -const propagate_md_layout = (tree, markdown_template) => { - if (tree.type == 'file' && is_templated(tree.name)) { - tree.template = markdown_template - log('[propagate_md_layout]', tree ? tree.path : null, markdown_template ? markdown_template.path : null) - } else if (tree.type == 'folder') { - const find_md_tpl = tree.children.filter(c => c.type == 'file' && c.name == '_markdown.pug') - const new_md_tpl = find_md_tpl.length > 0 ? find_md_tpl[0] : markdown_template - tree.children.forEach(c => propagate_md_layout(c, new_md_tpl)) - } - return tree -} - -const elagate = tree => { - if (tree.type != 'folder') return tree - - const lh = e => log('[elagate]', e.path) && false - tree.children = tree.children.filter(e => !(e.name[0] == '_') || lh(e)) - tree.children.forEach(elagate) - return tree -} - -const tag_document = tree => { - if (tree.type == 'file' && is_document(tree.name) && tree.name[0] != '@') { - tree.tags.push('document_leaf', 'document') - log('[tag_document]', tree.path, 'document_leaf') - } else if (tree.type == 'folder') { - tree.children.forEach(tag_document) - if(tree.children.some(c => c.tags.includes('document'))) { - tree.tags.push('document_branch', 'document') - log('[tag_document]', tree.path, 'document_branch') - } - } - return tree -} - -const reference_index = indexes => tree => { - if (tree.type != 'folder') return tree; - - const index = tree.children.find(e => indexes.includes(e.name)) - if (index) { - tree.index = index - tree.tags.push('has_index') - log('[reference_index]', tree.path, index.name) - index.tags.push('is_index') - } - tree.children.forEach(reference_index(indexes)) - - return tree; -} - -const propagate_nice_name = prefix => tree => { - const without_prefix = tree.path.substring(prefix.length) - const splitted = without_prefix.split('/').filter(v => v.length > 0) - if (splitted.length > 0) { - tree.nice_path = splitted.slice(0, -1) - tree.nice_name = splitted[splitted.length - 1].split('.')[0] - tree.url = tree.type == 'folder' ? without_prefix + '/' : without_prefix - log('[propagate_nice_name]', [...tree.nice_path, tree.nice_name].join('|')) - } - - if (tree.type == 'folder') tree.children.forEach(propagate_nice_name(prefix)) - return tree -} - -const prepare_copy = (old_prefix, new_prefix, exts) => tree => { - if (tree.type == 'file' && is_static(tree.name)) { - tree.generate = { - cmd: 'copy', - src: tree.path, - out: new_prefix + rm_prefix(old_prefix)(tree.path) - } - log('[prepare_copy]',tree.generate.src,'->',tree.generate.out) - } else if (tree.type == 'folder') { - tree.children.forEach(prepare_copy(old_prefix, new_prefix, exts)) - } - return tree -} - -const prepare_pug = (old_prefix, new_prefix) => tree => { - if (tree.type == 'file' && is_pug(tree.name)) { - tree.old_url = tree.url - tree.url = rm_prefix(old_prefix)(rm_suffix(...ext_pug)(tree.path)) + '.html' - tree.generate = { - cmd: 'pug', - src: tree.path, - out: new_prefix + tree.url - } - log('[prepare_pug]',tree.generate.src,'->',tree.generate.out) - } - else if (tree.type == 'folder') { - tree.children.forEach(prepare_pug(old_prefix, new_prefix)) - } - - return tree -} - -const prepare_md = (old_prefix, new_prefix) => tree => { - if (tree.type == 'file' && is_md(tree.name)) { - tree.old_url = tree.url - tree.url = rm_prefix(old_prefix)(rm_suffix(...ext_md)(tree.path)) + '.html' - tree.generate = { - cmd: 'pug', - src: tree.template.path, - markdown: tree.path, - out: new_prefix + tree.url - } - log('[prepare_md]',tree.generate.markdown,'+',tree.generate.src,'->',tree.generate.out) - } - else if (tree.type == 'folder') { - tree.children.forEach(prepare_md(old_prefix, new_prefix)) - } - - return tree -} - -const prepare_folder = (old_prefix, new_prefix) => tree => { - if (tree.type == 'folder') { - tree.generate = { - cmd: 'mkdir', - out: new_prefix + rm_prefix(old_prefix)(tree.path) - } - log('[prepare_folder]',tree.generate.out) - tree.children.forEach(prepare_folder(old_prefix, new_prefix)) - } - - return tree -} - -const do_folder = async tree => { - if (!tree.generate || tree.generate.cmd != 'mkdir') return tree - await fs.mkdir(tree.generate.out, { recursive: true }) - log('[do_folder]',tree.generate.out) - await Promise.all(tree.children.map(do_folder)) - return tree -} - -const do_copy = async tree => { - if (tree.generate && tree.generate.cmd == 'copy') { - await fs.copyFile(tree.generate.src, tree.generate.out) - log('[do_copy]',tree.generate.out) - } else if (tree.type == 'folder') - await Promise.all(tree.children.map(do_copy)) - - return tree -} - -const do_pug = (prt, root) => async tree => { - prt = prt || tree - root = root || tree - if (tree.generate && tree.generate.cmd == 'pug') { - const html = pug.renderFile(tree.generate.src, { - markdown: tree.generate.markdown ? marked(await fs.readFile(tree.generate.markdown, 'utf-8')) : null, - root: root, - prt: prt, - element: tree - }) - await fs.writeFile(tree.generate.out, html) - log('[do_pug]',tree.generate.out) - } else if (tree.type == 'folder') - await Promise.all(tree.children.map(do_pug(tree,root))) - - return tree -} - -const rm_tree = t => { - if (t == null) return - if (t.type == 'file') { - log('[do_clean] file', t.path) - return fs.unlink(t.path) - } - - return Promise - .all(t.children.map(rm_tree)) - .then(_ => { - log('[do_clean] path', t.path) - return fs.rmdir(t.path) - }) -} - -const do_clean = path => tree => - walk(path) - .catch(_ => null) - .then(rm_tree) - .then(_ => tree) - -const listen = async t => - process.env.LISTEN && - http.createServer(async (req,res) => { - const file = fs.readFile(__dirname + '/static/' + decodeURI(req.url)) - .catch(_ => fs.readFile(__dirname + '/static/' + decodeURI(req.url) + '/index.html')) - - try { - const f = await file - res.writeHead(200) - res.end(f) - } catch (e) { - console.error(e) - res.writeHead(404) - res.end("404 not found") - } - }).listen(process.env.LISTEN); - -const conf = { src: './src', dest: './static'} -walk(conf.src) - .then(propagate_md_layout) - .then(elagate) - .then(tag_document) - .then(reference_index(['index.md', 'index.pug'])) - .then(propagate_nice_name(conf.src)) - .then(prepare_copy(conf.src, conf.dest)) - .then(prepare_pug(conf.src, conf.dest)) - .then(prepare_md(conf.src, conf.dest)) - .then(prepare_folder(conf.src, conf.dest)) - //.then(v => {log(v) ; return v}) - .then(do_clean(conf.dest)) - .then(do_folder) - .then(do_copy) - .then(do_pug()) - .then(listen) - .catch(console.error) diff --git a/ronce.webp b/ronce.webp new file mode 100644 index 0000000..de8ad38 Binary files /dev/null and b/ronce.webp differ diff --git a/script-bon.js b/script-bon.js new file mode 100644 index 0000000..5458968 --- /dev/null +++ b/script-bon.js @@ -0,0 +1,44 @@ +// dictionary to keep track of frame count for each animation +let frameCounts = {}; + +function animate(id, delay) { + + // get the container and frames for the amination + const container = document.getElementById(id); + const frames = container.children; + + // set up the frame counter + frameCounts[id] = 0; + + // hide all frames except for the first + frames[0].style.display = "flex"; + for (let i = 1; i < frames.length; i++) { + frames[i].style.display = "none"; + } + + // start the animation + const interval = setInterval(updateAnimation, delay, id, frames, frames.length); + +} + +function updateAnimation(id, frames, totalFrames) { + + // increment the frame counter for the given id + frameCounts[id] = (frameCounts[id] + 1) % totalFrames; + + // show the next frame + frames[frameCounts[id]].style.display = "flex"; + + // hide the previous frame + if (frameCounts[id] == 0) { + frames[totalFrames - 1].style.display = "none"; + } else { + frames[frameCounts[id] - 1].style.display = "none"; + } + +} + +animate("illustration-accueil", 500); +animate("rennes", 1000); +animate("orsay", 2000); +animate("parterre", 1500); \ No newline at end of file diff --git a/src/.well-known/autoconfig/mail/config-v1.1.xml b/src/.well-known/autoconfig/mail/config-v1.1.xml deleted file mode 100644 index 6674526..0000000 --- a/src/.well-known/autoconfig/mail/config-v1.1.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - deuxfleurs.fr - Deuxfleurs Mail - Deuxfleurs - - imap.deuxfleurs.fr - 993 - SSL - plain - %EMAILADDRESS% - - - smtp.deuxfleurs.fr - 465 - SSL - plain - %EMAILADDRESS% - - - Documentation générique pour la configuration - Generic settings page - - - - diff --git a/src/.well-known/chatonsinfos/cryptpad.properties b/src/.well-known/chatonsinfos/cryptpad.properties deleted file mode 100644 index 0acc600..0000000 --- a/src/.well-known/chatonsinfos/cryptpad.properties +++ /dev/null @@ -1,30 +0,0 @@ -file.class = service -file.protocol = ChatonsInfos-0.5 -file.datetime = 2022-07-20T00:00:00 -file.generator = L'équipe Deuxfleurs -service.name = Cryptpad -service.description = Pads, sondages, tableurs collaboratifs et chiffrés -service.website = https://pad.deuxfleurs.fr -service.logo = https://deuxfleurs.fr/.well-known/chatonsinfos/deuxfleurs.svg -service.legal.url = https://deuxfleurs.fr/Mentions%20l%C3%A9gales.html -service.guide.technical = https://guide.deuxfleurs.fr/operations/ -service.guide.user = https://guide.deuxfleurs.fr/prise_en_main/cryptpad/ -service.contact.url = https://deuxfleurs.fr/ -service.contact.email = coucou@deuxfleurs.fr -service.startdate = 01/01/2020 -service.status.level = OK -service.registration = None -service.registration.load = OPEN -service.install.type = SOURCES -software.name = cryptpad -software.website = https://cryptpad.fr/ -software.license.url = https://github.com/xwiki-labs/cryptpad/blob/main/LICENSE -software.license.name = AGPL-3.0 -software.version = 4.14.1 -software.source.url = https://github.com/superboum/cryptpad -host.name=Deuxfleurs -host.server.distribution=NixOS -host.server.type=PHYSICAL -host.provider.type=HOME -host.country.code=FR -host.country.name=France diff --git a/src/.well-known/chatonsinfos/deuxfleurs.fr.properties b/src/.well-known/chatonsinfos/deuxfleurs.fr.properties deleted file mode 100644 index 663d761..0000000 --- a/src/.well-known/chatonsinfos/deuxfleurs.fr.properties +++ /dev/null @@ -1,28 +0,0 @@ -file.class = organization -file.protocol = ChatonsInfos-0.5 -file.datetime = 2022-07-20T00:00:00 -file.generator = L'équipe Deuxfleurs -organization.name = Deuxfleurs -organization.description = Fabriquons un internet convivial -#organization.type = ASSOCIATION -organization.website = https://deuxfleurs.fr -organization.logo = https://deuxfleurs.fr/.well-known/chatonsinfos/deuxfleurs.svg -organization.socialnetworks.plume = https://plume.deuxfleurs.fr/~/Deuxfleurs -organization.socialnetworks.twitter = https://twitter.com/deuxfleurs_org/ -organization.chatrooms.matrix = https://matrix.to/#/#deuxfleurs:deuxfleurs.fr -organization.contact.url = https://deuxfleurs.fr -organization.contact.email = coucou@deuxfleurs.fr -organization.legal.url = https://deuxfleurs.fr/Mentions%20l%C3%A9gales.html -organization.guide.technical = https://guide.deuxfleurs.fr/operations/ -organization.guide.user = https://guide.deuxfleurs.fr/prise_en_main/ -organization.status.level = ACTIVE -organization.startdate = 01/01/2020 -organization.memberof.chatons.startdate = 21/06/2022 -organization.memberof.chatons.status.level = ACTIVE -organization.country.name = France -organization.country.code = FR -subs.jitsi = https://deuxfleurs.fr/.well-known/chatonsinfos/jitsi.properties -subs.cryptpad = https://deuxfleurs.fr/.well-known/chatonsinfos/cryptpad.properties -subs.matrix = https://deuxfleurs.fr/.well-known/chatonsinfos/matrix.properties -subs.plume = https://deuxfleurs.fr/.well-known/chatonsinfos/plume.properties -subs.garage = https://deuxfleurs.fr/.well-known/chatonsinfos/garage.properties diff --git a/src/.well-known/chatonsinfos/deuxfleurs.svg b/src/.well-known/chatonsinfos/deuxfleurs.svg deleted file mode 100644 index c298c22..0000000 --- a/src/.well-known/chatonsinfos/deuxfleurs.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - D - F - diff --git a/src/.well-known/chatonsinfos/garage.properties b/src/.well-known/chatonsinfos/garage.properties deleted file mode 100644 index 1cf636a..0000000 --- a/src/.well-known/chatonsinfos/garage.properties +++ /dev/null @@ -1,30 +0,0 @@ -file.class = service -file.protocol = ChatonsInfos-0.5 -file.datetime = 2022-07-20T00:00:00 -file.generator = L'équipe Deuxfleurs -service.name = Hébergement site statique -service.description = Hébergez votre blog, site vitrine ou n'importe quel site statique -service.website = https://guide.deuxfleurs.fr/prise_en_main/web/ -service.logo = https://deuxfleurs.fr/.well-known/chatonsinfos/deuxfleurs.svg -service.legal.url = https://deuxfleurs.fr/Mentions%20l%C3%A9gales.html -service.guide.technical = https://guide.deuxfleurs.fr/operations/ -service.guide.user = https://guide.deuxfleurs.fr/prise_en_main/web/ -service.contact.url = https://deuxfleurs.fr/ -service.contact.email = coucou@deuxfleurs.fr -service.startdate = 01/01/2020 -service.status.level = OK -service.registration = Member -service.registration.load = OPEN -service.install.type = SOURCES -software.name = Garage -software.website = https://garagehq.deuxfleurs.fr/ -software.license.url = https://git.deuxfleurs.fr/Deuxfleurs/garage/src/branch/main/LICENSE -software.license.name = AGPL-3.0 -software.version = 0.7.2 -software.source.url = https://git.deuxfleurs.fr/Deuxfleurs/garage -host.name=Deuxfleurs -host.server.distribution=NixOS -host.server.type=PHYSICAL -host.provider.type=HOME -host.country.code=FR -host.country.name=France diff --git a/src/.well-known/chatonsinfos/jitsi.properties b/src/.well-known/chatonsinfos/jitsi.properties deleted file mode 100644 index c46a6e2..0000000 --- a/src/.well-known/chatonsinfos/jitsi.properties +++ /dev/null @@ -1,30 +0,0 @@ -file.class = service -file.protocol = ChatonsInfos-0.5 -file.datetime = 2022-07-20T00:00:00 -file.generator = L'équipe Deuxfleurs -service.name = Jitsi -service.description = Visioconférence dans le navigateur et sur mobile -service.website = https://jitsi.deuxfleurs.fr -service.logo = https://deuxfleurs.fr/.well-known/chatonsinfos/deuxfleurs.svg -service.legal.url = https://deuxfleurs.fr/Mentions%20l%C3%A9gales.html -service.guide.technical = https://guide.deuxfleurs.fr/operations/ -service.guide.user = https://guide.deuxfleurs.fr/prise_en_main/jitsi/ -service.contact.url = https://deuxfleurs.fr/ -service.contact.email = coucou@deuxfleurs.fr -service.startdate = 01/01/2020 -service.status.level = OK -service.registration = None -service.registration.load = OPEN -service.install.type = SOURCES -software.name = jitsimeet -software.website = https://jitsi.org/jitsi-meet/ -software.license.url = https://github.com/jitsi/jitsi-meet/blob/master/LICENSE -software.license.name = Apache License 2.0 -software.version = 6826 -software.source.url = https://git.deuxfleurs.fr/Deuxfleurs/infrastructure/src/branch/main/app/jitsi/build -host.name=Deuxfleurs -host.server.distribution=NixOS -host.server.type=PHYSICAL -host.provider.type=HOME -host.country.code=FR -host.country.name=France diff --git a/src/.well-known/chatonsinfos/matrix.properties b/src/.well-known/chatonsinfos/matrix.properties deleted file mode 100644 index 34e211e..0000000 --- a/src/.well-known/chatonsinfos/matrix.properties +++ /dev/null @@ -1,30 +0,0 @@ -file.class = service -file.protocol = ChatonsInfos-0.5 -file.datetime = 2022-07-20T00:00:00 -file.generator = L'équipe Deuxfleurs -service.name = Matrix -service.description = Discussions instantanées chiffrées et en groupe -service.website = https://riot.deuxfleurs.fr -service.logo = https://deuxfleurs.fr/.well-known/chatonsinfos/deuxfleurs.svg -service.legal.url = https://deuxfleurs.fr/Mentions%20l%C3%A9gales.html -service.guide.technical = https://guide.deuxfleurs.fr/operations/ -service.guide.user = https://guide.deuxfleurs.fr/prise_en_main/matrix/ -service.contact.url = https://deuxfleurs.fr/ -service.contact.email = coucou@deuxfleurs.fr -service.startdate = 01/01/2020 -service.status.level = OK -service.registration = Member -service.registration.load = OPEN -service.install.type = SOURCES -software.name = Synapse -software.website = https://matrix-org.github.io/synapse/latest/ -software.license.url = https://github.com/matrix-org/synapse/blob/develop/LICENSE -software.license.name = Apache-2.0 -software.version = 1.61.1 -software.source.url = https://github.com/matrix-org/synapse -host.name=Deuxfleurs -host.server.distribution=NixOS -host.server.type=PHYSICAL -host.provider.type=HOME -host.country.code=FR -host.country.name=France diff --git a/src/.well-known/chatonsinfos/plume.properties b/src/.well-known/chatonsinfos/plume.properties deleted file mode 100644 index 69029a8..0000000 --- a/src/.well-known/chatonsinfos/plume.properties +++ /dev/null @@ -1,30 +0,0 @@ -file.class = service -file.protocol = ChatonsInfos-0.5 -file.datetime = 2022-07-20T00:00:00 -file.generator = L'équipe Deuxfleurs -service.name = Plume -service.description = Plateforme de blog fédérée via ActivityPub -service.website = https://plume.deuxfleurs.fr/ -service.logo = https://deuxfleurs.fr/.well-known/chatonsinfos/deuxfleurs.svg -service.legal.url = https://deuxfleurs.fr/Mentions%20l%C3%A9gales.html -service.guide.technical = https://guide.deuxfleurs.fr/operations/ -service.guide.user = https://guide.deuxfleurs.fr/prise_en_main/plume/ -service.contact.url = https://deuxfleurs.fr/ -service.contact.email = coucou@deuxfleurs.fr -service.startdate = 01/01/2020 -service.status.level = OK -service.registration = Member -service.registration.load = OPEN -service.install.type = SOURCES -software.name = Plume -software.website = https://joinplu.me/ -software.license.url = https://git.joinplu.me/Plume/Plume/src/branch/main/LICENSE -software.license.name = AGPL-3.0 -software.version = 8709f6cf9f8ff7e3c5ee7ea699ee7c778e92fefc -software.source.url = https://git.joinplu.me/Plume/Plume -host.name=Deuxfleurs -host.server.distribution=NixOS -host.server.type=PHYSICAL -host.provider.type=HOME -host.country.code=FR -host.country.name=France diff --git a/src/.well-known/matrix/client b/src/.well-known/matrix/client deleted file mode 100644 index 4aebc93..0000000 --- a/src/.well-known/matrix/client +++ /dev/null @@ -1,12 +0,0 @@ -{ - "m.homeserver": { - "base_url": "https://im.deuxfleurs.fr" - }, - "m.identity_server": { - "base_url": "https://vector.im" - }, - "im.vector.riot.jitsi": { - "preferredDomain": "jitsi.deuxfleurs.fr" - } -} - diff --git a/src/.well-known/matrix/server b/src/.well-known/matrix/server deleted file mode 100644 index cb74999..0000000 --- a/src/.well-known/matrix/server +++ /dev/null @@ -1 +0,0 @@ -{ "m.server": "im.deuxfleurs.fr:443" } diff --git a/src/@404.pug b/src/@404.pug deleted file mode 100644 index fbee964..0000000 --- a/src/@404.pug +++ /dev/null @@ -1,13 +0,0 @@ -extends _layout.pug - -prepend root - - title = "deuxfleurs" - -block content - section - h1 404 - Page non trouvée - - p La page que vous cherchez n'existe pas sur ce site web. - - p Si vous pensez que c'est une erreur, les informations pour nous contacter sont disponibles sur notre page d'accueil. - diff --git a/src/CGU.pug b/src/CGU.pug deleted file mode 100644 index e105fd0..0000000 --- a/src/CGU.pug +++ /dev/null @@ -1,144 +0,0 @@ -extends _layout.pug - -prepend root - - title = "CGU" - -block content - section - h1 Conditions Générales d'Utilisation - - p 10/03/2022 - - p En utilisant les services de Deuxfleurs, vous acceptez d’être lié par les conditions suivantes. - - h2 Évolution des conditions générales d'utilisation - - p Deuxfleurs se réserve le droit de mettre à jour et modifier ces conditions. Dans ce cas, Deuxfleurs informe les personnes concernées par mail si elle le peut ou par un affichage sur le site. - - h2 Accès aux services - - p - | Certains services sont en accès libre, d'autre requièrent un compte. Vous pouvez obtenir un compte par cooptation d'un membre existant ou en faisant une demande directement par email à l'association. - | Certains services sont soumis à l'approbation préalable de Deuxfleurs selon les ressources disponibles. La liste des services et leurs conditions d'accès peut-être obtenue en contactant l'association. - - h2 Fonctionnement - - h3 Délais de mise en service - - p Deuxfleurs propose ses services grâce à des bénévoles, de ce fait Deuxfleurs ne s’engage sur aucun délai de mise en service. Nous essayons toutefois de faire de notre mieux pour les fournir dans les 7 jours. - - h3 Transmission sécurisée d’identifiants - - p - | Deuxfleurs ne vous demandera jamais de communiquer vos mots ou phrases de passe. - | Lorsque Deuxfleurs doit vous transmettre un identifiant, Deuxfleurs le fera via email ou en physique. - - h3 Intervention en cas de panne - - p En cas de panne constatée et si aucun message n’atteste sur la page de statut que Deuxfleurs est en train de corriger le dysfonctionnement, vous devez faire un signalement via Matrix. - - p Deuxfleurs propose l’ensemble de ses services grâce à des bénévoles qui feront ce qu’ils et elles peuvent pour résoudre les problèmes techniques qui pourraient subvenir. - - - h3 Intégrité des données - - p Deuxfleurs réalise des sauvegardes quotidiennes afin d’éviter des pertes de données. Les sauvegardes sont conservées selon cette politique suivante : 1/jour jusqu’à 1 mois, 1/semaine jusqu’à 3 mois, 1/mois jusqu’à 1 an. Les sauvegardes sont stockées de manière chiffrée avec un mot de passe par l'association à Suresnes. - - p Deuxfleurs ne peut être tenu responsable de l’intégrité des données et des conséquences liées à une perte de données. - - p Deuxfleurs recommande aux usager·es d’avoir une sauvegarde locale afin d’assurer l’intégrité de leurs données. - - h3 Responsabilité de Deuxfleurs - - p Deuxfleurs est assujetti à une obligation de moyens. En cas de défaillance, Deuxfleurs ne peut être tenu pour responsable des dommages indirects tels que pertes d’exploitation, préjudices commerciaux, perte de Clientèle, de chiffre d’affaires, de bénéfices ou d’économies prévus, ou de tout autre préjudice indirect. - - h3 Mésusage des services - - p Vous devez respecter les lois et réglementations en vigueur lors de l’usage des services proposés que ce soit en matière de respect de la vie privée, d’envoi de mails en grande quantité, de propriété intellectuelle, de propos discriminatoires, d’appel à la haine, de harcèlement, d’atteinte aux libertés fondamentales de personnes, etc. - - p En cas d’usage prohibé, Deuxfleurs peut se trouver dans l’obligation de déclencher la suspension totale ou partielle du service, le retrait de contenu, ou toute autre mesure que les lois et réglementations lui imposent. Vous devez respecter les autres utilisateurs en faisant preuve de civisme et de politesse. Deuxfleurs se réserve le droit de supprimer tout contenu paraissant non pertinent ou contrevenant à ces principes, selon son seul jugement. - - p Par ailleurs, si un ou une utilisatrice abuse du service, par exemple en monopolisant des ressources machines partagées, son contenu ou son accès pourra être supprimé, si nécessaire sans avertissement ni négociation. Deuxfleurs reste seul juge de cette notion « d’abus » dans le but de fournir le meilleur service possible à l’ensemble des usagers et usagères. - - h3 Devenir des services - - p Deuxfleurs peut par ailleurs choisir (de résilier des abonnements ou) d’arrêter des services si Deuxfleurs estime ne plus être en mesure de fournir lesdits services. Si Deuxfleurs en a la possibilité, elle fera de son mieux pour laisser un délai suffisant pour permettre à tout le monde de migrer sereinement. - - h3 Support et conseil - - p Vous pouvez nous signaler des souhaits sur la création de futur service, mais sachez que nous ne pourrons pas créer de nouveaux services en moins de 6 mois. Deuxfleurs pourra toutefois vous rediriger vers des chatons à même de répondre à vos demandes. - - p En dehors de dysfonctionnement technique, Deuxfleurs propose également de vous aider dans la réalisation de votre projet avec les services de Deuxfleurs selon l'envie et le temps disponible de ses membres. Deuxfleurs se réserve le droit de facturer le temps de support et de conseil pour des projets importants après avoir prévenu les utilisateurs en amont. - - h3 Résiliation d’un compte - - p Si vous souhaitez résilier un compte, vous devez le signaler à Deuxfleurs. - - h2 Nos engagements - - p - | Deuxfleurs n’exploitera vos données personnelles que dans le cadre de ces 5 finalités: - ul - li fournir le service pour lesquels vous avez transmis vos données - li produire d‘éventuelles statistiques anonymisées et agrégées - li vous prévenir d’un changement important sur le service (panne, notification d’intrusion et de vol de données, changement d’interface, date d’arrêt du service...) - li obtenir votre avis sur les services et l’action de l’association - li vous inviter à participer à un évènement de Deuxfleurs - - p Deuxfleurs ne transmettra ni ne revendra vos données personnelles (votre vie privée nous tient - vraiment - à cœur). Votre contenu vous appartient tout autant, toutefois, nous vous encourageons à le publier sous licence libre si c’est pertinent. - - p - | Une modification du paragraphe précédent, contrairement au reste de la présente charte, ne peut se faire simplement par une simple notification. Si une telle modification devait survenir, elle : - ul - li Ne serait pas rétroactive - li Demandera un accord explicite de votre part pour continuer à utiliser les services fournis par Deuxfleurs - li Provoquera une révocation préalable à la modification auprès de tous les soutiens de Deuxfleurs ayant à cœur les problématiques de respect de la vie privée. - - - h3 Charte CHATONS - - p Deuxfleurs s’engage à respecter la charte du Collectif des Hébergeurs Alternatifs, Transparents, Ouverts, Neutres et Solidaires dans le cadre de son activité d’hébergeur et de fourniture de services en ligne - - p Deuxfleurs est candidat à l’intégration au sein de ce collectif. - - p Plus d’information sur la charte C.H.A.T.O.N.S. : - a(href="https://chatons.org/fr/charte") chatons.org/fr/charte - - - h3 Localisation des données - - p - | Vos données sont localisées en France et en Belgique, sur les serveurs de nos membres. Un détail complet de l'infrastructure et de l'emplacement des données par service est disponible sur notre page  - a(href="https://wiki.deuxfleurs.fr/Technique/Infra") Infrastructure - | . - - h3 Devenir des données - - p Une fois le compte clôturé, Deuxfleurs peut procéder à la suppression des données. - - p Certains services en libre accès permettent de configurer la péremption des données, d’autres les conservent de façon permanentes, mais vous pouvez demander leur retrait si vous pouvez prouver que vous en êtes l’auteur⋅ice. - - h3 Exercice de vos droits - - p - | Conformément à l’article 34 de la loi « Informatique et Libertés », vous pouvez exercer les droits suivant en envoyant un mail à ca - img.simple(height="15", src="img/arobase.png") - | deuxfleurs.fr : - ul - li droits d’accès, de rectification, d’effacement et d’opposition - li droit à la limitation du traitement - li droit à la portabilité des données - li droit de ne pas faire l’objet d’une décision individuelle automatisée - - h3 RGPD - - p Vous et Deuxfleurs s’engagent à respecter la réglementation en vigueur applicable au traitement de données à caractère personnel et, en particulier, le règlement (UE) 2016/679 du Parlement européen et du Conseil du 27 avril 2016 applicable à compter du 25 mai 2018, dite RGPD. - - h2 Litige et juridiction compétente - - p Le droit applicable aux présentes est le droit français. En cas de différent, les parties recherchent une solution amiable. Si la démarche échoue, le litige sera tranché par le Tribunal de Grande Instance de Rennes. - - p Le fait que l’usager ou Deuxfleurs ne se prévale pas à un moment donné de l’une des présentes conditions générales et/ou tolère un manquement par l’autre partie ne peut être interprété comme valant renonciation par l’usager ou Deuxfleurs à se prévaloir ultérieurement de ces conditions. - - p La nullité d’une des clauses de ces conditions en application d’une loi, d’une réglementation ou d’une décision de justice n’implique pas la nullité de l’ensemble des autres clauses. Par ailleurs l’esprit général de la clause sera à conserver en accord avec le droit applicable. - diff --git a/src/Gestion des risques.pug b/src/Gestion des risques.pug deleted file mode 100644 index b6f4c09..0000000 --- a/src/Gestion des risques.pug +++ /dev/null @@ -1,130 +0,0 @@ -extends _layout.pug - -prepend root - - title = "Gestion des risques" - -block content - section - h1 Gestion des risques - - p - | Un risque se définit par la combinaison d'un danger, c'est à dire un évènement redouté, et sa probabilité d'occurence. - | La gestion des risques consiste à minimiser les risques en les évaluant et en mettant en place des solutions pour réduire leur impact. - - h2 🧰 Risques matériels - - h3 Panne de composants informatiques - - p - b Définition du risque - | : Un serveur est composé d'un ensemble de pièces avec une durée de vie limitée. La panne d'une de ces pièces cause une interruption de service et possiblement une perte de données (comme dans le cas d'un disque dur par exemple). La probabilité de ces pannes est importante car certains composants ont une durée de vie limité, comme les disques durs, et de plus nous utilisons du matériel reconditionné qui a donc déjà été utilisé. - - p - b Mesure mise en place - | : Nous avons à disposition des pièces de rechange pour pouvoir réparer rapidement nos serveurs. De plus, nous avons en permanence plusieurs machines en production de sorte que lorsque l'une d'elle tombe en panne, les services qu'elle gérait sont automatiquement basculés sur les autres machines fonctionnelles. Les données sont répliquées sur 3 disques durs différents, de sorte que si un disque dur tombe en panne, cette dernière est toujours disponible sur 2 autres disques. - - h3 Bug logiciel - - p - b Définition du risque - | : Un bug logiciel peut rendre un service indisponible voire impliquer une perte de données. Cette indisponibilité et cette perte de donnée, contrairement à une panne matériel, peut se propager à l'ensemble de nos serveurs. - - p - b Mesure mise en place - | : Les données, en plus d'être répliquées automatiquement, sont périodiquement sauvegardées via un logiciel indépendant sur une période d'au moins 2 mois sur un site distant (Suresnes), de sorte que le logiciel qui fournisse le service n'ait pas accès aux données de sauvegardes et ne puisse donc pas les effacer. Les services quant à eux sont définis déclarativement, dans chaque modification est archivée, de sorte qu'il est possible de revenir sur une version antérieure du service qui soit stable. - - h3 Panne du réseau électrique ou internet - - p - b Définition du risque - | : Nous faisons appel à des prestataires externe pour l'électricité (eg. EDF) et la connexion Internet (eg. Free). Lors de travaux dans la rue, de tension sur le réseau (eg. froid ou confinement), ou simplement d'erreur de gestion, ces réseaux peuvent être coupés localement ou au niveau national. En résulte une indisponibilité des services pendant la coupure. - - p - b Mesure mise en place - | : Notre infrastructure est répartie sur des zones éloignées géographiquement (aujourd'hui Rennes et Orsay), de sorte qu'une panne locale ne nécessitera que de migrer les services d'une zone à l'autre. Pour le cas d'une panne au niveau national, nous acceptons ce risque : il est très faible et, la plupart du temps, le service est rétabli en quelques heures. - - h3 Panne des autres prestataires et tiers-parties - - p - b Définition du risque - | : Deuxfleurs fait appel à un certains nombre de prestataires et tiers parties pour fournir ses services : bureau d'enregistrement DNS (Gandi), Hébergeur DNS (Gandi), certificats X.509 (Let's Encrypt), système d'exploitation (NixOS, Debian), logiciels (Docker Hub, Github, etc.). La panne ou le blocage par une de ces tiers-parties impacteraient les services de Deuxfleurs. - - p - b Mesure mise en place - | : Nous essayons de limiter le nombre de prestataires que nous utilisons et évitons de verrouiller fortement nos choix technologiques vis à vis d'un fournisseur particulier. - | En dehors de ces points, nous acceptons ces risques. - - h2 😵 Risques humains - - h3 Erreur d'administration - - p - b Définition du risque - | : Une erreur d'administration des services peut aboutir à une interruption de services et à une perte de données sur l'ensemble de nos serveurs. Elle peut également générer beaucoup de stress pour la personne en charge de l'administration. - - p - b Mesure mise en place - | : Les données, en plus d'être répliquées automatiquement, sont périodiquement sauvegardées via un logiciel indépendant sur une période d'au moins 2 mois sur un site distant (Suresnes), de sorte que le logiciel qui fournisse le service n'ait pas accès aux données de sauvegardes et ne puisse donc pas les effacer. Les services quant à eux sont définis déclarativement, dans chaque modification est archivée, de sorte qu'il est possible de revenir sur une version antérieure du service qui soit stable. En cas d'erreur, la personne en charge de l'administration doit demander un accompagnement ou un relai pour limiter les risques d'aggravement de la situation et ne pas avoir à supporter cette situation stressante seule. - - h3 Absence d'astreinte - p - b Définition du risque - | : Que ce soit dans les datacenters au niveau matériel, ou dans les services informatiques, au niveau logiciel, de nombreuses organisations mettent en place des astreintes. - | Autrement dit, une ou plusieurs personnes identifiées doivent se rendre disponible sur des périodes données pour pouvoir intervenenir rapidement sur les serveurs. - | Dans le cas de Deuxfleurs, une astreinte empêcherait une personne de quitter son domicile pour des vacances ou même rendre visite à sa famille ! - - p - b Mesure mise en place - | : Nous faisons en sorte d'avoir des serveurs chez des membres différents et d'avoir plusieurs personnes en mesure de réaliser une même opération de maintenance. - | Si un problème devait arriver pendant l'absence de la personne concernée, un autre membre devrait pouvoir prendre le relai dans les heures ou les jours qui viennent, par exemple en migrant les services chez lui ou en le réparant à distance. - - - h3 Perte d'expertise - p - b Définition du risque - | : L'infrastructure que nous avons déployée demande des connaissances avancées en informatique détenues par une fraction des membres de l'association. Si cette fraction venait à quitter l'association, la maintenance de ses services pourrait ne plus être réalisée par les membres restants, mettant en péril sa pérennité. - - p - b Mesure mise en place - | : Nous essayons d'avoir toujours au moins deux personnes en mesure de réaliser une tâche. Nous essayons de documenter et standardiser notre infrastructure. - - h3 Risques juridiques - p - b Définition du risque - | : Deuxfleurs pourrait enfreindre la loi et voir sa pérennité engagée en cas de procès. - - p - b Mesure mise en place - | : Nous faisons une veille juridique concernant les hébergeurs. Nous mitigeons aussi ce risque via la co-optation qui permet de contrôler notre croissance et les personnes qui nous rejoignent. - - h2 👿 Malveillance - - h3 Attaque informatique - p - b Définition du risque - | : Une attaque informatique, venant d'un·e administrateur·ice ou d'une personne extérieure, peut aboutir à l'indisponibilité de nos services, à une perte de données, mais aussi à la fuite de ces dernières. - - p - b Mesure mise en place - | : Pour se protéger d'un·e administrateur·ice malveillant·e, le groupe d'administrateur·ices existant ne recrute que de nouvelles personnes sur cooptation et après avoir jugé cette personne de confiance. Nous prévoyions également de chiffrer de plus en plus de données côté client, de sorte qu'une personne en charge de l'administration ne soit pas en mesure de lire le contenu stocké sur les serveurs. Pour se protéger d'une personne extérieure, nous maintenons notre système à jour et avons entamé une démarche de défense en profondeur. - - - h3 Vol du matériel - - p - b Définition du risque - | : Une personne entrant par effraction chez un de nos membres pourrait voler les ordinateurs. Cet évènement peut impacter la disponibilité de nos services, l'intégrité de nos données, mais aussi la confidentialité de ces dernières. - - p - b Mesure mise en place - | : Nous acceptons ce risque pour le moment. Le chiffrement côté client, pour les services le supportant, permet de protéger la confidentialité des données. Nous prévoyions à terme de chiffrer les disques durs à froid en plus. - - - h3 Abus des services - p - b Définition du risque - | : Une personne ayant des accès au service, où se les aillant fait voler, peut opérer un déni de service sur notre infrastructure, ou alors nuire à la réputation de notre service sur un réseau fédéré (eg. spam via email). Cela entraine une indisponibilité des services et/ou une dégradation plus ou moins durable de la qualité de ces derniers. - - p - b Mesure mise en place - | : Nous mitigeons actuellement ce risque via la cooptation, où nous faisons confiance aux nouveaux membres et les invitons à bien gérer leurs identifiants. diff --git a/src/Mentions légales.pug b/src/Mentions légales.pug deleted file mode 100644 index ee12734..0000000 --- a/src/Mentions légales.pug +++ /dev/null @@ -1,96 +0,0 @@ -extends _layout.pug - -prepend root - - title = "Mentions légales" - -block content - section - h1 Mentions légales - - h2 Éditeur et hébergeur - - - p - b Deuxfleurs - br - | Deuxfleurs est l'éditeur et l'hébergeur de l'ensemble de ses services et contenus à l'exception de sa - a(href="https://git.deuxfleurs.fr")  forge git - br - | Association loi 1901 déclarée en préfecture d'Ille-et-Vilaine le 29 janvier 2020. - - p - | Numéro RNA : W353020804 - br - | Numéro SIRET : 89961256800019 - - p - | Siège social : Association Deuxfleurs - br - | 10A Allée de Lanvaux - br - | 35700 RENNES - br - | FRANCE - - p - b OVH - br - | OVH est uniquement en charge de l'hébergement de la - a(href="https://git.deuxfleurs.fr")  forge git. - br - | SASU Société par actions simplifiée à associé unique. - - p Numéro SIRET : 42476141900045 - - p - | Siège social : OVH - br - | 2 RUE KELLERMANN - br - | 59100 ROUBAIX - br - | FRANCE - - h3 Direction de la publication - - p - | Quentin Dufour - br - | Adrien Luxey - - h2 Informatique et libertés - - h3 Informations personnelles collectées - - p En France, les données personnelles sont notamment protégées par la loi n° 78-17 du 6 janvier 1978, la loi n° 2004-801 du 6 août 2004, l’article L. 226-13 du Code pénal et la Directive Européenne du 24  octobre 1995. - - p En tout état de cause Deuxfleurs ne collecte des informations personnelles relatives à l’utilisateur (nom, adresse électronique, coordonnées téléphoniques) que pour le besoin des services proposés par les sites du réseau Deuxfleurs. L’utilisateur fournit ces informations en toute connaissance de cause, notamment lorsqu’il procède par lui-même à leur saisie. Il est alors précisé à l’utilisateur des sites du réseau Deuxfleurs le caractère obligatoire ou non des informations qu’il serait amené à fournir. - - h3 Rectification des informations nominatives collectées - - p - | Conformément aux dispositions de l’article 34 de la loi n° 48-87 du 6 janvier 1978, l’utilisateur dispose d’un droit de modification des données nominatives collectées le concernant. Pour ce faire, l’utilisateur envoie à Deuxfleurs : - ul - li un courrier électronique à ca (arobase) deuxfleurs.fr - li un courrier à l’adresse du siège de l’association (indiquée ci-dessus) en indiquant son nom ou sa raison sociale, ses coordonnées physiques et/ou électroniques, ainsi que le cas échéant la référence dont il disposerait en tant qu’utilisateur du site Deuxfleurs. - - p La modification interviendra dans des délais raisonnables à compter de la réception de la demande de l’utilisateur. - - - h2 Limitation de responsabilité - - p Ce site comporte des informations mises à disposition par des communautés ou sociétés externes ou des liens hypertextes vers d’autres sites qui n’ont pas été développés par Deuxfleurs. Le contenu mis à disposition sur le site est fourni à titre informatif. L’existence d’un lien de ce site vers un autre site ne constitue pas une validation de ce site ou de son contenu. Il appartient à l’internaute d’utiliser ces informations avec discernement et esprit critique. La responsabilité de Deuxfleurs ne saurait être engagée du fait des informations, opinions et recommandations formulées par des tiers. - - p Deuxfleurs ne pourra être tenue responsable des dommages directs et indirects causés au matériel de l’utilisateur, lors de l’accès au site, et résultant soit de l’utilisation d’un matériel ne répondant pas aux spécifications techniques requises, soit de l’apparition d’un bug ou d’une incompatibilité. - - p Deuxfleurs ne pourra également être tenue responsable des dommages indirects (tels par exemple qu’une perte de marché ou perte d’une chance) consécutifs à l’utilisation du site. - - p Des espaces interactifs (comme la solution de messagerie instantanée Matrix) sont à la disposition des utilisateurs sur le site Deuxfleurs. Deuxfleurs se réserve le droit de supprimer, sans mise en demeure préalable, tout contenu déposé dans cet espace qui contreviendrait à la législation applicable en France, en particulier aux dispositions relatives à la protection des données. Le cas échéant, Deuxfleurs se réserve également la possibilité de mettre en cause la responsabilité civile et/ou pénale de l’utilisateur, notamment en cas de message à caractère raciste, injurieux, diffamant, ou pornographique, quel que soit le support utilisé (texte, photographie…). - - h2 Limitations contractuelles sur les données techniques - - p Deuxfleurs ne pourra être tenue responsable de dommages matériels liés à l’utilisation du site. - - h2 Propriété intellectuelle - - p Les contenus sont publiés sous la responsabilité des utilisateurs. diff --git a/src/Sources.pug b/src/Sources.pug deleted file mode 100644 index eba1bd9..0000000 --- a/src/Sources.pug +++ /dev/null @@ -1,41 +0,0 @@ -extends _layout.pug - -prepend root - - title = "Sources" - -block content - section - h1 Accéder aux sources des logiciels utilisés - - p Deuxfleurs utilise exclusivement des logiciels libres dans le cadre de son activité. Vous pouvez retrouver ici la liste des sources des logiciels utilisés. - :markdown-it - - [Debian](https://packages.debian.org/) - - [NixOS](https://github.com/NixOS) - - [Nomad](https://github.com/hashicorp/nomad) - - [Consul](https://github.com/hashicorp/consul/) - - [Garage](https://git.deuxfleurs.fr/Deuxfleurs/garage) - - [Tricot](https://git.deuxfleurs.fr/Deuxfleurs/tricot) - - [Bottin](https://git.deuxfleurs.fr/Deuxfleurs/bottin/) - - [Guichet](https://git.deuxfleurs.fr/Deuxfleurs/guichet/) - - [Diplonat](https://git.deuxfleurs.fr/Deuxfleurs/diplonat/) - - [Stolon](https://github.com/sorintlab/stolon) - - [Docker](https://github.com/moby/moby) - - [Ansible](https://github.com/ansible/ansible) - - [Drone](https://github.com/harness/drone) - - [Restic](https://github.com/restic/restic) - - [Cryptpad](https://github.com/xwiki-labs/cryptpad) - - [Sogo](https://github.com/inverse-inc/sogo) - - [alps](git.deuxfleurs.fr/Deuxfleurs/alps) - - [Synapse](https://github.com/matrix-org/synapse) - - [Element](https://github.com/vector-im/element-web) - - [Jitsi](https://github.com/jitsi) - - [Plume](https://github.com/Plume-org/Plume) - - [age](https://github.com/FiloSottile/age) - - [Minio](https://github.com/minio/minio) - - [Proxmox](https://git.proxmox.com/) - - [Grafana](https://github.com/grafana/grafana) - - [Prometheus](https://github.com/prometheus/prometheus) - - [Infra (legacy)](https://git.deuxfleurs.fr/Deuxfleurs/infrastructure) - - [Infra (next)](git.deuxfleurs.fr/Deuxfleurs/nixcfg) - - diff --git a/src/_layout.pug b/src/_layout.pug deleted file mode 100644 index b1ab3a5..0000000 --- a/src/_layout.pug +++ /dev/null @@ -1,48 +0,0 @@ -include _mixin/menu.pug - -block root - doctype html - html(lang="fr") - head - meta(charset='utf-8') - title 💮💮 deuxfleurs - #{title} - link(rel="stylesheet", href="/css/main.css") - meta(name="viewport", content="width=device-width, initial-scale=1.0") - body - aside - header - a#menu(href="#").mobile_inline - svg(viewBox="0 0 100 80", width="40", height="40") - rect(width="100", height="20") - rect(y="30" width="100" height="20") - rect(y="60" width="100" height="20") - - h1 - a(href="/") deuxfleurs - nav.computer_block - section.center - img(alt="emoji fleur", src="/img/flower.svg", width="40") - | - img(alt="emoji fleur", src="/img/flower.svg", width="40") - ul - li - a(href="https://plume.deuxfleurs.fr/timeline/1") Actualités - li - a(href="https://man.deuxfleurs.fr") Wiki - li - a(href="https://guichet.deuxfleurs.fr") Mon compte - hr - +menu(root, element) - - main - block content - - script. - (_ => { - const hamburger = document.getElementById('menu') - hamburger.onclick = _ => { - const nav = document.querySelector('body > aside > header > nav') - console.log(nav.style.display) - nav.style.display = nav.style.display != 'block' ? 'block' : 'none' - } - })() diff --git a/src/_markdown.pug b/src/_markdown.pug deleted file mode 100644 index 9771aeb..0000000 --- a/src/_markdown.pug +++ /dev/null @@ -1,10 +0,0 @@ -extends ./_layout.pug - -prepend root - - if (element.tags.includes('is_index')) - - title = element.nice_path[element.nice_path.length - 1] - - else - - title = element.nice_name - -block content - != markdown diff --git a/src/_mixin/menu.pug b/src/_mixin/menu.pug deleted file mode 100644 index d724eaf..0000000 --- a/src/_mixin/menu.pug +++ /dev/null @@ -1,14 +0,0 @@ -mixin menu(o, element) - ul - each val in o.children - - if (val.type == 'folder' && val.tags.includes('document')) - li - - if (val.tags.includes('has_index')) - a(href=val.url, class=val.index.url == element.url ? 'selected' : null)= val.nice_name - - else - span= val.nice_name - - if (element.url.includes(val.url)) - +menu(val, element) - - else if (val.type == 'file' && val.tags.includes('document') && !val.tags.includes('is_index')) - li - a(href=val.url, class=val.url == element.url ? 'selected' : null)= val.nice_name diff --git a/src/_next/css/main.css b/src/_next/css/main.css deleted file mode 100644 index fbbaa8a..0000000 --- a/src/_next/css/main.css +++ /dev/null @@ -1,82 +0,0 @@ -/* some reset */ -html, body { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; - height: 100%; - font-size: 24px; -} - -/* fonts */ -@font-face { - font-family: 'IM Fell English'; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(../fonts/IMFellEnglish-Italic.ttf) format('truetype'); - 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: 'IM Fell English'; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(../fonts/IMFellEnglish-Regular.ttf) format('truetype'); - 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; -} - -html { - background-color: #fbfcf8; -} - -body { - max-width: 900px; - padding: 1em; - margin: auto; - font-family: 'IM Fell English', Times, Serif; - color: #5c544a; -} - -.hero { - background-image: url("../img/illus.jpg"); - transform: rotate(-2deg); - height: 530px; - background-size: cover; - background-position: 50% 0%; - border-radius: 10px; - margin: -1.8em -1em 3em -1em; -} - -.hero img { - position: absolute; - top: -14px; - left: 25px; - height: 100px; -} - -header { - padding: 1em 0em 2em 0em; -} - -article { - background-color: #f4eccd; - padding: 1em; - border-radius: 10px; -} - -.brand { - font-size: 2em; - float: left; -} - -nav { - float: right; -} - -nav li { - padding: 0.5em; - display: inline; -} diff --git a/src/_next/fonts/IMFellEnglish-Italic.ttf b/src/_next/fonts/IMFellEnglish-Italic.ttf deleted file mode 100644 index 57a7338..0000000 Binary files a/src/_next/fonts/IMFellEnglish-Italic.ttf and /dev/null differ diff --git a/src/_next/fonts/IMFellEnglish-Regular.ttf b/src/_next/fonts/IMFellEnglish-Regular.ttf deleted file mode 100644 index c8481a1..0000000 Binary files a/src/_next/fonts/IMFellEnglish-Regular.ttf and /dev/null differ diff --git a/src/_next/img/illus.jpg b/src/_next/img/illus.jpg deleted file mode 100644 index 6eefb8a..0000000 Binary files a/src/_next/img/illus.jpg and /dev/null differ diff --git a/src/_next/img/paper-clip.png b/src/_next/img/paper-clip.png deleted file mode 100644 index 255912f..0000000 Binary files a/src/_next/img/paper-clip.png and /dev/null differ diff --git a/src/_next/index.pug b/src/_next/index.pug deleted file mode 100644 index edfa5c4..0000000 --- a/src/_next/index.pug +++ /dev/null @@ -1,39 +0,0 @@ -doctype html -html - head - meta(charset="utf-8") - title df #{title} - link(rel="stylesheet", href="css/main.css") - meta(name="viewport", content="width=device-width, initial-scale=1.0") - body - header - .brand Deuxfleurs - nav - ul - li L'association - li Nos services - li Documentation - li - a(href="https://guichet.deuxfleurs.fr") Mon compte - br(style="clear:both") - - main - article - .hero - img(src="img/paper-clip.png") - h1 Cher·e internaute, un autre internet est possible - p - | Arrêtez-vous cinq minutes. Prenez le temps de l'imaginer avec moi. - | Imaginez pouvoir accéder à l'information sans avoir à se demander si c'est une publicité ou non ? - | Imaginez que vos communications avec vos proches ne soient pas espionnées pour prédire votre prochain malus d'assurance ? - | Imaginez un lieux où vos amis verrez le contenu que vous publiez et non un obscure contenu viral ? - // Peut être rajouter des petits dessins genre gribouillage carnet. - - h2 Des cabanes pour se protéger du sombre nuage - p Blabla - - h2 Rejoignez-nous - - footer - p Un footer - diff --git a/src/css/main.css b/src/css/main.css deleted file mode 100644 index e80bdc2..0000000 --- a/src/css/main.css +++ /dev/null @@ -1,323 +0,0 @@ -/* - * FONTS - */ - -@font-face { - font-family: "Heroes"; - src: url('../fonts/texgyreheros-regular.otf') format('truetype'); -} - -/* - * RESET CSS - */ - -* { - font-family: Heroes; - font-size: 1em; - /* We use browser's default */ - margin: 0; - padding: 0; -} - -html { - height: 100% -} - -body { - display: flex; - max-width: 1200px; - flex-direction: row; - margin: auto; -} - -/* - * RESPONSIVE - */ -.mobile_block, -.mobile_inline { - display: none -} - -@media screen and (max-width: 800px) { - body { - flex-direction: column - } - - .computer_block { - display: none - } - - .mobile_block { - display: block - } - - .mobile_inline { - display: inline - } -} - -/* - * CORE TEMPLATE - */ - -/* Header + Menu */ -body>aside>header { - color: white; - background: rgb(12, 144, 110); - background: linear-gradient(0deg, rgb(21, 65, 73) 0%, rgb(55, 141, 100) 50%, rgb(12, 144, 110) 100%); - padding: 1.5rem; - margin: 0.8rem; - border-radius: 0.5rem; - box-shadow: 0px 0px 30px rgba(31, 38, 103, 0.2); -} - -body>aside>header>a>svg { - fill: white; - display: inline; - vertical-align: sub; - margin-right: 1em; -} - -body>aside>header>h1 { - display: inline -} - -body>aside>header a { - color: white; - text-decoration: none; -} - -body>aside>header>nav ul { - list-style-type: none; - padding-left: 1em; -} - -body>aside>header>nav>ul { - padding-left: 0px -} - -body>aside>header>nav a:hover { - text-decoration: underline -} - -body>aside>header>nav .selected { - font-weight: bold -} - -body>aside>header>nav .selected::before { - content: "» " -} - -body>main { - padding: 1.5rem; - max-width: 1200px; -} - - -/* - * TEXT CORE (think markdown) - */ - -h1 { - font-size: 2.5rem -} - -h2 { - font-size: 2.0rem -} - -h3 { - font-size: 1.75rem -} - -h4 { - font-size: 1.50rem -} - -h5 { - font-size: 1.25rem -} - -h6 { - font-size: 1.10rem -} - -h1, -h2, -h3, -h4, -h5, -h6 { - margin-bottom: 1rem -} - -section, -p, -ul, -ol, -table, -pre { - margin-bottom: 1rem -} - -ul, -ol { - padding-left: 1.5em -} - -a { - color: #08634c; -} - -table { - border-collapse: collapse -} - -th { - background-color: #fafafa -} - -td, -th { - border: 1px solid #ddd; - padding: 0.3rem 0.5rem; -} - -pre { - background-color: #1e1e1e; - padding: 1rem; - overflow-x: auto; -} - -code { - font-family: Monospace; - background-color: #1e1e1e; - color: #fff; - padding: 0.25rem 0.4rem; -} - -img { - border-radius: 0.5rem; - box-shadow: 0px 0px 30px rgba(31, 38, 103, 0.2); - margin: 0.5rem; -} - -img.simple { - border-radius: 0px; - box-shadow: none; - margin: 0px; -} - -strong { - background-color: rgb(12, 144, 110); - color: #fff; - padding: 0.20rem 0.4rem; -} - -/* - * UTILS - */ - -/* float */ -.left { - float: left -} - -.right { - float: right -} - -section::after, -p::after { - clear: both; - display: block; - content: ""; -} - -/* center */ -.center { - margin-left: auto; - margin-right: auto; - text-align: center; -} - -/* - * ELEMENTS - */ - -input { - border: 0.1em black solid; - width: 50%; - min-width: 300px; - font-size: 1.6em; - border: 0.1em black solid; - padding: 0.3em; -} - -.button { - padding: 0.3em; - background-color: #519c60; - font-size: 1.6em; - border: 0.1em solid #519c60; - color: white; - margin: 0em 0em 0em 1em; - text-decoration: none; -} - -/* service button */ - -.service-box { - color: #000; - text-decoration: none; - border: 1px solid #ddd; - border-radius: 0.5rem; - width: 250px; - text-align: center; - margin: 1em 1em 0em 0em; - display: block; -} - -.service-box:hover { - background-color: #000; - color: #fff; -} - -.callout { - font-size: 1.2rem; - text-align: center; - position: relative; - margin: 2rem 0; - padding: 1rem; - border: 1px solid rgba(10, 10, 10, 0.25); - border-radius: .2rem; - background-color: #cbf0e6; -} - -.frame { - border-left: 1rem solid #ddd; - padding-left: 1rem; -} - -img.hero { - width: 100%; - margin:-0.5rem; -} - -h1.slogan { - text-align:center; - font-size:2rem; - padding: 2rem 0rem; -} - -.icon { - font-size: 80px; - height: 120px; -} - -section.list { - padding-left:1.5rem; -} - -p.fill { - margin: 2rem 0rem; -} diff --git a/src/fonts/texgyreheros-bold.otf b/src/fonts/texgyreheros-bold.otf deleted file mode 100644 index 2f23b92..0000000 Binary files a/src/fonts/texgyreheros-bold.otf and /dev/null differ diff --git a/src/fonts/texgyreheros-bolditalic.otf b/src/fonts/texgyreheros-bolditalic.otf deleted file mode 100644 index 556b8e1..0000000 Binary files a/src/fonts/texgyreheros-bolditalic.otf and /dev/null differ diff --git a/src/fonts/texgyreheros-italic.otf b/src/fonts/texgyreheros-italic.otf deleted file mode 100644 index ae50725..0000000 Binary files a/src/fonts/texgyreheros-italic.otf and /dev/null differ diff --git a/src/fonts/texgyreheros-regular.otf b/src/fonts/texgyreheros-regular.otf deleted file mode 100644 index ac6c32f..0000000 Binary files a/src/fonts/texgyreheros-regular.otf and /dev/null differ diff --git a/src/fonts/texgyreheroscn-bold.otf b/src/fonts/texgyreheroscn-bold.otf deleted file mode 100644 index dc5f63a..0000000 Binary files a/src/fonts/texgyreheroscn-bold.otf and /dev/null differ diff --git a/src/fonts/texgyreheroscn-bolditalic.otf b/src/fonts/texgyreheroscn-bolditalic.otf deleted file mode 100644 index 2b46b47..0000000 Binary files a/src/fonts/texgyreheroscn-bolditalic.otf and /dev/null differ diff --git a/src/fonts/texgyreheroscn-italic.otf b/src/fonts/texgyreheroscn-italic.otf deleted file mode 100644 index f5159dd..0000000 Binary files a/src/fonts/texgyreheroscn-italic.otf and /dev/null differ diff --git a/src/fonts/texgyreheroscn-regular.otf b/src/fonts/texgyreheroscn-regular.otf deleted file mode 100644 index 5630217..0000000 Binary files a/src/fonts/texgyreheroscn-regular.otf and /dev/null differ diff --git a/src/img/arobase.png b/src/img/arobase.png deleted file mode 100644 index d2a275a..0000000 Binary files a/src/img/arobase.png and /dev/null differ diff --git a/src/img/flower.png b/src/img/flower.png deleted file mode 100644 index 3e3841e..0000000 Binary files a/src/img/flower.png and /dev/null differ diff --git a/src/img/flower.svg b/src/img/flower.svg deleted file mode 100644 index 869788e..0000000 --- a/src/img/flower.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/img/infra.drawio b/src/img/infra.drawio deleted file mode 100644 index d556cc1..0000000 --- a/src/img/infra.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/src/img/servers.jpg b/src/img/servers.jpg deleted file mode 100644 index af4c9d7..0000000 Binary files a/src/img/servers.jpg and /dev/null differ diff --git a/src/index.pug b/src/index.pug deleted file mode 100644 index 4df4932..0000000 --- a/src/index.pug +++ /dev/null @@ -1,75 +0,0 @@ -extends _layout.pug - -prepend root - - title = "deuxfleurs" - -block content - section - img.hero(alt="Photo d'illustration d'un parterre de fleurs en noir et blanc avec un effet tramage.", src="/img/flower.png") - - section - h1.slogan fabriquons un internet convivial - - section - h2 avec des outils sobres - section - a.service-box.left(href='https://man.deuxfleurs.fr/prise_en_main/matrix/') - .icon 💬 - h5 discussion - a.service-box.left(href='https://man.deuxfleurs.fr/prise_en_main/jitsi/') - .icon 📞 - h5 visioconférence - a.service-box.left(href='https://man.deuxfleurs.fr/prise_en_main/web/') - .icon 🌐 - h5 sites web - a.service-box.left(href='https://man.deuxfleurs.fr/prise_en_main/emails/') - .icon 📨 - h5 emails (beta) - a.service-box.left(href='https://man.deuxfleurs.fr/prise_en_main/cryptpad/') - .icon 📄 - h5 collaboration - a.service-box.left(href='https://man.deuxfleurs.fr/prise_en_main/plume/') - .icon ✍️ - h5 blog - - p ⚠️ À part pour la visioconférence et le pad, vous devez avoir un compte pour utiliser ces outils.  Faisons connaissance d'abord 👇 - - section - h2 avec notre propre infrastructure résiliente - - p.fill - img.hero(alt="Une photo en noir et blanc de nos différents serveurs hébergés à domicile.", src="/img/servers.jpg") - - p - | Pour fournir nos outils, nous récupérons d'anciens ordinateurs que nous reconditionnons pour servir de serveurs et que nous installons à nos domiciles. - | Actuellement nous avons des machines à Rennes en Bretagne et à Orsay en Ile de France pour la fourniture des services. Nous avons également des machines à Suresnes en Ile de France pour les sauvegarde. Certains de nos outils techniques sont (temporairement) hébergés en datacenter chez OVH. - | En savoir plus. - - p - | Cette infrastructure atypique nous mène à développer de nouveaux logiciels libres. - | Si vous êtes dans la technique, vous pourriez être intéressé·e par Garage, Bottin, Tricot, Diplonat et nos autres projets. - - - section - h2 avec des valeurs fortes - - section.list - div ⇨ la coopération - eg. promouvoir l'intéropérabilité, les communs, le libre, et les formats de données ouverts - div ⇨ l'autonomie - eg. gérer nos propres moyens de communications, prendre nos propres décisions - div ⇨ la solidarité - eg. partager le savoir, partager les ressources informatiques, s'entraider pour la gestion des services - div ⇨ la liberté - eg. permettre à toutes et tous de s'exprimer, respecter la vie privée - - p - a(href="https://plume.deuxfleurs.fr/timeline/1") Suivez notre actualité, réflexions et analyses sur notre blog Plume - - section - h2 rejoignez-nous ! - p.spacing L'accès à nos services est à prix libre, se fait sur demande directement à un membre ou par email et est conditionné par les ressources disponibles, à la fois matérielles et humaines. - - p.spacing Nous encourageons nos usager·es ainsi que toute personne souhaitant collaborer à rejoindre l'association afin de participer à sa gestion. L'admission se fait par cooptation, soit directement si vous connaissez déjà un membre, soit en échangeant d'abord avec nous par email ou sur Matrix. L'objectif de la cooptation est de s'assurer que nos futurs membres partageront bien les valeurs de notre association. La cotisation est de 10 euros par an. - - p.spacing - | Si vous connaissez un membre de l'association, contactez le directement ! - br - | Sinon, vous pouvez nous écrire à coucouarobasedeuxfleurs.fr ou nous rejoindre sur notre salon Matrix #deuxfleurs:deuxfleurs.fr pour un premier contact. - diff --git a/src/robots.txt b/src/robots.txt deleted file mode 100644 index c2a49f4..0000000 --- a/src/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Allow: / diff --git a/style-bon.css b/style-bon.css new file mode 100644 index 0000000..3635d6e --- /dev/null +++ b/style-bon.css @@ -0,0 +1,865 @@ +/*PARAMETRES GENERAUX*/ +:root{ + --big_margin:100px; + --med_margin:50px; + --small_margin:10px; + --day-background: #fdfff9; + --day-highlight-color: white; + --day-highlight-bg: darkgreen; + --night-highlight-color: #ebebed; + --night-highlight-bg: #565a4d; + --night-background: #242526;/*#3c3c39;*/ + --txt-night: #ebebed;/*#c7c4d4;*/ + color-scheme: light dark; +/* + --menu: pink; + --jardin: darkseagreen; + --infras: gold; + --rennes: orange; + --orsay: chartreuse; + --txt_infras: bisque; + --outils: coral; + --liste_outils: aliceblue; + --txt_outils: aquamarine; + --valeurs: grey; + --ronce: cornflowerblue; + --liste_valeurs: brown; + --connaissance: chocolate; + --txt_connaissance: crimson; + --calendrier: darkkhaki; + --footer: deeppink; + --lightgrey: lightgrey;*/ + +} + +html, body, main{ + margin:0; + padding: 0; + font-size: 13px; +} + +body{ + font-family: monospace; + color: black; +} + +pre{ + padding: 0; + margin: 0; + font-size: 1rem; +} + +p{ + font-size: 1rem; +} + +a{ + color: darkgreen; +} + +h1:after, h2:after{ + content:'\A___________________________________\A"""""""""""""""""""""""""""""""""""'; +} + +h2, h1{ + font-size: 1rem; + font-weight: normal; + margin: 0px; + padding: 0px; + text-align: left; +} + +h2, h1{ + text-transform: uppercase; + white-space:pre; + overflow: hidden; +} + +img{ + width: 100%; +} + +#txt_infras, #txt_outils, #txt_connaissance{ + line-height: 1.3rem; + text-align: justify; + text-justify: inter-character; + hyphens: auto; + word-spacing: -2px; + -ms-hyphens: auto; + -webkit-hyphens: auto; + -moz-hyphens: auto; + margin-top: 0; +} + +.noscroll{ + overflow: hidden; +} + +pre.center{ + font-size: 1rem; + display: flex; + justify-content: center; +} + +div#calendrier > pre.center{ +justify-content: right; +} + +#calendrier #mois_actuel{ + margin-bottom: 1rem; +} + +#mois_actuel, #mois_suivant{ + text-align: center; +} + +.highlight{ + color: var(--day-highlight-color); + background-color: var(--day-highlight-bg); +} + +#txt_connaissance li{ + margin-bottom: 1rem; +} + +#txt_connaissance p{ + margin-top: 0px; +} + +pre.center > a{ + font-size: 1rem; + display: contents; + text-decoration: 1px black solid; +} + +/*GESTION DE LA GRILLE DU DOCUMENT*/ +div#container{ + background-color: var(--day-background); + display: grid; + grid-template-columns: [main-col-start] repeat(12, calc(100% / 12) [main-col-sep]); + grid-template-rows: + [main-row-debut] auto [main-row-fin] + var(--big_margin) + [footer-start] auto [footer-end] + ; +} + +/*GESTION DE LA GRILLE DU MAIN*/ +main{ + display: grid; + grid-template-columns: [col-start] repeat(12, calc(100% / 12) [col-sep]); + grid-template-rows: + [row-start] var(--med_margin) [h1-start] auto [h1-end] auto [jardin-end] + repeat(3, + var(--big_margin) + [title-start] auto [title-end] + var(--med_margin) + [illu-start] auto [illu-end] auto [illu-extended-end] + var(--med_margin) + [txt-start] auto [txt-end]) + var(--big_margin) + [title-start-contact] auto [title-end-contact] + var(--med_margin) + [txt-start-contact] auto [txt-end-contact] auto [cal-end-contact] /* au lieu de mettre auto on pourrait mettre 100px ici pour avoir les 2 cadres de la même taille*/ + ; +} + +/*POSITIONNEMENT SUR LA GRILLE PRINCIPALE*/ +nav#menu{ + /* + grid-area: row-start / col-sep 6 / end-nav / col-sep 12;*/ + background-color: var(--day-background); + display: flex; + justify-content: flex-end; + flex-direction: column; + position: fixed; + bottom: 1rem; + right: 1rem; +} + +main{ + grid-area: main-row-debut / main-col-start / main-row-fin / main-col-sep 12; +} + +.icone > pre{ + padding-top: 1rem; + color: black; +} + +.icone{ + position : relative; + display: inline-block; + text-decoration: none; +} + +.icone .img_top{ + display: none; + position: absolute; + top: 0; + left: 0; + z-index: 99; + background-color: var(--day-background); + color: darkgreen; +} + +.icone:hover .img_top{ + display: inline; +} + +.icone a{ + text-decoration: none; + color:black; +} + +nav#menu > a{ + display: block; + color: black; + text-decoration: none; +} + +nav#menu > a:hover{ + color: darkgreen; + text-decoration: none; +} + +h1#deuxfleurs{ + grid-area: h1-start / col-sep 1 / h1-end / col-sep 12; +} + +div#jardin{ + background-color: var(--jardin); + grid-area: row-start / col-start / jardin-end / col-sep 12; + display: flex; + flex-direction: column; + justify-content: center; + height: 100vh; +} + +div#jardin p{ + display: flex; + justify-content:center; +} + +h2#infras{ + background-color: var(--infras); + grid-area: title-start 1 / col-sep 1 / title-end 1 / col-sep 12; +} + +div#rennes{ + background-color: var(--rennes); + grid-area: illu-start 1 / col-sep 1 / illu-end 1 / col-sep 6; + overflow: hidden; + /*height: 450px;*/ +} + +div#orsay{ + background-color: var(--orsay); + grid-area: illu-start 1 / col-sep 6 / illu-end 1 / col-sep 11; + overflow: hidden; + /*height:450px;*/ +} + +p#txt_infras{ + background-color: var(--txt_infras); + grid-area: txt-start 1 / col-sep 1 / txt-end 1 / col-sep 7; +} + +h2#outils{ + background-color: var(--outils); + grid-area: title-start 2 / col-sep 1 / title-end 2 / col-sep 12; +} + +section#liste_outils{ + background-color: var(--liste_outils); + grid-area: illu-start 2 / col-sep 7 / illu-end 2 / col-sep 11; +} + +section#liste_outils > a > div > p{ + text-align: center; +} + +section#liste_outils > a{ + /*display: contents;*/ + color: black; + text-decoration: none; +} + +section#liste_outils > a:hover{ + color: darkgreen; +} + +div#txt_outils{ + background-color: var(--txt_outils); + grid-area: txt-start 2 / col-sep 1 / txt-end 2 / col-sep 7; +} + +h2#valeurs{ + background-color: var(--valeurs); + grid-area: title-start 3 / col-sep 1 / title-end 3 / col-sep 12; +} + +div#ronce{ + background-color: var(--ronce); + grid-area: illu-start 3 / col-sep 2 / illu-end 3 / col-sep 10; + padding: 0.5rem; + filter: grayscale(100%); + border: 1px dashed black; + transition: filter 0.15s ease 0s; +} + +div#ronce:hover{ + filter: none; +} + +section#liste_valeurs{ + background-color: var(--liste_valeurs); + grid-area: txt-start 3 / col-sep 2 / txt-end 3 / col-sep 10; +} + +h2#connaissance{ + background-color: var(--connaissance); + grid-area: title-start-contact / col-sep 1 / title-end-contact / col-sep 12; +} + +div#txt_connaissance{ + background-color: var(--txt_connaissance); + grid-area: txt-start-contact / col-sep 1 / txt-end-contact / col-sep 6; +} + +div#calendrier{ + background-color: var(--calendrier); + grid-area: txt-start-contact / col-sep 7 / txt-end-contact / col-sep 10; + overflow: hidden; +} + +.mois_actuel, .mois_suivant{ + overflow: hidden; +} + +footer{ + background-color: var(--footer); + grid-area: footer-start / main-col-start / footer-end / main-col-sep 12; +} + +#liens{ + text-align: center; + margin-bottom: var(--med_margin) +} + +/*GESTION DE LA GRILLE LISTE DE NOS VALEURS*/ + +section#liste_valeurs{ + /*on ne peut pas faire plusieurs opérations en même temps dans calc, il faut un calc par opération*/ + --demie-goutiere: calc(var(--small_margin) / 2); + --valeurs_width: calc(50% - var(--demie-goutiere)); + display: grid; + grid-template-columns: + [col2-start] var(--valeurs_width) [col2-mid-left] /*bloc de gauche*/ + var(--small_margin) /*goutière*/ + [col2-mid-right] var(--valeurs_width) [col2-end]; /*bloc de droite*/ + grid-template-rows: + [line1-start] auto [line1-end] + var(--small_margin) + [line2-start] auto [line2-end] + var(--small_margin) + [suivre-start] auto [suivre-end]; +} + +p#coop{ + background-color: var(--lightgrey); + grid-area: line1-start / col2-start / line1-end / col2-mid-left; + text-align: center; +} + +p#autonomie{ + background-color: var(--lightgrey); + grid-area: line1-start / col2-mid-right / line1-end / col2-end; +} + +p#solidarite{ + background-color: var(--lightgrey); + grid-area: line2-start / col2-start / line2-end / col2-mid-left; +} + +p#liberte{ + background-color: var(--lightgrey); + grid-area: line2-start / col2-mid-right / line2-end / col2-end; +} + +p#suivre { + background-color: var(--lightgrey); + grid-area: suivre-start / col2-start / suivre-end / col2-end; + text-align: center; +} + +#coop, #autonomie, #solidarite, #liberte{ + padding: 2rem; + border: 1px dashed black; + text-align: center; +} + +section#liste_outils { + display: grid; + grid-template-columns: 1fr 1fr; + column-gap: 1rem; + row-gap: 1rem; +} + +section#liste_outils > a > div { + overflow: hidden; +} + +div#ordinateur { + background-color: var(--lightgrey); + grid-area: illu-start 2 / col-start / illu-end 2 / col-sep 7; +} + + +div#discussion { + background-color: var(--lightgrey); + grid-area: line1-start / col-start / line1-end / col-mid-left; +} + +div#visio { + background-color: var(--lightgrey); + grid-area: line2-start / col-start / line2-end / col-mid-left; +} + +div#sites-web { + background-color: var(--lightgrey); + grid-area: line3-start / col-start / line3-end / col-mid-left; +} + +div#emails { + background-color: var(--lightgrey); + grid-area: line1-start / col-mid-right / line1-end / col-end; +} + +div#collaboration { + background-color: var(--lightgrey); + grid-area: line2-start / col-mid-right / line2-end / col-end; + +} + +div#blog { + background-color: var(--lightgrey); + grid-area: line3-start / col-mid-right / line3-end / col-end; +} + + +nav ul{ + list-style: none; + padding: 0px; + margin: 0px; +} + + + + + + +/*GESTION DES MEDIA QUERIES*/ + +/*Tablettes et petits ordinateurs*/ +@media (max-width: 1500px) and (min-width: 801px){ + +h2, h1{ + font-size: 1rem; + font-weight: normal; + margin: 0px; + padding: 0px; +} + +h2, h1{ + text-transform: uppercase; + white-space:pre; + overflow: hidden; +} + +h1#deuxfleurs{ + grid-area: h1-start / col-sep 1 / h1-end / col-sep 12; +} + +h2#infras{ + grid-area: title-start 1 / col-sep 1 / title-end 1 / col-sep 12; +} + +h2#outils{ + grid-area: title-start 2 / col-sep 1 / title-end 2 / col-sep 12; +} + +h2#valeurs{ + grid-area: title-start 3 / col-sep 1 / title-end 3 / col-sep 12; +} + +h2#connaissance{ + grid-area: title-start-contact / col-sep 1 / title-end-contact / col-sep 12; +} + +div#rennes{ + grid-area: illu-start 1 / col-sep 2 / illu-end 1 / col-sep 6; + margin-right: 0.5rem; +} + +div#orsay{ + grid-area: illu-start 1 / col-sep 6 / illu-end 1 / col-sep 10; + margin-left: 0.5rem; +} + +div#rennes, div#orsay{ + border: 1px solid black; + border-radius: 5px; +} + +div#rennes pre.center, div#orsay pre.center{ + margin-top: -5px; + margin-bottom: -5px +} + +div#orsay pre.center{ + justify-content: center; +} + +p#txt_infras{ + background-color: var(--txt_infras); + grid-area: txt-start 1 / col-sep 2 / txt-end 1 / col-sep 10; +} + +div#txt_outils{ + background-color: var(--txt_outils); + grid-area: txt-start 2 / col-sep 2 / txt-end 2 / col-sep 10; +} + +div#txt_connaissance{ + grid-area: txt-start-contact / col-sep 2 / txt-end-contact / col-sep 10; +} + +div#txt_connaissance ul{ + padding-left: 0px; + list-style-position: inside; +} + +div#ordinateur { + grid-area: illu-start 2 / col-sep 1 / illu-end 2 / col-sep 11; + overflow: hidden; +} + +section#liste_outils{ + background-color: var(--liste_outils); + grid-area: illu-end 2 / col-sep 1 / illu-extended-end 2 / col-sep 11; + margin-top: var(--med_margin); +} + +/* +section#liste_outils { + --demie-goutiere: calc(var(--small_margin) / 2); + --valeurs_width: calc(33% - var(--demie-goutiere)); + display: grid; + grid-template-columns: + [col-tiers1-start] var(--valeurs_width) [col-tiers1-end] bloc de gauche + var(--small_margin) goutière + [col-tiers2-start] var(--valeurs_width) [col-tiers2-end] + var(--small_margin) goutière + [col-tiers3-start] var(--valeurs_width) [col-tiers3-end]; bloc de droite + + grid-template-rows: + [line1-start] auto [line1-end] + var(--small_margin) + [line2-start] auto [line2-end] + var(--small_margin) + [faisons-connaissance-start] auto [faisons-connaissance-end]; + ); +} +*/ + +section#liste_outils{ + display: grid; + grid-template-columns: 1fr 1fr 1fr; + row-gap: 1rem; + column-gap: 1rem; +} + +div#discussion { + background-color: var(--lightgrey); + grid-area: line1-start / col-tiers1-start / line1-end / col-tiers1-end; + overflow: hidden; +} + +div#emails { + background-color: var(--lightgrey); + grid-area: line1-start / col-tiers2-start / line1-end / col-tiers2-start; +} + +div#visio { + background-color: var(--lightgrey); + grid-area: line1-start / col-tiers3-start / line1-end / col-tiers3-end; + overflow: hidden; +} + +/**/ + +div#sites-web { + background-color: var(--lightgrey); + grid-area: line2-start / col-tiers1-start / line2-end / col-tiers1-end; + overflow: hidden; +} + +div#collaboration { + background-color: var(--lightgrey); + grid-area: line2-start / col-tiers2-start / line2-end / col-tiers2-end; + +} + +div#blog { + background-color: var(--lightgrey); + grid-area: line2-start / col-tiers3-start / line2-end / col-tiers3-end; +} + +div#ronce{ + grid-area: illu-start 3 / col-sep 1 / illu-end 3 / col-sep 11; +} + +div#calendrier{ + margin-top: var(--med_margin); + grid-area: txt-end-contact / col-sep 1 / cal-end-contact / col-sep 11; + display: flex; + justify-content: center; +} + +#mois_actuel, #mois_suivant{ + overflow: hidden; +} + +#mois_actuel{ + margin-bottom: 0px; + margin-right: 2rem; +} + +} + + +/*Smartphones*/ +@media (max-width: 800px){ + +:root{ + --big_margin:50px; + --med_margin:25px; + --small_margin:5px; +} + +h1:before, h1:after{ + content: ''; +} + +h2:before{ + content: '______________________________________________________________________\A""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""\A* '; +} + +h2:after{ + content: ' *\A______________________________________________________________________\A""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""'; +} + +h2, h1{ + font-size: 1rem; + text-align: center; +} + +h2, h1{ + text-transform: uppercase; + white-space: pre; + overflow: hidden; +} + +h1#deuxfleurs{ + grid-area: h1-start / col-start / h1-end / col-sep 12; +} + +h2#infras{ + grid-area: title-start 1 / col-start / title-end 1 / col-sep 12; +} + +h2#outils{ + grid-area: title-start 2 / col-start / title-end 2 / col-sep 12; +} + +h2#valeurs{ + grid-area: title-start 3 / col-start / title-end 3 / col-sep 12; +} + +h2#connaissance{ + grid-area: title-start-contact / col-start / title-end-contact / col-sep 12; +} + +div#jardin{ + grid-area: row-start / col-sep 1 / jardin-end / col-sep 11; +} + +nav#menu{ + position: fixed; + width: 100%; + right: 0px; + bottom: 0px; + padding-bottom: 1rem; + background-color: --day-background; + z-index: 1; + border-top: black 1px dashed; +} + +nav#menu ul{ + list-style: none; + flex-direction: row; + display: flex; + justify-content: space-evenly; + padding: 0px; + margin: 0px; + width: 100%; +} + +div#txt_connaissance ul{ + padding-left: 0px; + list-style-position: inside; + margin-bottom: var(--med_margin); +} + +.icone > pre{ + font-size: 0.8rem; +} + +#illustration-accueil > pre.center{ + font-size: 0.85rem; +} + +div#orsay{ + display: none; +} + +div#rennes{ + grid-area: illu-start 1 / col-sep 1 / illu-end 1 / col-sep 11; + border: 1px solid black; + border-radius: 5px; +} + +div#rennes pre{ + margin-top: -5px; + margin-bottom: -5px; +} + +pre{ + font-size: 0.95rem; +} + +#txt_infras, #txt_outils, #txt_connaissance{ + text-align: left; + hyphens: none; + margin-top: 0; + hyphens: none; + word-spacing: -2px; + -ms-hyphens: none; + -webkit-hyphens: none; + -moz-hyphens: none; + margin-top: 0; +} + +p#txt_infras{ + background-color: var(--txt_infras); + grid-area: txt-start 1 / col-sep 1 / txt-end 1 / col-sep 11; +} + +div#txt_outils{ + background-color: var(--txt_outils); + grid-area: txt-start 2 / col-sep 1 / txt-end 2 / col-sep 11; +} + +div#txt_connaissance{ + grid-area: txt-start-contact / col-sep 1 / txt-end-contact / col-sep 11; +} + +div#ordinateur { + display: none; +} + +section#liste_outils { + display: block; +} + +section#liste_outils{ + grid-area: illu-start 2 / col-start / illu-end 2 / col-sep 12; + font-size: 1rem; +} + +section#liste_outils pre{ + font-size: 1rem; +} + +section#liste_outils > a > div{ + margin-bottom: 1rem; +} + +div#ronce{ + grid-area: illu-start 3 / col-sep 1 / illu-end 3 / col-sep 11; + border: none; + padding: 0px; +} + +#coop, #autonomie, #solidarite, #liberte{ + padding: 1rem; + margin: 0px; +} + +#suivre{ + margin-top: 2rem; +} + +section#liste_valeurs{ + grid-area: txt-start 3 / col-sep 1 / txt-end 3 / col-sep 11; +} + +section#liste_valeurs .description{ + display: none; +} + +div#calendrier{ + grid-area: txt-end-contact / col-sep 1 / cal-end-contact / col-sep 11; + display: none; +} + +div#calendrier > pre.center { +justify-content: center; +} + +footer pre.center{ + font-size: 0.85rem; +} + +#liens{ + text-align: center; + margin-bottom: 12rem; +} + +} + +@media (prefers-color-scheme: dark) { + div#container, nav#menu, body{ + background-color: var(--night-background); + } + p, pre, ul, li, a, a:hover, h1, h2, footer{ + color: var(--txt-night); + } + .highlight{ + color: var(--night-highlight-color); + background-color: var(--night-highlight-bg); + } + .icone > pre{ + color: var(--txt-night); + } + .icone .img_top{ + background-color: var(--night-background); + color: var(--txt-night); + } + .icone a{ + color: var(--txt-night); + } + div#ronce, #coop, #autonomie, #solidarite, #liberte, nav#menu, div#rennes, div#orsay{ + border-color: var(--txt-night); + } +}