diff options
33 files changed, 522 insertions, 24 deletions
@@ -19,6 +19,3 @@ yarn-error.log* | |||
19 | *.njsproj | 19 | *.njsproj |
20 | *.sln | 20 | *.sln |
21 | *.sw? | 21 | *.sw? |
22 | |||
23 | # App configuration | ||
24 | public/config.yml | ||
diff --git a/public/assets/tools/adminer.png b/public/assets/tools/adminer.png new file mode 100644 index 0000000..f5923d8 --- /dev/null +++ b/public/assets/tools/adminer.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/buildbot.png b/public/assets/tools/buildbot.png new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/public/assets/tools/buildbot.png | |||
diff --git a/public/assets/tools/buildbot.svg b/public/assets/tools/buildbot.svg new file mode 100644 index 0000000..4972a11 --- /dev/null +++ b/public/assets/tools/buildbot.svg | |||
@@ -0,0 +1,13 @@ | |||
1 | <svg xmlns="http://www.w3.org/2000/svg" width="300" height="300" fill-rule="evenodd" aria-label="Nut" stroke-width="5" stroke="#000" stroke-linejoin="round"> | ||
2 | <defs> | ||
3 | <linearGradient id="a" x1="61.3" x2="61.3" y1="31.7" y2="194.3" gradientTransform="matrix(1.28514 0 0 .76264 1.5 .5)" gradientUnits="userSpaceOnUse"> | ||
4 | <stop offset="0%" stop-color="#8da6d8"/> | ||
5 | <stop offset="100%" stop-color="#2e5cb8"/> | ||
6 | </linearGradient> | ||
7 | </defs> | ||
8 | <path d="M10.7 205.4v-43l101.9 91.5v42.5z" fill="#24478f" stroke-width="4.9"/> | ||
9 | <path d="M112.7 254l139-33.7v43.2l-139 33.5v-43z" fill="#2e5cb8" stroke-width="4.9"/> | ||
10 | <path d="M251.8 220.3v43.2l37.2-125v-43z" fill="#193366" stroke-width="4.9"/> | ||
11 | <path d="M187.2 4L289 95.5l-37.2 124.8-139.2 33.5-101.8-91.4L48 37.5zm-3.5 72.6c32 16.7 43 53.6 24.4 82.5-18.4 28.8-59.6 38.7-91.8 22-32-16.5-43-53.6-24.4-82.4 18.3-28.9 59.4-38.9 91.7-22.2z" fill="#8da6d8" stroke-width="4.9"/> | ||
12 | <path d="M85.5 146a54.8 54.8 0 0 1 6-47.3c18.8-28.9 60-38.8 92-22 27.5 14.3 39.6 43.4 30.7 69.5a61.8 61.8 0 0 0-30.6-35c-32.2-16.6-73.4-6.7-92 22.2a57.4 57.4 0 0 0-6 12.8z" fill="url(#a)" stroke-width="4.9"/> | ||
13 | </svg> \ No newline at end of file | ||
diff --git a/public/assets/tools/commento.svg b/public/assets/tools/commento.svg new file mode 100644 index 0000000..39da47a --- /dev/null +++ b/public/assets/tools/commento.svg | |||
@@ -0,0 +1,10 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <svg viewBox="0 0 105.65 105.65" xmlns="http://www.w3.org/2000/svg"> | ||
3 | <g transform="translate(0) scale(2.113)" fill="#1e2127" name="monogram_container" rel="inversefill" xmlns:name="monogram_container_inversefill"> | ||
4 | <title xmlns="http://www.w3.org/2000/svg">assets</title> | ||
5 | <circle cx="25" cy="25" r="25" xmlns="http://www.w3.org/2000/svg"/> | ||
6 | </g> | ||
7 | <g transform="translate(26.5 5.65)" fill="#fff" name="monogram" rel="symbolfill" xmlns:name="monogram_symbolfill"> | ||
8 | <path d="m13.95 46.575v0.225c-0.075 0.15-0.075 0.3-0.075 0.45 0 0.225 0.075 0.375 0.075 0.525v0.525s0 0.3 0.075 0.525c0 0.15 0 0.3 0.075 0.525 0 0.15 0 0.3 0.075 0.375 0 0.225 0.075 0.375 0.075 0.525s0.075 0.3 0.15 0.45c0.075 0.3 0.15 0.6 0.225 0.975l0.225 0.45c0 0.15 0.075 0.225 0.15 0.375 0.075 0.3 0.225 0.6 0.375 0.9 0.075 0.15 0.15 0.3 0.3 0.525 0.075 0.15 0.15 0.3 0.225 0.375 0.15 0.3 0.375 0.6 0.525 0.9l0.3 0.3c0.075 0.15 0.15 0.3 0.225 0.375 0.225 0.225 0.45 0.525 0.675 0.75l0.675 0.675c0.3 0.3 0.525 0.45 0.825 0.675 0.225 0.225 0.45 0.45 0.75 0.6 0.525 0.375 1.05 0.75 1.65 0.975 0.15 0.075 0.3 0.15 0.375 0.225 0.225 0.075 0.375 0.15 0.6 0.225 0.15 0.075 0.225 0.075 0.375 0.15s0.3 0.15 0.45 0.15c0.375 0.15 0.675 0.225 0.975 0.3s0.675 0.15 0.975 0.225 0.675 0.075 0.975 0.15c0.3 0 0.6 0.075 0.9 0.075h1.05c0.3 0 0.675 0 1.05-0.075 0.6-0.075 1.275-0.15 1.875-0.3s1.2-0.375 1.8-0.6c0.15-0.075 0.3-0.075 0.45-0.15s0.3-0.15 0.525-0.225h4.95c-0.075 0-0.15 0.075-0.15 0.15-0.075 0-0.15 0.075-0.225 0.15-0.45 0.375-0.975 0.75-1.5 1.125-0.225 0.15-0.525 0.3-0.825 0.45-0.3 0.225-0.6 0.375-0.9 0.525-0.075 0.075-0.225 0.075-0.375 0.15l-0.45 0.225c-0.3 0.15-0.6 0.225-0.9 0.375-0.3 0.075-0.6 0.225-0.9 0.3-0.225 0.075-0.375 0.075-0.525 0.15-0.15 0-0.3 0.075-0.45 0.075-0.15 0.075-0.3 0.075-0.525 0.15h-0.15c-0.15 0.075-0.225 0.075-0.375 0.075-0.3 0.075-0.6 0.075-0.975 0.15-0.6 0.075-1.275 0.075-1.95 0.075h-0.45-0.45c-0.3 0-0.675-0.075-0.975-0.075-0.375-0.075-0.675-0.15-1.05-0.15l-0.9-0.225c-0.375-0.075-0.675-0.225-1.05-0.3-0.225-0.075-0.525-0.225-0.825-0.3-0.6-0.225-1.2-0.525-1.8-0.75-0.3-0.15-0.6-0.3-0.825-0.525-0.3-0.15-0.6-0.3-0.825-0.525-0.15-0.075-0.3-0.15-0.375-0.225-0.15-0.075-0.3-0.225-0.375-0.3-0.15-0.075-0.225-0.15-0.375-0.225l-0.375-0.375c-0.525-0.375-0.975-0.825-1.425-1.35-0.075-0.075-0.225-0.225-0.3-0.375-0.15-0.075-0.225-0.225-0.375-0.375-0.225-0.225-0.375-0.525-0.6-0.75-0.075-0.15-0.225-0.3-0.3-0.45s-0.15-0.225-0.225-0.375c-0.075-0.075-0.15-0.225-0.225-0.375-0.15-0.15-0.225-0.3-0.3-0.45-0.15-0.3-0.3-0.525-0.45-0.825s-0.3-0.6-0.375-0.9c-0.15-0.375-0.3-0.675-0.375-0.975-0.075-0.15-0.15-0.3-0.15-0.45-0.075-0.15-0.075-0.3-0.15-0.45-0.075-0.3-0.15-0.6-0.225-0.975l-0.225-0.9c0-0.15 0-0.3-0.075-0.45v-0.3s-0.075-0.15-0.075-0.225v-0.45-0.525c-0.075-0.675-0.075-1.35 0-2.025s0.15-1.275 0.225-1.95l0.225-0.9s0.225-0.675 0.3-0.975c0-0.15 0.075-0.225 0.15-0.375 0.075-0.225 0.075-0.375 0.15-0.525 0.15-0.3 0.225-0.6 0.375-0.825l0.45-0.9c0.075-0.15 0.15-0.375 0.225-0.525s0.15-0.3 0.3-0.375l0.225-0.45s0.15-0.225 0.225-0.375 0.225-0.3 0.3-0.45c0.15-0.075 0.225-0.225 0.3-0.375 0.375-0.525 0.825-0.975 1.275-1.425 0.225-0.225 0.45-0.525 0.75-0.675 0.225-0.225 0.45-0.45 0.75-0.675 0.075-0.075 0.225-0.15 0.375-0.3 0.075-0.075 0.225-0.15 0.3-0.225 0.15-0.075 0.3-0.225 0.45-0.3 0.075-0.075 0.225-0.15 0.375-0.225 0.525-0.375 1.125-0.675 1.725-0.975l0.45-0.225c0.075 0 0.225-0.075 0.375-0.15 0.3-0.15 0.675-0.225 0.975-0.375 0.3-0.075 0.6-0.225 0.975-0.3 0.15 0 0.3-0.075 0.45-0.075 0.15-0.075 0.3-0.075 0.45-0.15 0.3-0.075 0.6-0.15 0.975-0.15 0.15 0 0.3-0.075 0.45-0.075 0.225 0 0.375-0.075 0.525-0.075 0.675-0.075 1.275-0.075 1.95-0.075 0.375 0 0.675 0.075 1.05 0.075 0.3 0 0.675 0.075 0.975 0.15 0.3 0 0.6 0.075 0.9 0.15 0.225 0 0.375 0.075 0.525 0.075 0.15 0.075 0.3 0.075 0.45 0.075 0.6 0.225 1.2 0.375 1.8 0.6 0.15 0.075 0.375 0.15 0.525 0.225l0.45 0.225s0.3 0.15 0.375 0.225l1.35 0.675c0.225 0.15 0.525 0.375 0.75 0.525 0.15 0.075 0.3 0.225 0.375 0.3 0.075 0 0.15 0.075 0.225 0.15 0.075 0 0.15 0.075 0.15 0.15 0.15 0.075 0.3 0.15 0.375 0.225 0.15 0.15 0.3 0.225 0.375 0.375h-4.875c-0.075 0-0.075 0-0.15-0.075-0.3-0.075-0.6-0.225-0.9-0.375-0.15-0.075-0.3-0.15-0.525-0.15-0.15-0.075-0.3-0.15-0.45-0.15-0.3-0.15-0.6-0.225-0.9-0.3s-0.675-0.075-0.975-0.15c-0.675-0.15-1.35-0.15-2.025-0.225-0.6 0-1.275 0-1.875 0.15-0.675 0.075-1.35 0.15-1.95 0.375-0.375 0.075-0.675 0.15-0.975 0.3-0.15 0-0.3 0.075-0.45 0.15-0.15 0-0.225 0.075-0.375 0.15-0.225 0.075-0.375 0.15-0.6 0.225-0.075 0.075-0.225 0.15-0.375 0.225-0.3 0.15-0.6 0.3-0.9 0.525-0.225 0.15-0.525 0.3-0.75 0.45-0.225 0.225-0.525 0.375-0.75 0.6-0.15 0.075-0.225 0.225-0.375 0.3-0.15 0.15-0.3 0.225-0.375 0.375-0.3 0.225-0.525 0.45-0.75 0.75-0.225 0.225-0.375 0.45-0.6 0.675-0.075 0.15-0.15 0.225-0.3 0.375-0.075 0.15-0.15 0.225-0.3 0.375l-0.225 0.45c-0.075 0.075-0.15 0.225-0.225 0.375s-0.225 0.225-0.3 0.375c-0.075 0.225-0.15 0.375-0.225 0.6-0.075 0.075-0.15 0.225-0.15 0.3-0.075 0.15-0.225 0.3-0.225 0.525-0.15 0.3-0.3 0.6-0.375 0.9s-0.225 0.6-0.3 0.975c0 0.15-0.075 0.225-0.075 0.375-0.075 0.15-0.075 0.375-0.075 0.525-0.075 0.15-0.075 0.3-0.075 0.45-0.075 0.225-0.075 0.375-0.075 0.525-0.075 0.3-0.075 0.675-0.075 0.975zm28.8 13.125h9.9s-0.075 0.15-0.075 0.225c-0.15 0.225-0.3 0.525-0.45 0.75-0.15 0.3-0.3 0.6-0.45 0.825-0.075 0.15-0.225 0.3-0.3 0.45-0.075 0.075-0.15 0.225-0.225 0.375s-0.15 0.225-0.225 0.375c-0.15 0.15-0.225 0.225-0.3 0.375s-0.15 0.3-0.3 0.375c0 0.075-0.075 0.15-0.075 0.225-0.075 0-0.075 0.075-0.075 0.075l-0.075 0.075c0 0.075-0.075 0.075-0.075 0.075 0 0.075-0.075 0.075-0.075 0.15l-0.15 0.15c-0.075 0.15-0.225 0.3-0.3 0.45-0.45 0.45-0.825 0.975-1.275 1.425-0.225 0.225-0.45 0.45-0.6 0.675-0.3 0.225-0.525 0.45-0.825 0.75-0.45 0.375-0.9 0.825-1.425 1.2-0.45 0.375-0.975 0.825-1.5 1.125-0.15 0.15-0.375 0.3-0.525 0.45-0.075 0-0.225 0.075-0.3 0.15-0.3 0.225-0.6 0.375-0.9 0.6-0.6 0.3-1.2 0.675-1.8 0.975s-1.2 0.525-1.8 0.825c-0.525 0.225-1.125 0.45-1.725 0.675-0.6 0.15-1.275 0.375-1.875 0.525-0.375 0.075-0.675 0.15-1.05 0.3-0.15 0-0.3 0.075-0.45 0.075-0.225 0-0.375 0.075-0.6 0.075-0.6 0.15-1.275 0.225-1.95 0.3-0.6 0.075-1.275 0.15-1.875 0.15-0.675 0.075-1.275 0.075-1.95 0.075-0.3-0.075-0.675-0.075-0.975-0.075-0.375 0-0.75-0.075-1.125-0.075-0.15 0-0.3-0.075-0.45-0.075s-0.375-0.075-0.525-0.075c-0.375 0-0.675-0.075-1.05-0.15-0.6-0.075-1.275-0.225-1.875-0.375s-1.2-0.375-1.8-0.525c-0.3-0.15-0.6-0.225-0.9-0.3-0.375-0.15-0.675-0.3-0.975-0.375-0.3-0.15-0.675-0.3-0.975-0.45-0.15-0.075-0.3-0.075-0.375-0.15-0.225-0.15-0.375-0.225-0.6-0.3-0.6-0.3-1.125-0.6-1.725-0.9-0.525-0.375-1.05-0.675-1.575-1.05l-1.575-1.125c-0.225-0.225-0.525-0.45-0.825-0.675-0.225-0.225-0.45-0.45-0.75-0.675-0.225-0.225-0.525-0.45-0.75-0.75-0.225-0.15-0.375-0.375-0.6-0.6-0.45-0.45-0.9-0.975-1.275-1.425-0.225-0.3-0.45-0.525-0.6-0.75-0.225-0.225-0.375-0.525-0.6-0.75-0.15-0.225-0.3-0.525-0.525-0.825-0.075-0.075-0.15-0.225-0.225-0.375s-0.225-0.3-0.3-0.45c-0.15-0.225-0.3-0.45-0.45-0.75-0.075-0.15-0.15-0.225-0.225-0.375s-0.15-0.3-0.225-0.375c-0.3-0.6-0.6-1.2-0.825-1.725l-0.225-0.45c0-0.15-0.15-0.375-0.15-0.525l-0.225-0.45c0-0.15-0.075-0.3-0.15-0.45-0.225-0.6-0.375-1.2-0.6-1.8l-0.225-0.9c-0.075-0.375-0.15-0.675-0.225-0.975s-0.15-0.675-0.225-1.05c0-0.3-0.075-0.6-0.15-0.9-0.075-0.675-0.15-1.35-0.15-2.025-0.075-0.6-0.075-1.275-0.075-1.875 0-0.675 0-1.35 0.075-2.025 0-0.3 0.075-0.675 0.075-0.975 0.075-0.3 0.075-0.675 0.15-0.975s0.075-0.675 0.15-0.975c0-0.15 0.075-0.225 0.075-0.375 0-0.225 0.075-0.375 0.075-0.525 0.075-0.075 0.075-0.15 0.075-0.225s0.075-0.15 0.075-0.3 0.075-0.3 0.075-0.375c0.075-0.375 0.225-0.675 0.3-0.975 0.15-0.675 0.375-1.35 0.6-1.95s0.45-1.2 0.75-1.725l0.225-0.45c0-0.075 0.075-0.15 0.075-0.3 0.075 0 0.075 0 0.075-0.075l0.075-0.075v-0.15s0.075 0 0.075-0.075 0.075-0.15 0.15-0.225c0.075-0.15 0.075-0.3 0.15-0.375 0.15-0.3 0.3-0.525 0.45-0.825s0.375-0.525 0.525-0.825c0.075-0.15 0.15-0.225 0.225-0.375 0.15-0.15 0.225-0.3 0.3-0.45s0.225-0.225 0.3-0.375 0.15-0.225 0.225-0.375c0.225-0.225 0.375-0.525 0.6-0.75 0.15-0.225 0.375-0.45 0.6-0.75 0.15-0.225 0.375-0.45 0.6-0.675 0.225-0.3 0.45-0.525 0.675-0.75l0.3-0.3c0.075-0.15 0.225-0.225 0.3-0.3 0.225-0.225 0.45-0.45 0.75-0.675l1.575-1.35c0.225-0.225 0.525-0.375 0.825-0.6 0.225-0.225 0.525-0.375 0.825-0.6 0.525-0.375 1.125-0.675 1.65-0.975 0.525-0.375 1.125-0.6 1.65-0.9 0.3-0.15 0.6-0.3 0.9-0.375 0.3-0.15 0.6-0.3 0.975-0.45 0.3-0.15 0.6-0.225 0.975-0.375 0.3-0.075 0.6-0.225 0.975-0.3 0.6-0.225 1.275-0.375 1.95-0.525 0.6-0.15 1.2-0.3 1.8-0.375 0.675-0.15 1.275-0.225 1.95-0.3 0.3 0 0.675-0.075 1.05-0.075h0.975 1.05 1.05c0.3 0.075 0.6 0.075 0.975 0.075 0.3 0.075 0.6 0.075 0.9 0.15 0.6 0.075 1.275 0.15 1.875 0.3 0.675 0.075 1.35 0.225 2.025 0.45 0.15 0 0.3 0.075 0.45 0.075 0.15 0.075 0.3 0.15 0.45 0.15 0.375 0.15 0.75 0.225 1.05 0.375 0.075 0 0.225 0.075 0.3 0.075l0.675 0.225c0.3 0.15 0.525 0.3 0.825 0.375 0.6 0.3 1.125 0.525 1.725 0.825 0.525 0.3 1.125 0.6 1.725 0.975 0.3 0.15 0.6 0.375 0.9 0.6 0.225 0.15 0.525 0.375 0.825 0.525 0.075 0.075 0.225 0.15 0.3 0.225 0.225 0.15 0.375 0.3 0.525 0.45 0.3 0.15 0.525 0.375 0.75 0.6 0.525 0.375 0.975 0.825 1.425 1.2 0.15 0.15 0.3 0.3 0.375 0.45 0.15 0.075 0.225 0.15 0.3 0.3 0.225 0.15 0.45 0.375 0.675 0.6 0.225 0.3 0.45 0.525 0.6 0.75 0.225 0.3 0.45 0.525 0.675 0.825 0.15 0.225 0.375 0.45 0.525 0.675 0.225 0.3 0.375 0.525 0.6 0.75 0.3 0.6 0.675 1.125 0.975 1.65 0.15 0.3 0.375 0.525 0.45 0.825 0.075 0.15 0.15 0.225 0.225 0.375 0.075 0.075 0.075 0.15 0.15 0.225 0 0.075 0.075 0.15 0.075 0.225h-9.9l-0.3-0.3c-0.075-0.15-0.15-0.225-0.3-0.375-0.15-0.225-0.375-0.45-0.6-0.675-0.45-0.375-0.975-0.825-1.425-1.275-0.15-0.075-0.225-0.15-0.375-0.3-0.15-0.075-0.225-0.15-0.375-0.225-0.3-0.225-0.525-0.375-0.825-0.6-0.15-0.075-0.225-0.15-0.375-0.225s-0.225-0.15-0.375-0.225c-0.3-0.15-0.6-0.375-0.9-0.525-0.6-0.3-1.125-0.6-1.725-0.825-0.3-0.075-0.6-0.225-0.9-0.3-0.375-0.15-0.675-0.225-0.975-0.3-0.3-0.15-0.6-0.225-0.975-0.3-0.3-0.075-0.675-0.15-0.975-0.225l-2.025-0.225s-1.35-0.075-1.95-0.075c-0.375 0-0.675 0.075-0.975 0.075s-0.6 0.075-0.975 0.075c-0.6 0.075-1.275 0.15-1.875 0.3s-1.275 0.3-1.875 0.525-1.275 0.45-1.875 0.75l-1.8 0.9c-0.075 0.075-0.15 0.075-0.225 0.15 0 0-0.075 0.075-0.15 0.075-0.075 0.075-0.225 0.15-0.375 0.3-0.15 0.075-0.3 0.15-0.375 0.225-0.15 0.075-0.3 0.15-0.375 0.3-0.525 0.375-1.05 0.75-1.575 1.2-0.45 0.375-0.9 0.825-1.275 1.275-0.45 0.45-0.9 0.975-1.275 1.5-0.375 0.45-0.75 0.975-1.05 1.5-0.375 0.6-0.75 1.2-0.975 1.8l-0.45 0.9c-0.075 0.15-0.15 0.3-0.15 0.45l-0.225 0.45c-0.15 0.6-0.375 1.125-0.525 1.8-0.15 0.6-0.3 1.275-0.45 1.95-0.075 0.6-0.15 1.275-0.15 1.95-0.075 0.375-0.075 0.675-0.075 0.975s0 0.6 0.075 0.975c0 0.6 0.075 1.275 0.15 1.95s0.225 1.275 0.375 1.95 0.375 1.275 0.6 1.875c0.075 0.15 0.15 0.3 0.15 0.45l0.225 0.45c0.075 0.3 0.225 0.6 0.375 0.9l0.225 0.45s0.15 0.225 0.225 0.375c0.15 0.3 0.3 0.6 0.45 0.825 0.375 0.6 0.75 1.125 1.125 1.65s0.825 0.975 1.275 1.425c0.15 0.225 0.375 0.45 0.6 0.675l0.3 0.3c0.15 0.15 0.3 0.225 0.375 0.375 0.225 0.225 0.525 0.375 0.75 0.6s0.525 0.375 0.75 0.6c0.525 0.3 0.975 0.675 1.5 0.975 0.6 0.3 1.2 0.675 1.8 0.9 0.6 0.3 1.2 0.525 1.875 0.75 0.6 0.225 1.2 0.375 1.875 0.525 0.3 0.15 0.675 0.15 1.05 0.225 0.3 0.075 0.6 0.15 0.9 0.15 0.375 0.075 0.675 0.075 0.975 0.15h0.45 0.45 2.025c0.3-0.075 0.675-0.075 0.975-0.15 0.3 0 0.6-0.075 0.975-0.075 0.6-0.15 1.275-0.3 1.875-0.45 0.375-0.15 0.675-0.225 0.975-0.3 0.15-0.075 0.375-0.15 0.525-0.225 0.15 0 0.3-0.075 0.45-0.15 0.3-0.15 0.6-0.225 0.9-0.375l0.9-0.45c0.6-0.3 1.125-0.6 1.65-0.975 0.3-0.15 0.525-0.375 0.825-0.525 0.075-0.075 0.225-0.225 0.375-0.3 0.075-0.075 0.225-0.225 0.375-0.3 0.45-0.375 0.975-0.825 1.425-1.275s0.825-0.9 1.275-1.35z"/> | ||
9 | </g> | ||
10 | </svg> | ||
diff --git a/public/assets/tools/diaspora.png b/public/assets/tools/diaspora.png new file mode 100644 index 0000000..7b23d5d --- /dev/null +++ b/public/assets/tools/diaspora.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/dokuwiki.png b/public/assets/tools/dokuwiki.png new file mode 100644 index 0000000..a1f4995 --- /dev/null +++ b/public/assets/tools/dokuwiki.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/etherpad.ico b/public/assets/tools/etherpad.ico new file mode 100644 index 0000000..938e955 --- /dev/null +++ b/public/assets/tools/etherpad.ico | |||
Binary files differ | |||
diff --git a/public/assets/tools/games_codenames.png b/public/assets/tools/games_codenames.png new file mode 100644 index 0000000..0b2729e --- /dev/null +++ b/public/assets/tools/games_codenames.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/games_terraforming_mars.ico b/public/assets/tools/games_terraforming_mars.ico new file mode 100644 index 0000000..733acb2 --- /dev/null +++ b/public/assets/tools/games_terraforming_mars.ico | |||
Binary files differ | |||
diff --git a/public/assets/tools/gitweb.png b/public/assets/tools/gitweb.png new file mode 100644 index 0000000..4fa44bb --- /dev/null +++ b/public/assets/tools/gitweb.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/grocy.png b/public/assets/tools/grocy.png new file mode 100644 index 0000000..40be557 --- /dev/null +++ b/public/assets/tools/grocy.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/kanboard.png b/public/assets/tools/kanboard.png new file mode 100644 index 0000000..51702e7 --- /dev/null +++ b/public/assets/tools/kanboard.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/mantisbt.png b/public/assets/tools/mantisbt.png new file mode 100644 index 0000000..729e3ea --- /dev/null +++ b/public/assets/tools/mantisbt.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/mastodon.png b/public/assets/tools/mastodon.png new file mode 100644 index 0000000..b12aa55 --- /dev/null +++ b/public/assets/tools/mastodon.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/mgoblin.ico b/public/assets/tools/mgoblin.ico new file mode 100644 index 0000000..ae5a1b1 --- /dev/null +++ b/public/assets/tools/mgoblin.ico | |||
Binary files differ | |||
diff --git a/public/assets/tools/nextcloud.png b/public/assets/tools/nextcloud.png new file mode 100644 index 0000000..6358068 --- /dev/null +++ b/public/assets/tools/nextcloud.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/peertube.png b/public/assets/tools/peertube.png new file mode 100644 index 0000000..a42fce3 --- /dev/null +++ b/public/assets/tools/peertube.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/phpbb.ico b/public/assets/tools/phpbb.ico new file mode 100644 index 0000000..bb61b89 --- /dev/null +++ b/public/assets/tools/phpbb.ico | |||
Binary files differ | |||
diff --git a/public/assets/tools/rainloop.png b/public/assets/tools/rainloop.png new file mode 100644 index 0000000..ce1dd1a --- /dev/null +++ b/public/assets/tools/rainloop.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/rompr.png b/public/assets/tools/rompr.png new file mode 100644 index 0000000..d7b63b1 --- /dev/null +++ b/public/assets/tools/rompr.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/roundcube.svg b/public/assets/tools/roundcube.svg new file mode 100644 index 0000000..1f50dd8 --- /dev/null +++ b/public/assets/tools/roundcube.svg | |||
@@ -0,0 +1,15 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="9.14 141.8 573.65 573.65"> | ||
3 | <style type="text/css"> | ||
4 | .st0{fill-rule:evenodd;clip-rule:evenodd;fill:#404F54;} | ||
5 | .st1{fill-rule:evenodd;clip-rule:evenodd;fill:#E5E5E5;} | ||
6 | .st2{fill-rule:evenodd;clip-rule:evenodd;fill:#CCCCCC;} | ||
7 | .st3{fill-rule:evenodd;clip-rule:evenodd;fill:#37BEFF;} | ||
8 | </style> | ||
9 | <polygon class="st3" points="582.79,549.77 295.96,384.1 295.96,207.27 582.79,372.95 "/> | ||
10 | <polygon class="st0" points="9.14,549.77 295.96,384.1 295.96,207.27 9.14,372.95 "/> | ||
11 | <path class="st2" d="M295.96,141.8c109.56,0,198.41,88.85,198.41,198.41c0,109.56-88.85,198.41-198.41,198.41 c-109.56,0-198.41-88.85-198.41-198.41C97.55,230.65,186.4,141.8,295.96,141.8"/> | ||
12 | <path class="st1" d="M295.96,141.8c109.6,0,198.48,88.85,198.48,198.41c0,109.56-88.88,198.41-198.48,198.41 c-62.91-42.34-88.94-127.64-88.94-198.3S233.05,184.22,295.96,141.8"/> | ||
13 | <polygon class="st3" points="582.79,372.95 295.96,538.62 295.96,715.45 582.79,549.77 "/> | ||
14 | <polygon class="st0" points="9.14,372.95 295.96,538.62 295.96,715.45 9.14,549.77 "/> | ||
15 | </svg> | ||
diff --git a/public/assets/tools/shaarli.png b/public/assets/tools/shaarli.png new file mode 100644 index 0000000..f29210c --- /dev/null +++ b/public/assets/tools/shaarli.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/statusengine.png b/public/assets/tools/statusengine.png new file mode 100644 index 0000000..97f05da --- /dev/null +++ b/public/assets/tools/statusengine.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/ttrss.png b/public/assets/tools/ttrss.png new file mode 100644 index 0000000..97437d2 --- /dev/null +++ b/public/assets/tools/ttrss.png | |||
Binary files differ | |||
diff --git a/public/assets/tools/wallabag.svg b/public/assets/tools/wallabag.svg new file mode 100644 index 0000000..7b87fed --- /dev/null +++ b/public/assets/tools/wallabag.svg | |||
@@ -0,0 +1 @@ | |||
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"><path fill="none" d="M0 0h200v200H0z"/><path d="M75.899 72.438c1.597-.981 10.207-5.556 24.098.178 14.289 5.897 23.154.776 24.253.079-3.454-5.678-7.562-10.62-12.104-13.943.303-.083.612-.167.939-.263 6.023-1.742 7.553-6.842 7.875-11.21.364-4.954.616-5.03 1.692-9.487 1.032-4.281-.119-5.137-1.181-4.273-.572.465-5.552 1.616-8.505 3.919-4.768 3.72-7.707 10.794-9.039 14.706-.025.06-.205.604-.265.792-.621 1.498-1.857 1.494-1.857 1.494v.001c-.6-.065-1.202-.1-1.809-.1-.54 0-1.079.029-1.616.081-.012.002-.019 0-.031.001-1.581.233-2.45-1.697-2.632-2.157-1.847-5.304-6.816-15.763-17.984-18.577 0 0-2.028-1.554-1.41 1.074.588 2.511 1.804 5.049 1.534 8.741-.124 1.704-1.181 10.442 6.85 14.99.763.432 1.441.795 2.051 1.101-4.042 3.235-7.716 7.74-10.859 12.853zM128.626 152.353c-9.842-6.098-13.153-8.242-12.946-10.575 0 0 .002-.379.099-.957.239-1.236.995-3.348 3.407-4.552.079-.039.146-.084.208-.129 7.668-4.45 13.27-11.614 15.246-20.56-1.99 4.941-16.735 8.78-34.645 8.78-17.903 0-32.651-3.839-34.641-8.78.442 2.008 1.073 3.923 1.864 5.742.666 3.745 1.562 12.563-2.673 20.282-3.731 6.8-22.15 16.069-49.485 10.748 0 0-1.096-.766-1.428-.136-.491.932 1.517 1.685 3.583 2.229 19.031 5.04 47.756 2.989 56.777-4.443 4.116-3.388 5.704-7.953 6.107-12.865l.003.008s.11-1.287 1.719-.32c.461.277 2.125 1.36 2.39 2.585.232 1.743.248 3.883-.652 5.382-1.287 2.144-1.301 2.452.393 3.662 1.04.742 5.287 3.864 11.198 7.415.015.01.023.019.038.027 1.25.753 2.987 2.597 2.987 2.597 2.662 3.079 8.452 9.275 10.972 8.108 1.19-.551-.051-3.032-.051-3.032s1.98 2.571 3.043 1.694c.809-.668-.473-3.229-.473-3.229s1.729 1.499 2.757.944c1.258-.679-.187-4.614-10.079-10.627-9.896-6.018-12.578-6.94-12.814-9.626 0 0-.004-.135.004-.366.077-.593.414-1.847 1.852-1.712 2.141.346 4.348.531 6.608.531 2.587 0 5.107-.237 7.536-.69l.001.003s.127-.025.164-.031c.284-.036.838-.018.84.671-.09.873-.331 1.751-.845 2.519-1.447 2.168-.972 2.466.54 3.859.933.859 5.211 4.622 11.07 8.264.012.009.017.016.031.023 1.249.752 3.41 2.816 3.41 2.816v-.001c2.428 2.466 6.894 6.596 9.327 6.347 1.646-.168.306-3.002.306-3.002s2.078 2.006 3.099 1.416c1.142-.659-.474-2.755-.474-2.755s1.338.708 2.283.473c.948-.236 1.185-2.644-8.656-8.737z"/><path d="M117.631 83.452c-1.181 0-2.161.355-2.912 1.057-.76.71-1.144 1.531-1.144 2.438v16.056c0 2.154-.382 3.742-1.135 4.721-.728.946-1.892 1.406-3.556 1.406-1.703 0-2.863-.457-3.549-1.396-.716-.979-1.078-2.571-1.078-4.731V86.884c0-1.098-.5-1.996-1.448-2.596-1.289-.812-2.57-1.105-4.129-.587-.476.159-.924.366-1.333.615-.435.265-.802.597-1.093.985-.322.432-.486.901-.486 1.396v16.307c0 2.158-.363 3.75-1.079 4.73-.688.939-1.849 1.396-3.548 1.396-1.705 0-2.877-.459-3.584-1.401-.734-.979-1.107-2.57-1.107-4.726V86.947c0-.908-.384-1.728-1.145-2.438-.751-.702-1.751-1.057-2.973-1.057-1.258 0-2.296.352-3.085 1.045-.811.71-1.222 1.535-1.222 2.45v15.806c0 1.988.194 3.869.575 5.588.393 1.758 1.077 3.3 2.035 4.586.968 1.299 2.282 2.323 3.906 3.05 1.607.716 3.617 1.079 5.975 1.079 2.457 0 4.515-.455 6.115-1.354 1.342-.754 2.473-1.744 3.371-2.951.866 1.207 1.971 2.197 3.294 2.95 1.58.899 3.669 1.354 6.211 1.354 2.357 0 4.359-.364 5.947-1.081 1.601-.726 2.902-1.751 3.872-3.048.96-1.29 1.645-2.833 2.034-4.586.381-1.719.575-3.6.575-5.588V86.947c0-.911-.398-1.733-1.184-2.445-.767-.697-1.818-1.05-3.12-1.05z"/></svg> | |||
diff --git a/public/config.yml b/public/config.yml new file mode 100644 index 0000000..0b67af5 --- /dev/null +++ b/public/config.yml | |||
@@ -0,0 +1,343 @@ | |||
1 | --- | ||
2 | # Homepage configuration | ||
3 | # See https://fontawesome.com/icons for icons options | ||
4 | |||
5 | title: "Websites dashboard" | ||
6 | subtitle: "Immae" | ||
7 | footer: '<p>Created with <span class="has-text-danger">❤️</span> with <a href="https://bulma.io/">bulma</a>, <a href="https://vuejs.org/">vuejs</a> & <a href="https://fontawesome.com/">font awesome</a> // Fork me on <a href="https://github.com/bastienwirtz/homer"><i class="fab fa-github-alt"></i></a></p>' # set false if you want to hide it. | ||
8 | |||
9 | # Optional navbar | ||
10 | # links: [] # Allows for navbar (dark mode, layout, and search) without any links | ||
11 | links: | ||
12 | - name: "status" | ||
13 | icon: "fas fa-desktop" | ||
14 | url: "https://status.immae.eu" | ||
15 | - name: "Change password" | ||
16 | url: "https://tools.immae.eu/ldap_password.php" | ||
17 | - name: "Get your IP" | ||
18 | url: "https://tools.immae.eu/myip.php" | ||
19 | |||
20 | # Services | ||
21 | # First level array represent a group. | ||
22 | # Leave only a "items" key if not using group (group name, icon & tagstyle are optional, section separation will not be displayed). | ||
23 | services: | ||
24 | - name: "Tools" | ||
25 | icon: "fas fa-tools" | ||
26 | items: | ||
27 | - name: "Nextcloud" | ||
28 | logo: "assets/tools/nextcloud.png" | ||
29 | url: "https://cloud.immae.eu" | ||
30 | links: | ||
31 | - url: "https://nextcloud.com/" | ||
32 | name: "Project page" | ||
33 | - name: "Etherpad" | ||
34 | logo: "assets/tools/etherpad.ico" | ||
35 | url: "https://ether.immae.eu" | ||
36 | links: | ||
37 | - url: "https://etherpad.org/" | ||
38 | name: "Project page" | ||
39 | - name: "Taskweb" | ||
40 | icon: "fas fa-tasks" | ||
41 | url: "https://task.immae.eu/taskweb" | ||
42 | links: | ||
43 | - url: "http://theunraveler.github.io/taskwarrior-web/" | ||
44 | name: "Project page" | ||
45 | - name: "Agenda" | ||
46 | icon: "fas fa-calendar-alt" | ||
47 | url: "https://dav.immae.eu/caldavzap" | ||
48 | links: | ||
49 | - url: "https://www.inf-it.com/open-source/clients/" | ||
50 | name: "CalDavZAP" | ||
51 | - name: "Contacts" | ||
52 | icon: "fas fa-address-book" | ||
53 | url: "https://dav.immae.eu/carddavmate" | ||
54 | links: | ||
55 | - url: "https://www.inf-it.com/open-source/clients/" | ||
56 | name: "CardDavMATE" | ||
57 | - name: "Kanboard" | ||
58 | logo: "assets/tools/kanboard.png" | ||
59 | url: "https://tools.immae.eu/kanboard" | ||
60 | links: | ||
61 | - url: "https://kanboard.org/" | ||
62 | name: "Project page" | ||
63 | - name: "Dokuwiki" | ||
64 | logo: "assets/tools/dokuwiki.png" | ||
65 | url: "https://tools.immae.eu/dokuwiki" | ||
66 | links: | ||
67 | - url: "https://www.dokuwiki.org/dokuwiki" | ||
68 | name: "Project page" | ||
69 | - name: "RompR (MPD)" | ||
70 | logo: "assets/tools/rompr.png" | ||
71 | url: "https://tools.immae.eu/rompr" | ||
72 | links: | ||
73 | - url: "https://fatg3erman.github.io/RompR/" | ||
74 | name: "Project page" | ||
75 | - name: "Ympd (MPD)" | ||
76 | icon: "far fa-play-circle" | ||
77 | url: "https://tools.immae.eu/mpd" | ||
78 | links: | ||
79 | - url: "https://www.ympd.org/" | ||
80 | name: "Project page" | ||
81 | - name: "Shaarli" | ||
82 | logo: "assets/tools/shaarli.png" | ||
83 | url: "https://tools.immae.eu/Shaarli" | ||
84 | links: | ||
85 | - url: "https://shaarli.readthedocs.io" | ||
86 | name: "Project page" | ||
87 | - name: "TT-RSS" | ||
88 | logo: "assets/tools/ttrss.png" | ||
89 | url: "https://tools.immae.eu/ttrss" | ||
90 | links: | ||
91 | - url: "https://tt-rss.org/" | ||
92 | name: "Project page" | ||
93 | - name: "Wallabag" | ||
94 | logo: "assets/tools/wallabag.svg" | ||
95 | url: "https://tools.immae.eu/wallabag" | ||
96 | links: | ||
97 | - url: "https://www.wallabag.it/en" | ||
98 | name: "Project page" | ||
99 | - name: "Grocy" | ||
100 | logo: "assets/tools/grocy.png" | ||
101 | url: "https://tools.immae.eu/grocy" | ||
102 | links: | ||
103 | - url: "https://grocy.info/" | ||
104 | name: "Project page" | ||
105 | - name: "BIP39" | ||
106 | icon: "fab fa-bitcoin" | ||
107 | url: "https://tools.immae.eu/BIP39" | ||
108 | links: | ||
109 | - url: "https://github.com/iancoleman/bip39" | ||
110 | name: "Source" | ||
111 | - name: "Status Engine" | ||
112 | logo: "assets/tools/statusengine.png" | ||
113 | url: "https://performance.immae.eu" | ||
114 | links: | ||
115 | - url: "https://statusengine.org/" | ||
116 | name: "Project page" | ||
117 | - name: "Social" | ||
118 | icon: "fas fa-users" | ||
119 | items: | ||
120 | - name: "Commento" | ||
121 | logo: "assets/tools/commento.svg" | ||
122 | url: "https://commento.immae.eu" | ||
123 | links: | ||
124 | - url: "https://www.commento.io/" | ||
125 | name: "Project page" | ||
126 | - name: "Diaspora" | ||
127 | logo: "assets/tools/diaspora.png" | ||
128 | url: "https://diaspora.immae.eu" | ||
129 | links: | ||
130 | - url: "https://diasporafoundation.org/" | ||
131 | name: "Project page" | ||
132 | - name: "Mastodon" | ||
133 | logo: "assets/tools/mastodon.png" | ||
134 | url: "https://mastodon.immae.eu" | ||
135 | links: | ||
136 | - url: "https://joinmastodon.org/" | ||
137 | name: "Project page" | ||
138 | - name: "PhpBB" | ||
139 | logo: "assets/tools/phpbb.ico" | ||
140 | url: "https://tools.immae.eu/forum" | ||
141 | links: | ||
142 | - url: "https://www.phpbb.com/" | ||
143 | name: "Project page" | ||
144 | - name: "Instant messaging (converse)" | ||
145 | icon: "fas fa-comment" | ||
146 | url: "https://im.immae.fr/converse" | ||
147 | links: | ||
148 | - url: "https://conversejs.org/" | ||
149 | name: "Project page" | ||
150 | - name: "Mail (roundcube)" | ||
151 | logo: "assets/tools/roundcube.svg" | ||
152 | url: "https://mail.immae.eu/roundcube" | ||
153 | links: | ||
154 | - url: "https://roundcube.net/" | ||
155 | name: "Project page" | ||
156 | - name: "Mail (rainloop)" | ||
157 | logo: "assets/tools/rainloop.png" | ||
158 | url: "https://mail.immae.eu/rainloop" | ||
159 | links: | ||
160 | - url: "http://www.rainloop.net/" | ||
161 | name: "Project page" | ||
162 | - name: "Video" | ||
163 | icon: "fas fa-video" | ||
164 | items: | ||
165 | - name: "Peertube" | ||
166 | logo: "assets/tools/peertube.png" | ||
167 | url: "https://peertube.immae.eu" | ||
168 | links: | ||
169 | - url: "https://joinpeertube.org/fr/" | ||
170 | name: "Project page" | ||
171 | - name: "Mediagoblin" | ||
172 | logo: "assets/tools/mgoblin.ico" | ||
173 | url: "https://mgoblin.immae.eu" | ||
174 | links: | ||
175 | - url: "https://mediagoblin.org/" | ||
176 | name: "Project page" | ||
177 | - name: "Games" | ||
178 | icon: "fas fa-gamepad" | ||
179 | items: | ||
180 | - name: "Codenames" | ||
181 | logo: "assets/tools/games_codenames.png" | ||
182 | url: "https://codenames.games.immae.eu/" | ||
183 | links: | ||
184 | - url: "https://github.com/jbowens/codenamesgreen" | ||
185 | name: "Source" | ||
186 | - name: "Terraforming mars" | ||
187 | logo: "assets/tools/games_terraforming_mars.ico" | ||
188 | url: "https://terraforming-mars.games.immae.eu/" | ||
189 | links: | ||
190 | - url: "https://github.com/bafolts/terraforming-mars" | ||
191 | name: "Source" | ||
192 | - name: "Development" | ||
193 | icon: "fas fa-code-branch" | ||
194 | items: | ||
195 | - name: "Gitweb" | ||
196 | logo: "assets/tools/gitweb.png" | ||
197 | url: "https://git.immae.eu" | ||
198 | links: | ||
199 | - url: "https://git-scm.com/" | ||
200 | name: "Project page" | ||
201 | - name: "Mantisbt" | ||
202 | logo: "assets/tools/mantisbt.png" | ||
203 | url: "https://git.immae.eu/mantisbt" | ||
204 | links: | ||
205 | - url: "https://mantisbt.org/" | ||
206 | name: "Project page" | ||
207 | - name: "Buildbot" | ||
208 | logo: "assets/tools/buildbot.svg" | ||
209 | url: "https://git.immae.eu/buildbot/immaeEu/" | ||
210 | links: | ||
211 | - url: "https://buildbot.net/" | ||
212 | name: "Project page" | ||
213 | - name: "Adminer" | ||
214 | logo: "assets/tools/adminer.png" | ||
215 | url: "https://tools.immae.eu/adminer" | ||
216 | links: | ||
217 | - url: "https://www.adminer.org/" | ||
218 | name: "Project page" | ||
219 | - name: "Release" | ||
220 | icon: "fas fa-running" | ||
221 | url: "https://release.immae.eu" | ||
222 | links: | ||
223 | - url: "https://oupala.github.io/apaxy/" | ||
224 | name: "Theme by Apaxy" | ||
225 | - name: "Immae" | ||
226 | icon: "fas fa-edit" | ||
227 | items: | ||
228 | - name: "Page principale" | ||
229 | icon: "fas fa-user" | ||
230 | url: "https://www.immae.eu" | ||
231 | links: | ||
232 | - url: "https://blog.getpelican.com/" | ||
233 | name: "Built with Pelican" | ||
234 | - name: "Historique infrastructure / Changelog" | ||
235 | icon: "fas fa-history" | ||
236 | url: "https://www.immae.eu/history" | ||
237 | links: | ||
238 | - url: "https://www.changelog.site/" | ||
239 | name: "Built with ChangeLog" | ||
240 | - name: "Atelier d’écriture" | ||
241 | icon: "fas fa-pen" | ||
242 | url: "https://www.immae.eu/atelier" | ||
243 | - name: "Blog" | ||
244 | icon: "fas fa-blog" | ||
245 | url: "https://www.immae.eu/blog" | ||
246 | links: | ||
247 | - url: "https://blog.getpelican.com/" | ||
248 | name: "Built with Pelican" | ||
249 | - name: "Recherche" | ||
250 | icon: "fas fa-search" | ||
251 | url: "https://www.immae.eu/recherche" | ||
252 | - name: "Cours" | ||
253 | icon: "fas fa-school" | ||
254 | url: "https://www.immae.eu/cours" | ||
255 | links: | ||
256 | - url: "https://melusine.eu.org/syracuse/immae/" | ||
257 | name: "Miroir (Mélusine)" | ||
258 | - name: "Recettes" | ||
259 | icon: "fas fa-utensils" | ||
260 | url: "https://www.immae.eu/recettes" | ||
261 | links: | ||
262 | - url: "https://jekyllrb.com/" | ||
263 | name: "Built with Jekyll" | ||
264 | - name: "Chapeaux de Hamming" | ||
265 | icon: "fas fa-hat-cowboy-side" | ||
266 | url: "https://www.immae.eu/chapeaux" | ||
267 | - name: "Configuration / System" | ||
268 | icon: "fas fa-cog" | ||
269 | items: | ||
270 | - name: "Instant messaging" | ||
271 | url: "https://im.immae.fr" | ||
272 | links: | ||
273 | - url: "https://www.ejabberd.im/" | ||
274 | name: "Ejabberd" | ||
275 | - name: "E-mail" | ||
276 | url: "https://mail.immae.eu" | ||
277 | links: | ||
278 | - url: "http://www.postfix.org/" | ||
279 | name: "Postfix" | ||
280 | - url: "https://www.dovecot.org/" | ||
281 | name: "Dovecot" | ||
282 | - url: "https://www.rspamd.com/" | ||
283 | name: "Rspamd" | ||
284 | - url: "http://www.opendkim.org/" | ||
285 | name: "OpenDKIM" | ||
286 | - url: "http://www.trusteddomain.org/opendmarc/" | ||
287 | name: "OpenDMARC" | ||
288 | - url: "https://github.com/trusteddomainproject/OpenARC" | ||
289 | name: "OpenARC" | ||
290 | - name: "Mailing-List" | ||
291 | url: "https://mail.immae.eu/sympa" | ||
292 | links: | ||
293 | - url: "https://www.sympa.org/" | ||
294 | name: "SYMPA" | ||
295 | - name: "VPN" | ||
296 | url: "https://vpn.immae.eu" | ||
297 | links: | ||
298 | - url: "https://tinc-vpn.org/" | ||
299 | name: "Tinc" | ||
300 | - name: "Taskwarrior" | ||
301 | url: "https://task.immae.eu" | ||
302 | links: | ||
303 | - url: "http://theunraveler.github.io/taskwarrior-web/" | ||
304 | name: "Project page" | ||
305 | - name: "Dav" | ||
306 | url: "https://dav.immae.eu" | ||
307 | - name: "Dav acount" | ||
308 | url: "https://dav.immae.eu/davical" | ||
309 | links: | ||
310 | - url: "https://www.davical.org/" | ||
311 | name: "Davical" | ||
312 | - name: "Paste" | ||
313 | url: "https://tools.immae.eu/paste" | ||
314 | links: | ||
315 | - url: "http://termbin.com/" | ||
316 | name: "Termbin" | ||
317 | - name: "LDAP" | ||
318 | url: "https://tools.immae.eu/ldap" | ||
319 | links: | ||
320 | - url: "http://phpldapadmin.sourceforge.net/wiki/index.php/Main_Page" | ||
321 | name: "phpLDAPAdmin" | ||
322 | - name: "Yourls" | ||
323 | url: "https://tools.immae.eu/url/admin/" | ||
324 | links: | ||
325 | - url: "http://yourls.org/" | ||
326 | name: "Project page" | ||
327 | - name: "Change password" | ||
328 | url: "https://tools.immae.eu/ldap_password.php" | ||
329 | links: | ||
330 | - url: "https://gist.github.com/mattrude/657334" | ||
331 | name: "Source" | ||
332 | - name: "temp.immae.eu" | ||
333 | url: "https://temp.immae.eu" | ||
334 | links: | ||
335 | - url: "https://git.cloudron.io/cloudron/surfer" | ||
336 | name: "Surfer" | ||
337 | - name: "DMARC report status" | ||
338 | url: "https://tools.immae.eu/dmarc-reports" | ||
339 | links: | ||
340 | - url: "https://git.immae.eu/?p=perso/Immae/Config/Nix.git;a=tree;f=modules/private/websites/tools/tools/dmarc_reports;hb=HEAD" | ||
341 | name: "Source code" | ||
342 | - url: "https://github.com/techsneeze/dmarcts-report-viewer" | ||
343 | name: "Inspiration work" | ||
diff --git a/src/App.vue b/src/App.vue index 17c3214..747d279 100644 --- a/src/App.vue +++ b/src/App.vue | |||
@@ -10,7 +10,7 @@ | |||
10 | > | 10 | > |
11 | <DynamicTheme :themes="config.colors" /> | 11 | <DynamicTheme :themes="config.colors" /> |
12 | <div id="bighead"> | 12 | <div id="bighead"> |
13 | <section v-if="config.header" class="first-line"> | 13 | <section v-if="config.header" class="first-line is-hidden-touch"> |
14 | <div v-cloak class="container"> | 14 | <div v-cloak class="container"> |
15 | <div class="logo"> | 15 | <div class="logo"> |
16 | <img v-if="config.logo" :src="config.logo" alt="dashboard logo" /> | 16 | <img v-if="config.logo" :src="config.logo" alt="dashboard logo" /> |
@@ -27,6 +27,8 @@ | |||
27 | :open="showMenu" | 27 | :open="showMenu" |
28 | :links="config.links" | 28 | :links="config.links" |
29 | @navbar:toggle="showMenu = !showMenu" | 29 | @navbar:toggle="showMenu = !showMenu" |
30 | :navigateToFirstService="navigateToFirstService" | ||
31 | :filterServices="filterServices" | ||
30 | > | 32 | > |
31 | <DarkMode @updated="isDark = $event" /> | 33 | <DarkMode @updated="isDark = $event" /> |
32 | 34 | ||
@@ -36,14 +38,6 @@ | |||
36 | icon="fa-list" | 38 | icon="fa-list" |
37 | iconAlt="fa-columns" | 39 | iconAlt="fa-columns" |
38 | /> | 40 | /> |
39 | |||
40 | <SearchInput | ||
41 | class="navbar-item is-inline-block-mobile" | ||
42 | @input="filterServices" | ||
43 | @search:focus="showMenu = true" | ||
44 | @search:open="navigateToFirstService" | ||
45 | @search:cancel="filterServices" | ||
46 | /> | ||
47 | </Navbar> | 41 | </Navbar> |
48 | </div> | 42 | </div> |
49 | 43 | ||
@@ -68,7 +62,7 @@ | |||
68 | v-for="item in group.items" | 62 | v-for="item in group.items" |
69 | :key="item.name" | 63 | :key="item.name" |
70 | v-bind:item="item" | 64 | v-bind:item="item" |
71 | :class="['column', `is-${12 / config.columns}`]" | 65 | class="column is-half-tablet is-one-third-widescreen is-half-desktop" |
72 | /> | 66 | /> |
73 | </template> | 67 | </template> |
74 | </div> | 68 | </div> |
@@ -79,7 +73,7 @@ | |||
79 | class="columns is-multiline layout-vertical" | 73 | class="columns is-multiline layout-vertical" |
80 | > | 74 | > |
81 | <div | 75 | <div |
82 | :class="['column', `is-${12 / config.columns}`]" | 76 | class="column is-half-tablet is-one-third-widescreen is-half-desktop" |
83 | v-for="group in services" | 77 | v-for="group in services" |
84 | :key="group.name" | 78 | :key="group.name" |
85 | > | 79 | > |
@@ -118,7 +112,6 @@ import Navbar from "./components/Navbar.vue"; | |||
118 | import ConnectivityChecker from "./components/ConnectivityChecker.vue"; | 112 | import ConnectivityChecker from "./components/ConnectivityChecker.vue"; |
119 | import Service from "./components/Service.vue"; | 113 | import Service from "./components/Service.vue"; |
120 | import Message from "./components/Message.vue"; | 114 | import Message from "./components/Message.vue"; |
121 | import SearchInput from "./components/SearchInput.vue"; | ||
122 | import SettingToggle from "./components/SettingToggle.vue"; | 115 | import SettingToggle from "./components/SettingToggle.vue"; |
123 | import DarkMode from "./components/DarkMode.vue"; | 116 | import DarkMode from "./components/DarkMode.vue"; |
124 | import DynamicTheme from "./components/DynamicTheme.vue"; | 117 | import DynamicTheme from "./components/DynamicTheme.vue"; |
@@ -132,7 +125,6 @@ export default { | |||
132 | ConnectivityChecker, | 125 | ConnectivityChecker, |
133 | Service, | 126 | Service, |
134 | Message, | 127 | Message, |
135 | SearchInput, | ||
136 | SettingToggle, | 128 | SettingToggle, |
137 | DarkMode, | 129 | DarkMode, |
138 | DynamicTheme, | 130 | DynamicTheme, |
@@ -143,7 +135,7 @@ export default { | |||
143 | services: null, | 135 | services: null, |
144 | offline: false, | 136 | offline: false, |
145 | filter: "", | 137 | filter: "", |
146 | vlayout: true, | 138 | vlayout: false, |
147 | isDark: null, | 139 | isDark: null, |
148 | showMenu: false, | 140 | showMenu: false, |
149 | }; | 141 | }; |
diff --git a/src/assets/app.scss b/src/assets/app.scss index ab067e6..2408d60 100644 --- a/src/assets/app.scss +++ b/src/assets/app.scss | |||
@@ -55,6 +55,23 @@ body { | |||
55 | } | 55 | } |
56 | } | 56 | } |
57 | 57 | ||
58 | .subcard { | ||
59 | background-color: var(--subcard-background); | ||
60 | color: var(--subcard-a); | ||
61 | |||
62 | a { | ||
63 | color: var(--subcard-a); | ||
64 | &:hover { | ||
65 | color: var(--subcard-a-hover); | ||
66 | } | ||
67 | } | ||
68 | } | ||
69 | |||
70 | a.card-arrow { | ||
71 | color: var(--subcard-a); | ||
72 | background-color: var(--subcard-background); | ||
73 | } | ||
74 | |||
58 | .footer { | 75 | .footer { |
59 | background-color: var(--card-background); | 76 | background-color: var(--card-background); |
60 | box-shadow: 0 2px 15px 0 var(--card-shadow); | 77 | box-shadow: 0 2px 15px 0 var(--card-shadow); |
@@ -214,8 +231,7 @@ body { | |||
214 | } | 231 | } |
215 | } | 232 | } |
216 | 233 | ||
217 | .card { | 234 | .card, .card-arrow { |
218 | border-radius: 5px; | ||
219 | border: none; | 235 | border: none; |
220 | box-shadow: 0 2px 15px 0 rgba(0, 0, 0, 0.1); | 236 | box-shadow: 0 2px 15px 0 rgba(0, 0, 0, 0.1); |
221 | transition: cubic-bezier(0.165, 0.84, 0.44, 1) 300ms; | 237 | transition: cubic-bezier(0.165, 0.84, 0.44, 1) 300ms; |
@@ -225,6 +241,32 @@ body { | |||
225 | } | 241 | } |
226 | } | 242 | } |
227 | 243 | ||
244 | .card { | ||
245 | border-radius: 5px; | ||
246 | } | ||
247 | |||
248 | .card-arrow { | ||
249 | border-radius: 0px 5px 5px 0px; | ||
250 | } | ||
251 | |||
252 | .card-arrow.active { | ||
253 | border-radius: 0px 5px 0px 0px; | ||
254 | box-shadow: none; | ||
255 | } | ||
256 | |||
257 | .subcard { | ||
258 | border-radius: 0px 0px 5px 5px; | ||
259 | display: none; | ||
260 | list-style: disc inside; | ||
261 | padding: 0.8rem; | ||
262 | } | ||
263 | .subcard.active { | ||
264 | display: block; | ||
265 | } | ||
266 | .subcard a { | ||
267 | padding: 10px; | ||
268 | } | ||
269 | |||
228 | .card:hover { | 270 | .card:hover { |
229 | transform: translate(0, -3px); | 271 | transform: translate(0, -3px); |
230 | 272 | ||
@@ -239,6 +281,14 @@ body { | |||
239 | } | 281 | } |
240 | } | 282 | } |
241 | 283 | ||
284 | .card-arrow { | ||
285 | height: 85px; | ||
286 | display: flex; | ||
287 | align-items: center; | ||
288 | float: right; | ||
289 | padding: 10px; | ||
290 | } | ||
291 | |||
242 | .card-content { | 292 | .card-content { |
243 | height: 85px; | 293 | height: 85px; |
244 | padding: 1.3rem; | 294 | padding: 1.3rem; |
@@ -259,10 +309,6 @@ body { | |||
259 | } | 309 | } |
260 | 310 | ||
261 | .footer { | 311 | .footer { |
262 | position: fixed; | ||
263 | left: 0; | ||
264 | right: 0; | ||
265 | bottom: 0; | ||
266 | padding: 0.5rem; | 312 | padding: 0.5rem; |
267 | text-align: left; | 313 | text-align: left; |
268 | color: #676767; | 314 | color: #676767; |
@@ -318,6 +364,16 @@ body { | |||
318 | } | 364 | } |
319 | } | 365 | } |
320 | 366 | ||
367 | .search-bar-mobile { | ||
368 | input { | ||
369 | margin-top: 10px; | ||
370 | margin-left: 10px; | ||
371 | } | ||
372 | .search-label::before { | ||
373 | top: 14px; | ||
374 | } | ||
375 | } | ||
376 | |||
321 | .offline-message { | 377 | .offline-message { |
322 | text-align: center; | 378 | text-align: center; |
323 | margin: 35px 0; | 379 | margin: 35px 0; |
diff --git a/src/assets/defaults.yml b/src/assets/defaults.yml index 99f5ed5..eaa345c 100644 --- a/src/assets/defaults.yml +++ b/src/assets/defaults.yml | |||
@@ -18,11 +18,14 @@ colors: | |||
18 | highlight-hover: "#5a95f5" | 18 | highlight-hover: "#5a95f5" |
19 | background: "#f5f5f5" | 19 | background: "#f5f5f5" |
20 | card-background: "#ffffff" | 20 | card-background: "#ffffff" |
21 | subcard-background: "#eeeeee" | ||
21 | text: "#363636" | 22 | text: "#363636" |
22 | text-header: "#ffffff" | 23 | text-header: "#ffffff" |
23 | text-title: "#303030" | 24 | text-title: "#303030" |
24 | text-subtitle: "#424242" | 25 | text-subtitle: "#424242" |
25 | card-shadow: rgba(0, 0, 0, 0.1) | 26 | card-shadow: rgba(0, 0, 0, 0.1) |
27 | subcard-a: "#363636" | ||
28 | subcard-a-hover: "#808080" | ||
26 | link-hover: "#363636" | 29 | link-hover: "#363636" |
27 | dark: | 30 | dark: |
28 | highlight-primary: "#3367d6" | 31 | highlight-primary: "#3367d6" |
@@ -30,11 +33,14 @@ colors: | |||
30 | highlight-hover: "#5a95f5" | 33 | highlight-hover: "#5a95f5" |
31 | background: "#131313" | 34 | background: "#131313" |
32 | card-background: "#2b2b2b" | 35 | card-background: "#2b2b2b" |
36 | subcard-background: "#444444" | ||
33 | text: "#eaeaea" | 37 | text: "#eaeaea" |
34 | text-header: "#ffffff" | 38 | text-header: "#ffffff" |
35 | text-title: "#fafafa" | 39 | text-title: "#fafafa" |
36 | text-subtitle: "#f5f5f5" | 40 | text-subtitle: "#f5f5f5" |
37 | card-shadow: rgba(0, 0, 0, 0.4) | 41 | card-shadow: rgba(0, 0, 0, 0.4) |
42 | subcard-a: "#ffdd57" | ||
43 | subcard-a-hover: "#eaeaea" | ||
38 | link-hover: "#ffdd57" | 44 | link-hover: "#ffdd57" |
39 | 45 | ||
40 | message: ~ | 46 | message: ~ |
diff --git a/src/components/Navbar.vue b/src/components/Navbar.vue index d3ceaf8..fd57156 100644 --- a/src/components/Navbar.vue +++ b/src/components/Navbar.vue | |||
@@ -3,6 +3,12 @@ | |||
3 | <nav class="navbar" role="navigation" aria-label="main navigation"> | 3 | <nav class="navbar" role="navigation" aria-label="main navigation"> |
4 | <div class="container"> | 4 | <div class="container"> |
5 | <div class="navbar-brand"> | 5 | <div class="navbar-brand"> |
6 | <SearchInput | ||
7 | class="search-bar search-bar-mobile is-hidden-desktop" | ||
8 | @input="filterServices" | ||
9 | @search:open="navigateToFirstService" | ||
10 | @search:cancel="filterServices" | ||
11 | /> | ||
6 | <a | 12 | <a |
7 | role="button" | 13 | role="button" |
8 | aria-label="menu" | 14 | aria-label="menu" |
@@ -36,6 +42,13 @@ | |||
36 | </div> | 42 | </div> |
37 | <div class="navbar-end"> | 43 | <div class="navbar-end"> |
38 | <slot></slot> | 44 | <slot></slot> |
45 | |||
46 | <SearchInput | ||
47 | class="navbar-item is-inline-block-mobile is-hidden-touch" | ||
48 | @input="filterServices" | ||
49 | @search:open="navigateToFirstService" | ||
50 | @search:cancel="filterServices" | ||
51 | /> | ||
39 | </div> | 52 | </div> |
40 | </div> | 53 | </div> |
41 | </div> | 54 | </div> |
@@ -44,14 +57,21 @@ | |||
44 | </template> | 57 | </template> |
45 | 58 | ||
46 | <script> | 59 | <script> |
60 | import SearchInput from "./SearchInput.vue"; | ||
61 | |||
47 | export default { | 62 | export default { |
48 | name: "Navbar", | 63 | name: "Navbar", |
64 | components: { | ||
65 | SearchInput, | ||
66 | }, | ||
49 | props: { | 67 | props: { |
50 | open: { | 68 | open: { |
51 | type: Boolean, | 69 | type: Boolean, |
52 | default: false, | 70 | default: false, |
53 | }, | 71 | }, |
54 | links: Array, | 72 | links: Array, |
73 | navigateToFirstService: { type: Function }, | ||
74 | filterServices: { type: Function }, | ||
55 | }, | 75 | }, |
56 | computed: { | 76 | computed: { |
57 | showMenu: function () { | 77 | showMenu: function () { |
diff --git a/src/components/Service.vue b/src/components/Service.vue index a2448ca..80bf019 100644 --- a/src/components/Service.vue +++ b/src/components/Service.vue | |||
@@ -1,7 +1,10 @@ | |||
1 | <template> | 1 | <template> |
2 | <div> | 2 | <div> |
3 | <div class="card"> | 3 | <div class="card"> |
4 | <a :href="item.url" :target="item.target" rel="noreferrer"> | 4 | <a class="card-arrow" v-bind:class="subcardClass" v-on:click="subCardActive = !subCardActive" v-if="item.links && item.links.length > 0"> |
5 | <i style="font-size: 20px" class="fa fa-arrow-circle-down" v-bind:class="arrowClass"></i> | ||
6 | </a> | ||
7 | <a style="background-color: gray" :href="item.url" :target="item.target" rel="noreferrer"> | ||
5 | <div class="card-content"> | 8 | <div class="card-content"> |
6 | <div class="media"> | 9 | <div class="media"> |
7 | <div v-if="item.logo" class="media-left"> | 10 | <div v-if="item.logo" class="media-left"> |
@@ -24,16 +27,46 @@ | |||
24 | </div> | 27 | </div> |
25 | </div> | 28 | </div> |
26 | </a> | 29 | </a> |
30 | <ul class="subcard" v-bind:class="subcardClass"> | ||
31 | <Subcard | ||
32 | v-for="link in item.links" | ||
33 | v-bind:link="link" | ||
34 | :key="link.url" | ||
35 | /> | ||
36 | </ul> | ||
27 | </div> | 37 | </div> |
28 | </div> | 38 | </div> |
29 | </template> | 39 | </template> |
30 | 40 | ||
31 | <script> | 41 | <script> |
42 | import Subcard from "./Subcard.vue"; | ||
43 | |||
32 | export default { | 44 | export default { |
33 | name: "Service", | 45 | name: "Service", |
46 | components: { | ||
47 | Subcard, | ||
48 | }, | ||
34 | props: { | 49 | props: { |
35 | item: Object, | 50 | item: Object, |
36 | }, | 51 | }, |
52 | data: function() { | ||
53 | return { | ||
54 | subCardActive: false, | ||
55 | } | ||
56 | }, | ||
57 | computed: { | ||
58 | arrowClass: function() { | ||
59 | return { | ||
60 | "fa-arrow-circle-down": !this.subCardActive, | ||
61 | "fa-arrow-circle-up": this.subCardActive | ||
62 | } | ||
63 | }, | ||
64 | subcardClass: function() { | ||
65 | return { | ||
66 | active: this.subCardActive | ||
67 | } | ||
68 | } | ||
69 | } | ||
37 | }; | 70 | }; |
38 | </script> | 71 | </script> |
39 | 72 | ||
diff --git a/src/components/Subcard.vue b/src/components/Subcard.vue new file mode 100644 index 0000000..808cd48 --- /dev/null +++ b/src/components/Subcard.vue | |||
@@ -0,0 +1,12 @@ | |||
1 | <template v-for="link in item.links"> | ||
2 | <li><a :href="link.url">{{ link.name }}</a></li> | ||
3 | </template> | ||
4 | |||
5 | <script> | ||
6 | export default { | ||
7 | name: "Subcard", | ||
8 | props: { | ||
9 | link: Object, | ||
10 | }, | ||
11 | }; | ||
12 | </script> | ||