Initial commit

This commit is contained in:
TakeV 2022-04-13 20:26:06 -07:00
commit ea2c36de15
Signed by: TakeV
GPG Key ID: A64F41345C7400AF
18 changed files with 1728 additions and 0 deletions

1
.env.production Normal file
View File

@ -0,0 +1 @@
# Stub. This will be overwritten as part of the install process.

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
tags

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg width="17.95" height="17.529" enable-background="new 0 0 628.254 613.516" version="1.1" viewBox="0 0 628.25 613.51" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><defs><mask id="mask5629" maskUnits="userSpaceOnUse"><rect x="-156.41" y="-66.33" width="941.77" height="797.17" fill="#fff" stroke-width="35"/><g transform="matrix(.33928 .4906 -.82248 .5688 533.91 -40.843)" fill="#829798"><rect x="285" y="13.387" width="105.67" height="767.51" fill="#000" stroke-width="35"/></g></mask></defs>
<g transform="translate(-29.186 -6.0669)">
<g transform="translate(29.186 6.0669)">
<g fill="#829798" mask="url(#mask5629)">
<g fill="#829798" mask="none">
<path d="m99.777 446.09c-6.699 12.031-12.031 30.133-12.031 41.539 0 2.648 0 6.016 0.656 10.688l-83.726-143.99c-2.68-4.672-4.676-11.375-4.676-17.414 0-6.047 1.996-13.398 4.676-18.078l40.195-70.328-44.871-25.43 146.02-2.703 70.984 127.91-45.527-26.117zm64.313-405.86c12.715-22.125 33.496-34.18 58.926-34.18 27.48 0 48.918 12.742 64.312 38.828l22.777 38.172-79.051 136.66-127.91-74.352zm9.351 521.72c-38.172 0-69.645-31.477-69.645-69.648 0-10.719 4.703-28.82 11.402-40.195l21.41-38.172h158.76v148.02h-121.92zm127.29-525.76c-10.036-17.391-23.434-29.477-39.512-36.18h164.75c14.738 0 26.113 6.047 32.84 17.445l40.852 69.648 44.191-26.141-71.016 127.28-145.3-2.047 44.871-25.43zm253.86 379.09c20.07 0 36.832-5.359 50.887-16.055l-83.07 144.65c-6.699 11.375-18.73 18.078-32.789 18.078h-78.395v51.57l-75.004-125.23 75.004-125.27v52.258h143.37zm64.258-120.56c6.043 10.719 9.406 22.094 9.406 34.156 0 24.117-15.422 49.57-36.832 61.602-10.062 5.391-24.145 8.75-38.172 8.75h-44.242l-79-136.66 127.92-73.008z" fill="#515e5e"/>
</g>
</g>
<rect transform="matrix(.57488 .81824 -.81993 .57247 0 0)" x="409.24" y="-521.16" width="66.549" height="882.4" ry="6.6154" fill="#515e5e" stroke-width="46.779"/></g>
<g transform="translate(691.01 5483.9)" fill="#009700"><g fill="#009700"/></g></g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version="1.1"
id="Capa_1"
x="0px"
y="0px"
width="17.950113"
height="17.528971"
viewBox="0 0 628.25396 613.51398"
enable-background="new 0 0 628.254 613.516"
xml:space="preserve"
sodipodi:docname="recycling-disabled.svg"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs852"><mask
maskUnits="userSpaceOnUse"
id="mask5629"><g
id="g5637"><rect
style="fill:#ffffff;fill-opacity:1;stroke-width:35"
id="rect5631"
width="941.77148"
height="797.16864"
x="-156.40842"
y="-66.330254" /><g
id="g5635"
transform="matrix(0.33928267,0.49060087,-0.82247774,0.5687973,533.90968,-40.842969)"
style="display:inline;fill:#829798;fill-opacity:1"><rect
style="fill:#000000;fill-opacity:1;stroke-width:35"
id="rect5633"
width="105.67117"
height="767.50659"
x="285.00284"
y="13.386533" /></g></g></mask></defs><sodipodi:namedview
id="namedview850"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="8"
inkscape:cx="5.9375"
inkscape:cy="27.875"
inkscape:window-width="1920"
inkscape:window-height="1048"
inkscape:window-x="1920"
inkscape:window-y="32"
inkscape:window-maximized="1"
inkscape:current-layer="g845"
width="5px"
viewbox-width="50000"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
scale-x="35"
viewbox-height="50000"
inkscape:snap-others="false"
inkscape:snap-nodes="false"
inkscape:snap-global="false" />
<g
id="g847"
transform="translate(-29.186252,-6.0669072)"
style="display:inline">
<g
id="g845"
style="display:inline;fill:#829798;fill-opacity:1"
transform="translate(29.186252,6.0669072)">
<g
id="g843"
style="fill:#829798;fill-opacity:1"
mask="url(#mask5629)">
<g
id="g841"
style="fill:#829798;fill-opacity:1"
mask="none">
<path
d="m 99.777,446.086 c -6.699,12.031 -12.031,30.133 -12.031,41.539 0,2.648 0,6.016 0.656,10.688 L 4.676,354.32 C 1.996,349.648 0,342.945 0,336.906 0,330.859 1.996,323.508 4.676,318.828 L 44.871,248.5 0,223.07 146.016,220.367 217,348.281 171.473,322.164 Z M 164.09,40.227 c 12.715,-22.125 33.496,-34.18 58.926,-34.18 27.48,0 48.918,12.742 64.312,38.828 L 310.105,83.047 231.054,219.711 103.14,145.359 Z m 9.351,521.718 c -38.172,0 -69.645,-31.477 -69.645,-69.648 0,-10.719 4.703,-28.82 11.402,-40.195 l 21.41,-38.172 H 295.366 V 561.946 H 173.441 Z M 300.727,36.18 C 290.691,18.789 277.293,6.703 261.215,0 h 164.746 c 14.738,0 26.113,6.047 32.84,17.445 l 40.852,69.648 44.191,-26.141 -71.016,127.281 -145.305,-2.047 44.871,-25.43 z M 554.59,415.273 c 20.07,0 36.832,-5.359 50.887,-16.055 l -83.07,144.648 c -6.699,11.375 -18.73,18.078 -32.789,18.078 h -78.395 v 51.57 L 336.219,488.28 411.223,363.014 v 52.258 H 554.59 Z m 64.258,-120.562 c 6.043,10.719 9.406,22.094 9.406,34.156 0,24.117 -15.422,49.57 -36.832,61.602 -10.062,5.391 -24.145,8.75 -38.172,8.75 h -44.242 l -79,-136.664 127.918,-73.008 z"
id="path839"
style="fill:#515e5e;fill-opacity:1" />
</g>
</g><g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Layer 1"
style="display:inline" />
<rect
style="fill:#515e5e;fill-opacity:1;stroke-width:46.7791"
id="rect5663"
width="66.548668"
height="882.39917"
x="409.23654"
y="-521.16138"
transform="matrix(0.57488045,0.81823741,-0.8199257,0.57246995,0,0)"
ry="6.6153665" /></g>
<g
id="g3362"
style="fill:#009700;fill-opacity:1"
transform="translate(691.01213,5483.8793)"><g
id="g3360"
style="fill:#009700;fill-opacity:1"><g
id="g3358"
style="fill:#009700;fill-opacity:1" /></g></g></g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

13
assets/recycling-web.svg Normal file
View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg width="18.773" height="92.052" enable-background="new 0 0 628.254 613.516" version="1.1" viewBox="0 0 657.07 3221.8" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(-14.777 -6.0669)">
<g transform="translate(29.186 6.0669)" fill="#829798">
<g fill="#829798">
<g fill="#829798">
<path d="m99.777 446.09c-6.699 12.031-12.031 30.133-12.031 41.539 0 2.648 0 6.016 0.656 10.688l-83.726-143.99c-2.68-4.672-4.676-11.375-4.676-17.414 0-6.047 1.996-13.398 4.676-18.078l40.195-70.328-44.871-25.43 146.02-2.703 70.984 127.91-45.527-26.117zm64.313-405.86c12.715-22.125 33.496-34.18 58.926-34.18 27.48 0 48.918 12.742 64.312 38.828l22.777 38.172-79.051 136.66-127.91-74.352zm9.351 521.72c-38.172 0-69.645-31.477-69.645-69.648 0-10.719 4.703-28.82 11.402-40.195l21.41-38.172h158.76v148.02h-121.92zm127.29-525.76c-10.036-17.391-23.434-29.477-39.512-36.18h164.75c14.738 0 26.113 6.047 32.84 17.445l40.852 69.648 44.191-26.141-71.016 127.28-145.3-2.047 44.871-25.43zm253.86 379.09c20.07 0 36.832-5.359 50.887-16.055l-83.07 144.65c-6.699 11.375-18.73 18.078-32.789 18.078h-78.395v51.57l-75.004-125.23 75.004-125.27v52.258h143.37zm64.258-120.56c6.043 10.719 9.406 22.094 9.406 34.156 0 24.117-15.422 49.57-36.832 61.602-10.062 5.391-24.145 8.75-38.172 8.75h-44.242l-79-136.66 127.92-73.008z" fill="#829798"/>
</g>
</g>
</g><g fill="#009700"><g transform="translate(29.186 2615.9)"><g fill="#009700"><g fill="#009700"><path d="m99.777 446.09c-6.699 12.031-12.031 30.133-12.031 41.539 0 2.648 0 6.016 0.656 10.688l-83.726-143.99c-2.68-4.672-4.676-11.375-4.676-17.414 0-6.047 1.996-13.398 4.676-18.078l97.831-167.4-44.871-25.43 146.02-2.703 70.984 127.91-45.527-26.117zm64.313-405.86c12.715-22.125 33.496-34.18 58.926-34.18 27.48 0 48.918 12.742 64.312 38.828l22.777 38.172-21.415 39.593-127.91-74.352zm9.351 521.72c-38.172 0-69.645-31.477-69.645-69.648 0-10.719 4.703-28.82 11.402-40.195l21.41-38.172 40.453-1.5167v148.02l-3.6203 1.5167zm127.29-525.76c-10.036-17.391-23.434-29.477-39.512-36.18h164.75c14.738 0 26.113 6.047 32.84 17.445l110.62 189.47 44.191-26.141-71.016 127.28-145.3-2.047 44.871-25.43zm253.86 379.09c20.07 0 36.832-5.359 50.887-16.055l-83.07 144.65c-6.699 11.375-18.73 18.078-32.789 18.078l-196.7-1.5167v51.57l-75.004-125.23 75.004-125.27v52.258l261.67 1.5167zm64.258-120.56c6.043 10.719 9.406 22.094 9.406 34.156 0 24.117-15.422 49.57-36.832 61.602-10.062 5.391-24.145 8.75-38.172 8.75h-44.242l-9.2306-16.843 127.92-73.008z" fill="#009700"/></g></g></g>
<g transform="translate(691.01 5483.9)"><g fill="#009700"/></g><g transform="translate(43.595 1298.9)"><g fill="#009700"><g fill="#009700"><path d="m99.777 446.09c-6.699 12.031-12.031 30.133-12.031 41.539 0 2.648 0 6.016 0.656 10.688l-83.726-143.99c-2.68-4.672-4.676-11.375-4.676-17.414 0-6.047 1.996-13.398 4.676-18.078l11.377-17.243-44.871-25.43 146.02-2.703 70.984 127.91-45.527-26.117zm64.313-405.86c12.715-22.125 33.496-34.18 58.926-34.18 27.48 0 48.918 12.742 64.312 38.828l22.777 38.172-107.87 189.75-127.91-74.352zm9.351 521.72c-38.172 0-69.645-31.477-69.645-69.648 0-10.719 4.703-28.82 11.402-40.195l21.41-38.172h216.39v148.02h-179.56zm127.29-525.76c-10.036-17.391-23.434-29.477-39.512-36.18h164.75c14.738 0 26.113 6.047 32.84 17.445l13.551 2.912 44.191-26.141-71.016 127.28-145.3-2.047 44.871-25.43zm253.86 379.09c20.07 0 36.832-5.359 50.887-16.055l-83.07 144.65c-6.699 11.375-18.73 18.078-32.789 18.078h-20.759v51.57l-75.004-125.23 75.004-125.27v52.258h85.731zm64.258-120.56c6.043 10.719 9.406 22.094 9.406 34.156 0 24.117-15.422 49.57-36.832 61.602-10.062 5.391-24.145 8.75-38.172 8.75h-44.242l-116.92-210.98 127.92-73.008z" fill="#009700"/></g></g></g><g transform="translate(29.186 1942.4)"><g fill="#009700"><g fill="#009700"><path d="m99.777 446.09c-6.699 12.031-12.031 30.133-12.031 41.539 0 2.648 0 6.016 0.656 10.688l-83.726-143.99c-2.68-4.672-4.676-11.375-4.676-17.414 0-6.047 1.996-13.398 4.676-18.078l40.195-70.328-44.871-25.43 146.02-2.703 70.984 127.91-45.527-26.117zm64.313-405.86c12.715-22.125 33.496-34.18 58.926-34.18 27.48 0 48.918 12.742 64.312 38.828l22.777 38.172-79.051 136.66-127.91-74.352zm9.351 521.72c-38.172 0-69.645-31.477-69.645-69.648 0-10.719 4.703-28.82 11.402-40.195l21.41-38.172h158.76v148.02h-121.92zm127.29-525.76c-10.036-17.391-23.434-29.477-39.512-36.18h164.75c14.738 0 26.113 6.047 32.84 17.445l40.852 69.648 44.191-26.141-71.016 127.28-145.3-2.047 44.871-25.43zm253.86 379.09c20.07 0 36.832-5.359 50.887-16.055l-83.07 144.65c-6.699 11.375-18.73 18.078-32.789 18.078h-78.395v51.57l-75.004-125.23 75.004-125.27v52.258h143.37zm64.258-120.56c6.043 10.719 9.406 22.094 9.406 34.156 0 24.117-15.422 49.57-36.832 61.602-10.062 5.391-24.145 8.75-38.172 8.75h-44.242l-79-136.66 127.92-73.008z" fill="#009700"/></g></g></g></g><g transform="translate(29.186 649.58)" fill="#829798"><g fill="#829798"><g fill="#829798"><path d="m99.777 446.09c-6.699 12.031-12.031 30.133-12.031 41.539 0 2.648 0 6.016 0.656 10.688l-83.726-143.99c-2.68-4.672-4.676-11.375-4.676-17.414 0-6.047 1.996-13.398 4.676-18.078l76.66-134.68-44.871-25.43 146.02-2.703 70.984 127.91-45.527-26.117zm64.313-405.86c12.715-22.125 33.496-34.18 58.926-34.18 27.48 0 48.918 12.742 64.312 38.828l22.777 38.172-42.586 72.315-127.91-74.352zm9.351 521.72c-38.172 0-69.645-31.477-69.645-69.648 0-10.719 4.703-28.82 11.402-40.195l21.41-38.172h111.57v148.02h-74.736zm127.29-525.76c-10.036-17.391-23.434-29.477-39.512-36.18h164.75c14.738 0 26.113 6.047 32.84 17.445l73.027 129.71 44.191-26.141-71.016 127.28-145.3-2.047 44.871-25.43zm253.86 379.09c20.07 0 36.832-5.359 50.887-16.055l-83.07 144.65c-6.699 11.375-18.73 18.078-32.789 18.078h-125.58v51.57l-75.004-125.23 75.004-125.27v52.258h190.56zm64.258-120.56c6.043 10.719 9.406 22.094 9.406 34.156 0 24.117-15.422 49.57-36.832 61.602-10.062 5.391-24.145 8.75-38.172 8.75h-44.242l-46.825-76.605 127.92-73.008z" fill="#009700"/></g></g></g></g>
</svg>

After

Width:  |  Height:  |  Size: 5.9 KiB

108
assets/recycling.svg Normal file
View File

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
version="1.1"
id="Capa_1"
x="0px"
y="0px"
width="628.254px"
height="613.516px"
viewBox="0 0 628.254 613.516"
enable-background="new 0 0 628.254 613.516"
xml:space="preserve"
sodipodi:docname="Recycling_symbol.svg"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs852" /><sodipodi:namedview
id="namedview850"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.11655144"
inkscape:cx="-4247.0517"
inkscape:cy="459.02478"
inkscape:window-width="2560"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g847" />
<g
id="g847">
<g
id="g845"
style="fill:#829798;fill-opacity:1"
transform="translate(29.186252,6.0669072)">
<g
id="g843"
style="fill:#829798;fill-opacity:1">
<g
id="g841"
style="fill:#829798;fill-opacity:1">
<path
d="m 99.777,446.086 c -6.699,12.031 -12.031,30.133 -12.031,41.539 0,2.648 0,6.016 0.656,10.688 L 4.676,354.32 C 1.996,349.648 0,342.945 0,336.906 0,330.859 1.996,323.508 4.676,318.828 L 44.871,248.5 0,223.07 146.016,220.367 217,348.281 171.473,322.164 Z M 164.09,40.227 c 12.715,-22.125 33.496,-34.18 58.926,-34.18 27.48,0 48.918,12.742 64.312,38.828 L 310.105,83.047 231.054,219.711 103.14,145.359 Z m 9.351,521.718 c -38.172,0 -69.645,-31.477 -69.645,-69.648 0,-10.719 4.703,-28.82 11.402,-40.195 l 21.41,-38.172 H 295.366 V 561.946 H 173.441 Z M 300.727,36.18 C 290.691,18.789 277.293,6.703 261.215,0 h 164.746 c 14.738,0 26.113,6.047 32.84,17.445 l 40.852,69.648 44.191,-26.141 -71.016,127.281 -145.305,-2.047 44.871,-25.43 z M 554.59,415.273 c 20.07,0 36.832,-5.359 50.887,-16.055 l -83.07,144.648 c -6.699,11.375 -18.73,18.078 -32.789,18.078 h -78.395 v 51.57 L 336.219,488.28 411.223,363.014 v 52.258 H 554.59 Z m 64.258,-120.562 c 6.043,10.719 9.406,22.094 9.406,34.156 0,24.117 -15.422,49.57 -36.832,61.602 -10.062,5.391 -24.145,8.75 -38.172,8.75 h -44.242 l -79,-136.664 127.918,-73.008 z"
id="path839"
style="fill:#829798;fill-opacity:1" />
</g>
</g>
</g><g
id="g845-0"
style="fill:#009700;fill-opacity:1"
transform="translate(29.186251,2615.9069)"><g
id="g843-4"
style="fill:#009700;fill-opacity:1"><g
id="g841-1"
style="fill:#009700;fill-opacity:1"><path
d="m 99.777,446.086 c -6.699,12.031 -12.031,30.133 -12.031,41.539 0,2.648 0,6.016 0.656,10.688 L 4.676,354.32 C 1.996,349.648 0,342.945 0,336.906 0,330.859 1.996,323.508 4.676,318.828 l 97.83062,-167.39852 -44.871002,-25.43 146.016002,-2.703 70.984,127.914 -45.527,-26.117 z M 164.09,40.227 c 12.715,-22.125 33.496,-34.18 58.926,-34.18 27.48,0 48.918,12.742 64.312,38.828 l 22.777,38.172 -21.41538,39.59348 -127.914,-74.351995 z m 9.351,521.718 c -38.172,0 -69.645,-31.477 -69.645,-69.648 0,-10.719 4.703,-28.82 11.402,-40.195 l 21.41,-38.172 40.45331,-1.51673 v 148.016 L 173.441,561.946 Z M 300.727,36.18 C 290.691,18.789 277.293,6.703 261.215,0 h 164.746 c 14.738,0 26.113,6.047 32.84,17.445 l 110.62143,189.46942 44.191,-26.141 -71.016,127.281 -145.305,-2.047 44.871,-25.43 z M 554.59,415.273 c 20.07,0 36.832,-5.359 50.887,-16.055 l -83.07,144.648 c -6.699,11.375 -18.73,18.078 -32.789,18.078 l -196.69969,-1.51673 v 51.57 l -75.004,-125.234 75.004,-125.266 v 52.258 L 554.59,415.272 Z m 64.258,-120.562 c 6.043,10.719 9.406,22.094 9.406,34.156 0,24.117 -15.422,49.57 -36.832,61.602 -10.062,5.391 -24.145,8.75 -38.172,8.75 h -44.242 l -9.23057,-16.84258 127.918,-73.008 z"
id="path839-9"
style="fill:#009700;fill-opacity:1"
sodipodi:nodetypes="csccsccccccccsccccccsccccccccsccccccccccsccccccccscscccc" /></g></g></g>
<g
id="g3362"
style="fill:#009700;fill-opacity:1"
transform="translate(691.01213,5483.8793)"><g
id="g3360"
style="fill:#009700;fill-opacity:1"><g
id="g3358"
style="fill:#009700;fill-opacity:1" /></g></g><g
id="g845-6"
style="fill:#009700;fill-opacity:1"
transform="translate(43.595156,1298.8789)"><g
id="g843-3"
style="fill:#009700;fill-opacity:1"><g
id="g841-4"
style="fill:#009700;fill-opacity:1"><path
d="m 99.777,446.086 c -6.699,12.031 -12.031,30.133 -12.031,41.539 0,2.648 0,6.016 0.656,10.688 L 4.676,354.32 C 1.996,349.648 0,342.945 0,336.906 0,330.859 1.996,323.508 4.676,318.828 l 11.377191,-17.24256 -44.871,-25.43 146.015999,-2.703 70.984,127.914 -45.527,-26.117 z M 164.09,40.227 c 12.715,-22.125 33.496,-34.18 58.926,-34.18 27.48,0 48.918,12.742 64.312,38.828 l 22.777,38.172 -107.86881,189.74944 -127.913999,-74.352 z m 9.351,521.718 c -38.172,0 -69.645,-31.477 -69.645,-69.648 0,-10.719 4.703,-28.82 11.402,-40.195 l 21.41,-38.172 H 353.00162 V 561.946 H 173.441 Z M 300.727,36.18 C 290.691,18.789 277.293,6.703 261.215,0 h 164.746 c 14.738,0 26.113,6.047 32.84,17.445 l 13.55092,2.912021 44.191,-26.1410002 -71.016,127.2809992 -145.305,-2.047 44.871,-25.429999 z M 554.59,415.273 c 20.07,0 36.832,-5.359 50.887,-16.055 l -83.07,144.648 c -6.699,11.375 -18.73,18.078 -32.789,18.078 h -20.75938 v 51.57 l -75.004,-125.234 75.004,-125.266 v 52.258 H 554.59 Z m 64.258,-120.562 c 6.043,10.719 9.406,22.094 9.406,34.156 0,24.117 -15.422,49.57 -36.832,61.602 -10.062,5.391 -24.145,8.75 -38.172,8.75 h -44.242 l -116.91817,-210.98361 127.918,-73.008 z"
id="path839-2"
style="fill:#009700;fill-opacity:1"
sodipodi:nodetypes="csccsccccccccsccccccsccccccccsccccccccccsccccccccscscccc" /></g></g></g><g
id="g845-8"
style="fill:#009700;fill-opacity:1"
transform="translate(29.186251,1942.3929)"><g
id="g843-8"
style="fill:#009700;fill-opacity:1"><g
id="g841-42"
style="fill:#009700;fill-opacity:1"><path
d="m 99.777,446.086 c -6.699,12.031 -12.031,30.133 -12.031,41.539 0,2.648 0,6.016 0.656,10.688 L 4.676,354.32 C 1.996,349.648 0,342.945 0,336.906 0,330.859 1.996,323.508 4.676,318.828 L 44.871,248.5 0,223.07 146.016,220.367 217,348.281 171.473,322.164 Z M 164.09,40.227 c 12.715,-22.125 33.496,-34.18 58.926,-34.18 27.48,0 48.918,12.742 64.312,38.828 L 310.105,83.047 231.054,219.711 103.14,145.359 Z m 9.351,521.718 c -38.172,0 -69.645,-31.477 -69.645,-69.648 0,-10.719 4.703,-28.82 11.402,-40.195 l 21.41,-38.172 H 295.366 V 561.946 H 173.441 Z M 300.727,36.18 C 290.691,18.789 277.293,6.703 261.215,0 h 164.746 c 14.738,0 26.113,6.047 32.84,17.445 l 40.852,69.648 44.191,-26.141 -71.016,127.281 -145.305,-2.047 44.871,-25.43 z M 554.59,415.273 c 20.07,0 36.832,-5.359 50.887,-16.055 l -83.07,144.648 c -6.699,11.375 -18.73,18.078 -32.789,18.078 h -78.395 v 51.57 L 336.219,488.28 411.223,363.014 v 52.258 H 554.59 Z m 64.258,-120.562 c 6.043,10.719 9.406,22.094 9.406,34.156 0,24.117 -15.422,49.57 -36.832,61.602 -10.062,5.391 -24.145,8.75 -38.172,8.75 h -44.242 l -79,-136.664 127.918,-73.008 z"
id="path839-4"
style="fill:#009700;fill-opacity:1" /></g></g></g><g
id="g845-9"
style="fill:#829798;fill-opacity:1"
transform="translate(29.186251,649.58091)"><g
id="g843-7"
style="fill:#829798;fill-opacity:1"><g
id="g841-3"
style="fill:#829798;fill-opacity:1"><path
d="m 99.777,446.086 c -6.699,12.031 -12.031,30.133 -12.031,41.539 0,2.648 0,6.016 0.656,10.688 L 4.676,354.32 C 1.996,349.648 0,342.945 0,336.906 0,330.859 1.996,323.508 4.676,318.828 l 76.659585,-134.67727 -44.871,-25.43 146.016005,-2.703 70.984,127.914 -45.527,-26.117 z M 164.09,40.227 c 12.715,-22.125 33.496,-34.18 58.926,-34.18 27.48,0 48.918,12.742 64.312,38.828 l 22.777,38.172 -42.58641,72.31473 -127.914,-74.351998 z m 9.351,521.718 c -38.172,0 -69.645,-31.477 -69.645,-69.648 0,-10.719 4.703,-28.82 11.402,-40.195 l 21.41,-38.172 H 248.17654 V 561.946 H 173.441 Z M 300.727,36.18 C 290.691,18.789 277.293,6.703 261.215,0 h 164.746 c 14.738,0 26.113,6.047 32.84,17.445 l 73.02663,129.70732 44.191,-26.141 -71.016,127.281 -145.305,-2.047 44.871,-25.43 z M 554.59,415.273 c 20.07,0 36.832,-5.359 50.887,-16.055 l -83.07,144.648 c -6.699,11.375 -18.73,18.078 -32.789,18.078 H 364.03354 v 51.57 l -75.004,-125.234 75.004,-125.266 v 52.258 H 554.59 Z m 64.258,-120.562 c 6.043,10.719 9.406,22.094 9.406,34.156 0,24.117 -15.422,49.57 -36.832,61.602 -10.062,5.391 -24.145,8.75 -38.172,8.75 h -44.242 l -46.82537,-76.60468 127.918,-73.008 z"
id="path839-26"
style="fill:#009700;fill-opacity:1"
sodipodi:nodetypes="csccsccccccccsccccccsccccccccsccccccccccsccccccccscscccc" /></g></g></g></g>
</svg>

After

Width:  |  Height:  |  Size: 8.8 KiB

485
assets/solarpanel-bg.svg Normal file
View File

@ -0,0 +1,485 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="391.91199mm"
height="62.185497mm"
viewBox="0 0 391.91199 62.185497"
version="1.1"
id="svg5"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="solarpanel-bg.svg"
inkscape:export-filename="/home/vv/Downloads/solarpanel-web.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#505050"
bordercolor="#eeeeee"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="false"
inkscape:document-units="mm"
showgrid="false"
fit-margin-top="3"
fit-margin-left="10"
fit-margin-right="10"
fit-margin-bottom="3"
lock-margins="false"
inkscape:zoom="0.52661995"
inkscape:cx="721.58299"
inkscape:cy="95.894582"
inkscape:window-width="1920"
inkscape:window-height="1043"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs2">
<inkscape:path-effect
effect="powerclip"
id="path-effect2133"
is_visible="true"
lpeversion="1"
inverse="true"
flatten="false"
hide_clip="false"
message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." />
<inkscape:path-effect
effect="powerclip"
id="path-effect2114"
is_visible="true"
lpeversion="1"
inverse="true"
flatten="false"
hide_clip="false"
message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." />
<inkscape:path-effect
effect="powerclip"
id="path-effect2095"
is_visible="true"
lpeversion="1"
inverse="true"
flatten="false"
hide_clip="false"
message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." />
<inkscape:path-effect
effect="powerclip"
id="path-effect2076"
is_visible="true"
lpeversion="1"
inverse="true"
flatten="false"
hide_clip="false"
message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." />
<inkscape:path-effect
effect="powerclip"
id="path-effect2057"
is_visible="true"
lpeversion="1"
inverse="true"
flatten="false"
hide_clip="false"
message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." />
<inkscape:path-effect
effect="powerclip"
id="path-effect1470"
is_visible="true"
lpeversion="1"
inverse="true"
flatten="false"
hide_clip="false"
message="Use fill-rule evenodd on &lt;b&gt;fill and stroke&lt;/b&gt; dialog if no flatten result after convert clip to paths." />
<inkscape:path-effect
effect="powermask"
id="path-effect16435"
is_visible="true"
lpeversion="1"
uri="#mask-powermask-path-effect16435"
invert="false"
hide_mask="false"
background="true"
background_color="#ffffffff" />
<inkscape:path-effect
effect="powermask"
id="path-effect16046"
is_visible="true"
lpeversion="1"
uri="#mask-powermask-path-effect16046"
invert="false"
hide_mask="false"
background="true"
background_color="#ffffffff" />
<filter
id="mask-powermask-path-effect15921_inverse"
inkscape:label="filtermask-powermask-path-effect15921"
style="color-interpolation-filters:sRGB"
height="100"
width="100"
x="-50"
y="-50">
<feColorMatrix
id="mask-powermask-path-effect15921_primitive1"
values="1"
type="saturate"
result="fbSourceGraphic" />
<feColorMatrix
id="mask-powermask-path-effect15921_primitive2"
values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
in="fbSourceGraphic" />
</filter>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1458">
<g
id="g1468"
style="display:none">
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect1460"
width="3.9140396"
height="73.915474"
x="20.514772"
y="65.61702"
d="m 20.514772,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect1462"
width="3.9140396"
height="73.915474"
x="60.408058"
y="65.61702"
d="m 60.408058,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect1464"
width="3.9140396"
height="73.915474"
x="33.812534"
y="65.61702"
d="m 33.812534,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect1466"
width="3.9140396"
height="73.915474"
x="47.110298"
y="65.61702"
d="m 47.110298,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
</g>
<path
id="lpe_path-effect1470"
class="powerclip"
d="M 9.7406464,68.901375 H 75.111397 V 135.08687 H 9.7406464 Z M 20.514772,65.61702 v 73.91547 h 3.91404 V 65.61702 Z m 39.893286,0 v 73.91547 h 3.91404 V 65.61702 Z m -26.595524,0 v 73.91547 h 3.91404 V 65.61702 Z m 13.297764,0 v 73.91547 h 3.91404 V 65.61702 Z" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipath_lpe_path-effect2057">
<g
id="g2067"
style="display:none">
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2059"
width="3.9140396"
height="73.915474"
x="20.514772"
y="65.61702"
d="m 20.514772,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2061"
width="3.9140396"
height="73.915474"
x="60.408058"
y="65.61702"
d="m 60.408058,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2063"
width="3.9140396"
height="73.915474"
x="33.812534"
y="65.61702"
d="m 33.812534,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2065"
width="3.9140396"
height="73.915474"
x="47.110298"
y="65.61702"
d="m 47.110298,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
</g>
<path
id="lpe_path-effect2057"
class="powerclip"
d="M 9.7406464,68.901375 H 75.111397 V 135.08687 H 9.7406464 Z M 20.514772,65.61702 v 73.91547 h 3.91404 V 65.61702 Z m 39.893286,0 v 73.91547 h 3.91404 V 65.61702 Z m -26.595524,0 v 73.91547 h 3.91404 V 65.61702 Z m 13.297764,0 v 73.91547 h 3.91404 V 65.61702 Z" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipath_lpe_path-effect2076">
<g
id="g2086"
style="display:none">
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2078"
width="3.9140396"
height="73.915474"
x="20.514772"
y="65.61702"
d="m 20.514772,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2080"
width="3.9140396"
height="73.915474"
x="60.408058"
y="65.61702"
d="m 60.408058,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2082"
width="3.9140396"
height="73.915474"
x="33.812534"
y="65.61702"
d="m 33.812534,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2084"
width="3.9140396"
height="73.915474"
x="47.110298"
y="65.61702"
d="m 47.110298,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
</g>
<path
id="lpe_path-effect2076"
class="powerclip"
d="M 9.7406464,68.901375 H 75.111397 V 135.08687 H 9.7406464 Z M 20.514772,65.61702 v 73.91547 h 3.91404 V 65.61702 Z m 39.893286,0 v 73.91547 h 3.91404 V 65.61702 Z m -26.595524,0 v 73.91547 h 3.91404 V 65.61702 Z m 13.297764,0 v 73.91547 h 3.91404 V 65.61702 Z" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipath_lpe_path-effect2095">
<g
id="g2105"
style="display:none">
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2097"
width="3.9140396"
height="73.915474"
x="20.514772"
y="65.61702"
d="m 20.514772,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2099"
width="3.9140396"
height="73.915474"
x="60.408058"
y="65.61702"
d="m 60.408058,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2101"
width="3.9140396"
height="73.915474"
x="33.812534"
y="65.61702"
d="m 33.812534,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2103"
width="3.9140396"
height="73.915474"
x="47.110298"
y="65.61702"
d="m 47.110298,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
</g>
<path
id="lpe_path-effect2095"
class="powerclip"
d="M 9.7406464,68.901375 H 75.111397 V 135.08687 H 9.7406464 Z M 20.514772,65.61702 v 73.91547 h 3.91404 V 65.61702 Z m 39.893286,0 v 73.91547 h 3.91404 V 65.61702 Z m -26.595524,0 v 73.91547 h 3.91404 V 65.61702 Z m 13.297764,0 v 73.91547 h 3.91404 V 65.61702 Z" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipath_lpe_path-effect2114">
<g
id="g2124"
style="display:none">
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2116"
width="3.9140396"
height="73.915474"
x="20.514772"
y="65.61702"
d="m 20.514772,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2118"
width="3.9140396"
height="73.915474"
x="60.408058"
y="65.61702"
d="m 60.408058,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2120"
width="3.9140396"
height="73.915474"
x="33.812534"
y="65.61702"
d="m 33.812534,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2122"
width="3.9140396"
height="73.915474"
x="47.110298"
y="65.61702"
d="m 47.110298,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
</g>
<path
id="lpe_path-effect2114"
class="powerclip"
d="M 9.7406464,68.901375 H 75.111397 V 135.08687 H 9.7406464 Z M 20.514772,65.61702 v 73.91547 h 3.91404 V 65.61702 Z m 39.893286,0 v 73.91547 h 3.91404 V 65.61702 Z m -26.595524,0 v 73.91547 h 3.91404 V 65.61702 Z m 13.297764,0 v 73.91547 h 3.91404 V 65.61702 Z" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipath_lpe_path-effect2133">
<g
id="g2143"
style="display:none">
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2135"
width="3.9140396"
height="73.915474"
x="20.514772"
y="65.61702"
d="m 20.514772,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2137"
width="3.9140396"
height="73.915474"
x="60.408058"
y="65.61702"
d="m 60.408058,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2139"
width="3.9140396"
height="73.915474"
x="33.812534"
y="65.61702"
d="m 33.812534,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
<rect
style="fill:#000000;stroke-width:7.52318"
id="rect2141"
width="3.9140396"
height="73.915474"
x="47.110298"
y="65.61702"
d="m 47.110298,65.61702 h 3.91404 v 73.91547 h -3.91404 z" />
</g>
<path
id="lpe_path-effect2133"
class="powerclip"
d="M 9.7406464,68.901375 H 75.111397 V 135.08687 H 9.7406464 Z M 20.514772,65.61702 v 73.91547 h 3.91404 V 65.61702 Z m 39.893286,0 v 73.91547 h 3.91404 V 65.61702 Z m -26.595524,0 v 73.91547 h 3.91404 V 65.61702 Z m 13.297764,0 v 73.91547 h 3.91404 V 65.61702 Z" />
</clipPath>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-4.7406464,-70.901375)">
<path
style="fill:#020312;fill-opacity:1;stroke:#020312;stroke-width:10.222;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
width="45.14875"
height="45.963497"
x="19.851646"
y="79.012375"
mask="none"
sodipodi:type="rect"
clip-path="url(#clipPath1458)"
id="path16837"
d="M 19.851646,79.012375 H 65.000397 V 124.97587 H 19.851646 Z"
inkscape:path-effect="#path-effect1470" />
<path
style="fill:#020312;fill-opacity:1;stroke:#020312;stroke-width:10.222;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
width="45.14875"
height="45.963497"
x="19.851646"
y="79.012375"
mask="none"
sodipodi:type="rect"
clip-path="url(#clipath_lpe_path-effect2057)"
id="path2053"
d="M 19.851646,79.012375 H 65.000397 V 124.97587 H 19.851646 Z"
inkscape:path-effect="#path-effect2057"
transform="translate(63.30825)" />
<path
style="fill:#020312;fill-opacity:1;stroke:#020312;stroke-width:10.222;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
width="45.14875"
height="45.963497"
x="19.851646"
y="79.012375"
mask="none"
sodipodi:type="rect"
clip-path="url(#clipath_lpe_path-effect2076)"
id="path2072"
d="M 19.851646,79.012375 H 65.000397 V 124.97587 H 19.851646 Z"
inkscape:path-effect="#path-effect2076"
transform="translate(126.6165)" />
<path
style="fill:#020312;fill-opacity:1;stroke:#020312;stroke-width:10.222;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
width="45.14875"
height="45.963497"
x="19.851646"
y="79.012375"
mask="none"
sodipodi:type="rect"
clip-path="url(#clipath_lpe_path-effect2095)"
id="path2091"
d="M 19.851646,79.012375 H 65.000397 V 124.97587 H 19.851646 Z"
inkscape:path-effect="#path-effect2095"
transform="translate(189.92475)" />
<path
style="fill:#020312;fill-opacity:1;stroke:#020312;stroke-width:10.222;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
width="45.14875"
height="45.963497"
x="19.851646"
y="79.012375"
mask="none"
sodipodi:type="rect"
clip-path="url(#clipath_lpe_path-effect2114)"
id="path2110"
d="M 19.851646,79.012375 H 65.000397 V 124.97587 H 19.851646 Z"
inkscape:path-effect="#path-effect2114"
transform="translate(253.233)" />
<path
style="fill:#020312;fill-opacity:1;stroke:#020312;stroke-width:10.222;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
width="45.14875"
height="45.963497"
x="19.851646"
y="79.012375"
mask="none"
sodipodi:type="rect"
clip-path="url(#clipath_lpe_path-effect2133)"
id="path2129"
d="M 19.851646,79.012375 H 65.000397 V 124.97587 H 19.851646 Z"
inkscape:path-effect="#path-effect2133"
transform="translate(316.54125)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="391.91mm" height="62.185mm" version="1.1" viewBox="0 0 391.91 62.185" xmlns="http://www.w3.org/2000/svg">
<defs>
<clipPath id="clipPath1458">
<g display="none">
<rect x="20.515" y="65.617" width="3.914" height="73.915" d="m 20.514772,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="60.408" y="65.617" width="3.914" height="73.915" d="m 60.408058,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="33.813" y="65.617" width="3.914" height="73.915" d="m 33.812534,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="47.11" y="65.617" width="3.914" height="73.915" d="m 47.110298,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
</g>
<path class="powerclip" d="m9.7406 68.901h65.371v66.185h-65.371zm10.774-3.2844v73.915h3.914v-73.915zm39.893 0v73.915h3.914v-73.915zm-26.596 0v73.915h3.914v-73.915zm13.298 0v73.915h3.914v-73.915z"/>
</clipPath>
<clipPath id="clipath_lpe_path-effect2057">
<g display="none">
<rect x="20.515" y="65.617" width="3.914" height="73.915" d="m 20.514772,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="60.408" y="65.617" width="3.914" height="73.915" d="m 60.408058,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="33.813" y="65.617" width="3.914" height="73.915" d="m 33.812534,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="47.11" y="65.617" width="3.914" height="73.915" d="m 47.110298,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
</g>
<path class="powerclip" d="m9.7406 68.901h65.371v66.185h-65.371zm10.774-3.2844v73.915h3.914v-73.915zm39.893 0v73.915h3.914v-73.915zm-26.596 0v73.915h3.914v-73.915zm13.298 0v73.915h3.914v-73.915z"/>
</clipPath>
<clipPath id="clipath_lpe_path-effect2076">
<g display="none">
<rect x="20.515" y="65.617" width="3.914" height="73.915" d="m 20.514772,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="60.408" y="65.617" width="3.914" height="73.915" d="m 60.408058,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="33.813" y="65.617" width="3.914" height="73.915" d="m 33.812534,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="47.11" y="65.617" width="3.914" height="73.915" d="m 47.110298,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
</g>
<path class="powerclip" d="m9.7406 68.901h65.371v66.185h-65.371zm10.774-3.2844v73.915h3.914v-73.915zm39.893 0v73.915h3.914v-73.915zm-26.596 0v73.915h3.914v-73.915zm13.298 0v73.915h3.914v-73.915z"/>
</clipPath>
<clipPath id="clipath_lpe_path-effect2095">
<g display="none">
<rect x="20.515" y="65.617" width="3.914" height="73.915" d="m 20.514772,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="60.408" y="65.617" width="3.914" height="73.915" d="m 60.408058,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="33.813" y="65.617" width="3.914" height="73.915" d="m 33.812534,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="47.11" y="65.617" width="3.914" height="73.915" d="m 47.110298,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
</g>
<path class="powerclip" d="m9.7406 68.901h65.371v66.185h-65.371zm10.774-3.2844v73.915h3.914v-73.915zm39.893 0v73.915h3.914v-73.915zm-26.596 0v73.915h3.914v-73.915zm13.298 0v73.915h3.914v-73.915z"/>
</clipPath>
<clipPath id="clipath_lpe_path-effect2114">
<g display="none">
<rect x="20.515" y="65.617" width="3.914" height="73.915" d="m 20.514772,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="60.408" y="65.617" width="3.914" height="73.915" d="m 60.408058,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="33.813" y="65.617" width="3.914" height="73.915" d="m 33.812534,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="47.11" y="65.617" width="3.914" height="73.915" d="m 47.110298,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
</g>
<path class="powerclip" d="m9.7406 68.901h65.371v66.185h-65.371zm10.774-3.2844v73.915h3.914v-73.915zm39.893 0v73.915h3.914v-73.915zm-26.596 0v73.915h3.914v-73.915zm13.298 0v73.915h3.914v-73.915z"/>
</clipPath>
<clipPath id="clipath_lpe_path-effect2133">
<g display="none">
<rect x="20.515" y="65.617" width="3.914" height="73.915" d="m 20.514772,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="60.408" y="65.617" width="3.914" height="73.915" d="m 60.408058,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="33.813" y="65.617" width="3.914" height="73.915" d="m 33.812534,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="47.11" y="65.617" width="3.914" height="73.915" d="m 47.110298,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
</g>
<path class="powerclip" d="m9.7406 68.901h65.371v66.185h-65.371zm10.774-3.2844v73.915h3.914v-73.915zm39.893 0v73.915h3.914v-73.915zm-26.596 0v73.915h3.914v-73.915zm13.298 0v73.915h3.914v-73.915z"/>
</clipPath>
</defs>
<g transform="translate(-4.7406 -70.901)" fill="#020312" stroke="#020312" stroke-linejoin="bevel" stroke-width="10.222">
<path x="19.851646" y="79.012375" width="45.14875" height="45.963497" d="m19.852 79.012h45.149v45.963h-45.149z" clip-path="url(#clipPath1458)" style="paint-order:normal"/>
<path transform="translate(63.308)" x="19.851646" y="79.012375" width="45.14875" height="45.963497" d="m19.852 79.012h45.149v45.963h-45.149z" clip-path="url(#clipath_lpe_path-effect2057)" style="paint-order:normal"/>
<path transform="translate(126.62)" x="19.851646" y="79.012375" width="45.14875" height="45.963497" d="m19.852 79.012h45.149v45.963h-45.149z" clip-path="url(#clipath_lpe_path-effect2076)" style="paint-order:normal"/>
<path transform="translate(189.92)" x="19.851646" y="79.012375" width="45.14875" height="45.963497" d="m19.852 79.012h45.149v45.963h-45.149z" clip-path="url(#clipath_lpe_path-effect2095)" style="paint-order:normal"/>
<path transform="translate(253.23)" x="19.851646" y="79.012375" width="45.14875" height="45.963497" d="m19.852 79.012h45.149v45.963h-45.149z" clip-path="url(#clipath_lpe_path-effect2114)" style="paint-order:normal"/>
<path transform="translate(316.54)" x="19.851646" y="79.012375" width="45.14875" height="45.963497" d="m19.852 79.012h45.149v45.963h-45.149z" clip-path="url(#clipath_lpe_path-effect2133)" style="paint-order:normal"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

18
assets/solarpanel-web.svg Normal file
View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg width="61.371mm" height="62.185mm" version="1.1" viewBox="0 0 61.371 62.185" xmlns="http://www.w3.org/2000/svg">
<defs>
<clipPath id="clipPath1458">
<g display="none">
<rect x="20.515" y="65.617" width="3.914" height="73.915" d="m 20.514772,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="60.408" y="65.617" width="3.914" height="73.915" d="m 60.408058,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="33.813" y="65.617" width="3.914" height="73.915" d="m 33.812534,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
<rect x="47.11" y="65.617" width="3.914" height="73.915" d="m 47.110298,65.61702 h 3.91404 v 73.91547 h -3.91404 z" stroke-width="7.5232"/>
</g>
<path class="powerclip" d="m9.7406 68.901h65.371v66.185h-65.371zm10.774-3.2844v73.915h3.914v-73.915zm39.893 0v73.915h3.914v-73.915zm-26.596 0v73.915h3.914v-73.915zm13.298 0v73.915h3.914v-73.915z"/>
</clipPath>
</defs>
<g transform="translate(-11.741 -70.901)">
<path x="19.851646" y="79.012375" width="45.14875" height="45.963497" d="m19.852 79.012h45.149v45.963h-45.149z" clip-path="url(#clipPath1458)" fill="#1d2335" stroke="#1d2335" stroke-linejoin="bevel" stroke-width="10.222" style="paint-order:normal"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

89
assets/solarpunksun-i.svg Normal file
View File

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="3.6008151mm"
height="3.6710939mm"
viewBox="0 0 3.600815 3.671094"
version="1.1"
id="svg5"
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
sodipodi:docname="solarpunksun-i.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="32"
inkscape:cx="-0.890625"
inkscape:cy="5.734375"
inkscape:window-width="2560"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-grids="false"
inkscape:snap-to-guides="false"
inkscape:snap-others="false"
inkscape:object-nodes="false"
inkscape:snap-nodes="false"
inkscape:snap-global="false" />
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-72.801721,-93.226971)">
<path
sodipodi:type="star"
style="fill:#ffb271;fill-opacity:1;stroke:none"
id="path4842"
inkscape:flatsided="false"
sodipodi:sides="8"
sodipodi:cx="-3.96875"
sodipodi:cy="5.59375"
sodipodi:r1="6.7791615"
sodipodi:r2="3.3895807"
sodipodi:arg1="0.96233622"
sodipodi:arg2="1.3550353"
inkscape:rounded="0"
inkscape:randomized="0"
d="M -0.09375005,11.15625 -3.2430717,8.9047391 -5.1619927,12.26707 -5.7968408,8.4481049 l -3.7344091,1.020645 2.2515108,-3.1493216 -3.3623309,-1.918921 3.8189651,-0.6348481 -1.020645,-3.73440913 3.1493216,2.25151083 1.918921,-3.3623311 0.6348481,3.8189653 3.7344091,-1.020645 -2.25151085,3.1493216 3.36233115,1.918921 -3.8189653,0.6348481 z"
transform="matrix(0.04591992,0.26056803,-0.26056803,0.04591992,76.244405,95.826399)"
inkscape:transform-center-x="-0.16024719"
inkscape:transform-center-y="-0.017064189" />
<path
style="fill:#ff8e7c;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 74.612463,93.226971 -0.347265,1.000456 0.256315,0.51263 0.438216,-0.529167 z"
id="path6694" />
<path
style="fill:#ff8e7c;fill-opacity:1;stroke:none;stroke-width:0.271037px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 74.595723,96.864992 -0.347061,-1.008724 0.277648,-0.504362 0.42515,0.520898 -0.364413,1.025261"
id="path860" />
<path
style="fill:#ff8e7c;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 72.801721,95.05425 0.959115,0.338997 0.669726,-0.322461 -0.669726,-0.37207 z"
id="path1060" />
<path
style="fill:#ff8e7c;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 76.402536,95.054249 -0.959115,-0.338997 -0.669726,0.322461 0.669726,0.37207 z"
id="path1060-8" />
<circle
style="fill:#f9e59a;fill-opacity:1;stroke-width:0.204274"
id="path1135"
cx="74.637268"
cy="95.054245"
r="0.86816406" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1 @@
<svg width="5mm" height="5mm" version="1.1" viewBox="0 0 3.6008 3.6711" xmlns="http://www.w3.org/2000/svg"><g transform="translate(-72.802 -93.227)" fill="#d4fafe"><path transform="matrix(.04592 .26057 -.26057 .04592 76.244 95.826)" d="m-0.09375 11.156-3.1493-2.2515-1.9189 3.3623-0.63485-3.819-3.7344 1.0206 2.2515-3.1493-3.3623-1.9189 3.819-0.63485-1.0206-3.7344 3.1493 2.2515 1.9189-3.3623 0.63485 3.819 3.7344-1.0206-2.2515 3.1493 3.3623 1.9189-3.819 0.63485z"/><path d="m74.612 93.227-0.34726 1.0005 0.25632 0.51263 0.43822-0.52917z"/><path d="m74.596 96.865-0.34706-1.0087 0.27765-0.50436 0.42515 0.5209-0.36441 1.0253"/><path d="m72.802 95.054 0.95912 0.339 0.66973-0.32246-0.66973-0.37207z"/><path d="m76.403 95.054-0.95912-0.339-0.66973 0.32246 0.66973 0.37207z"/><circle cx="74.637" cy="95.054" r=".86816" stroke-width=".20427"/></g></svg>

After

Width:  |  Height:  |  Size: 850 B

View File

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="3.6008151mm"
height="3.6710939mm"
viewBox="0 0 3.600815 3.671094"
version="1.1"
id="svg5"
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
sodipodi:docname="solarpunksun-muted.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="16"
inkscape:cx="4.28125"
inkscape:cy="0.5625"
inkscape:window-width="1920"
inkscape:window-height="1048"
inkscape:window-x="1920"
inkscape:window-y="32"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:snap-grids="false"
inkscape:snap-to-guides="false"
inkscape:snap-others="false"
inkscape:object-nodes="false"
inkscape:snap-nodes="false"
inkscape:snap-global="false" />
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-72.801721,-93.226971)">
<path
sodipodi:type="star"
style="fill:#829798;fill-opacity:1;stroke:none"
id="path4842"
inkscape:flatsided="false"
sodipodi:sides="8"
sodipodi:cx="-3.96875"
sodipodi:cy="5.59375"
sodipodi:r1="6.7791615"
sodipodi:r2="3.3895807"
sodipodi:arg1="0.96233622"
sodipodi:arg2="1.3550353"
inkscape:rounded="0"
inkscape:randomized="0"
d="M -0.09375005,11.15625 -3.2430717,8.9047391 -5.1619927,12.26707 -5.7968408,8.4481049 l -3.7344091,1.020645 2.2515108,-3.1493216 -3.3623309,-1.918921 3.8189651,-0.6348481 -1.020645,-3.73440913 3.1493216,2.25151083 1.918921,-3.3623311 0.6348481,3.8189653 3.7344091,-1.020645 -2.25151085,3.1493216 3.36233115,1.918921 -3.8189653,0.6348481 z"
transform="matrix(0.04591992,0.26056803,-0.26056803,0.04591992,76.244405,95.826399)"
inkscape:transform-center-x="-0.16024719"
inkscape:transform-center-y="-0.017064189" />
<path
style="fill:#64787a;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 74.612463,93.226971 -0.347265,1.000456 0.256315,0.51263 0.438216,-0.529167 z"
id="path6694" />
<path
style="fill:#64787a;fill-opacity:1;stroke:none;stroke-width:0.271037px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 74.595723,96.864992 -0.347061,-1.008724 0.277648,-0.504362 0.42515,0.520898 -0.364413,1.025261"
id="path860" />
<path
style="fill:#64787a;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 72.801721,95.05425 0.959115,0.338997 0.669726,-0.322461 -0.669726,-0.37207 z"
id="path1060" />
<path
style="fill:#64787a;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 76.402536,95.054249 -0.959115,-0.338997 -0.669726,0.322461 0.669726,0.37207 z"
id="path1060-8" />
<circle
style="fill:#95a7a8;fill-opacity:1;stroke-width:0.204274"
id="path1135"
cx="74.637268"
cy="95.054245"
r="0.86816406" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1 @@
<svg width="5.0152mm" height="26.524mm" version="1.1" viewBox="0 0 3.9119 20.689" xmlns="http://www.w3.org/2000/svg"><g transform="translate(-72.625 -93.267)"><g transform="translate(0 4.3085)"><path transform="matrix(.04592 .26057 -.26057 .04592 76.244 95.826)" d="m-0.09375 11.156-3.1493-2.2515-1.9189 3.3623-0.63485-3.819-3.7344 1.0206 2.2515-3.1493-3.3623-1.9189 3.819-0.63485-1.0206-3.7344 3.1493 2.2515 1.9189-3.3623 0.63485 3.819 3.7344-1.0206-2.2515 3.1493 3.3623 1.9189-3.819 0.63485z" fill="#ffb271"/><g fill="#ff8e7c"><path d="m74.63 93.054-0.46832 1.2571 0.33532 0.84522 0.57329-0.87249z"/><path d="m74.182 95.765 0.4333-0.32348 0.4581 0.34511-0.44871 1.2572"/><path d="m72.625 95.052 1.2989 0.40144 0.90943-0.37981-0.85337-0.45872z"/><path d="m76.537 95.024-1.2616-0.41546-0.8651 0.42185 0.90715 0.47274z"/></g><circle cx="74.637" cy="95.054" r=".86816" fill="#f9e59a" stroke-width=".20427"/></g><g transform="translate(-.021021 .040061)"><path transform="matrix(.04592 .26057 -.26057 .04592 76.244 95.826)" d="m-0.09375 11.156-3.1493-2.2515-1.9189 3.3623-0.63485-3.819-3.7344 1.0206 2.2515-3.1493-3.3623-1.9189 3.819-0.63485-1.0206-3.7344 3.1493 2.2515 1.9189-3.3623 0.63485 3.819 3.7344-1.0206-2.2515 3.1493 3.3623 1.9189-3.819 0.63485z" fill="#829798"/><g fill="#64787a"><path d="m74.612 93.227-0.34726 1.0005 0.25632 0.51263 0.43822-0.52917z"/><path d="m74.596 96.865-0.34706-1.0087 0.27765-0.50436 0.42515 0.5209-0.36441 1.0253"/><path d="m72.802 95.054 0.95912 0.339 0.66973-0.32246-0.66973-0.37207z"/><path d="m76.403 95.054-0.95912-0.339-0.66973 0.32246 0.66973 0.37207z"/></g><circle cx="74.637" cy="95.054" r=".86816" fill="#95a7a8" stroke-width=".20427"/></g><g transform="translate(-.021021 12.803)"><path transform="matrix(.04592 .26057 -.26057 .04592 76.244 95.826)" d="m0.79625 11.905-4.6531-3.4846-1.3051 3.847-0.17157-4.0062-5.0137 1.8709 3.2116-4.3247-3.5064-1.4065 3.8314-0.094818-1.5857-5.7164 4.2666 3.8468 1.3543-3.5156 0.19915 3.8497 5.3605-1.7022-3.7609 4.3893 3.6813 1.3297-4.0124-0.09844z" fill="#ffb271"/><g fill="#ff8e7c"><path d="m74.612 93.227-0.34726 1.0005 0.25632 0.51263 0.43822-0.52917z"/><path d="m74.596 96.865-0.34706-1.0087 0.27765-0.50436 0.42515 0.5209-0.36441 1.0253"/><path d="m72.802 95.054 0.95912 0.339 0.66973-0.32246-0.66973-0.37207z"/><path d="m76.403 95.054-0.95912-0.339-0.66973 0.32246 0.66973 0.37207z"/></g><circle cx="74.637" cy="95.054" r=".86816" fill="#f9e59a" stroke-width=".20427"/></g><g transform="translate(-.021021 17.058)"><path transform="matrix(.04592 .26057 -.26057 .04592 76.244 95.826)" d="m-0.09375 11.156-3.1493-2.2515-1.9189 3.3623-0.63485-3.819-3.7344 1.0206 2.2515-3.1493-3.3623-1.9189 3.819-0.63485-1.0206-3.7344 3.1493 2.2515 1.9189-3.3623 0.63485 3.819 3.7344-1.0206-2.2515 3.1493 3.3623 1.9189-3.819 0.63485z" fill="#ffb271"/><g fill="#ff8e7c"><path d="m74.612 93.227-0.34726 1.0005 0.25632 0.51263 0.43822-0.52917z"/><path d="m74.596 96.865-0.34706-1.0087 0.27765-0.50436 0.42515 0.5209-0.36441 1.0253"/><path d="m72.802 95.054 0.95912 0.339 0.66973-0.32246-0.66973-0.37207z"/><path d="m76.403 95.054-0.95912-0.339-0.66973 0.32246 0.66973 0.37207z"/></g><circle cx="74.637" cy="95.054" r=".86816" fill="#f9e59a" stroke-width=".20427"/></g><g transform="translate(-.021021 8.5488)"><path transform="matrix(.04592 .26057 -.26057 .04592 76.244 95.826)" d="m-0.09375 11.156-3.1493-2.2515-1.9189 3.3623-0.63485-3.819-3.7344 1.0206 2.2515-3.1493-3.3623-1.9189 3.819-0.63485-1.0206-3.7344 3.1493 2.2515 1.9189-3.3623 0.63485 3.819 3.7344-1.0206-2.2515 3.1493 3.3623 1.9189-3.819 0.63485z" fill="#ffb271"/><g fill="#ff8e7c"><path d="m74.612 93.227-0.34726 1.0005 0.25632 0.51263 0.43822-0.52917z"/><path d="m74.596 96.865-0.34706-1.0087 0.27765-0.50436 0.42515 0.5209-0.36441 1.0253"/><path d="m72.802 95.054 0.95912 0.339 0.66973-0.32246-0.66973-0.37207z"/><path d="m76.403 95.054-0.95912-0.339-0.66973 0.32246 0.66973 0.37207z"/></g><circle cx="74.637" cy="95.054" r=".86816" fill="#f9e59a" stroke-width=".20427"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

441
custom.css Normal file

File diff suppressed because one or more lines are too long

145
docker-compose.yml Normal file
View File

@ -0,0 +1,145 @@
version: '3'
services:
db:
restart: always
image: postgres:14-alpine
shm_size: 256mb
networks:
- internal_network
healthcheck:
test: ['CMD', 'pg_isready', '-U', 'postgres']
volumes:
- ./postgres14:/var/lib/postgresql/data
environment:
- 'POSTGRES_HOST_AUTH_METHOD=trust'
redis:
restart: always
image: redis:6-alpine
networks:
- internal_network
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
volumes:
- ./redis:/data
es:
restart: always
image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
environment:
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "cluster.name=es-mastodon"
- "discovery.type=single-node"
- "bootstrap.memory_lock=true"
networks:
- internal_network
healthcheck:
test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"]
volumes:
- elasticsearch
ulimits:
memlock:
soft: -1
hard: -1
web:
build: .
image: tootsuite/mastodon
restart: always
env_file: .env.production
command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000"
networks:
internal_network:
external_network:
aliases:
- masto_web
mail:
healthcheck:
# prettier-ignore
test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:3000/health || exit 1']
depends_on:
- db
- redis
# - es
volumes:
- ./public/system:/mastodon/public/system
streaming:
build: .
image: tootsuite/mastodon
restart: always
env_file: .env.production
command: node ./streaming
networks:
internal_network:
external_network:
aliases:
- masto_streaming
mail:
healthcheck:
# prettier-ignore
test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1']
depends_on:
- db
- redis
sidekiq:
build: .
image: tootsuite/mastodon
restart: always
env_file: .env.production
command: bundle exec sidekiq
depends_on:
- db
- redis
networks:
- external_network
- internal_network
- mail
volumes:
- ./public/system:/mastodon/public/system
healthcheck:
test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"]
## Uncomment to enable federation with tor instances along with adding the following ENV variables
## http_proxy=http://privoxy:8118
## ALLOW_ACCESS_TO_HIDDEN_SERVICE=true
# tor:
# image: sirboops/tor
# networks:
# - external_network
# - internal_network
#
# privoxy:
# image: sirboops/privoxy
# volumes:
# - ./priv-config:/opt/config
# networks:
# - external_network
# - internal_network
nginx:
image: nginx
restart: always
networks:
- httpsproxy
- external_network
volumes:
- ./templates:/etc/nginx/templates
environment:
- LETSENCRYPT_HOST=solarpunk.moe
- VIRTUAL_HOST=solarpunk.moe
- NGINX_HOST=solarpunk.moe
- NGINX_PORT=80
volumes:
elasticsearch:
networks:
mail:
external: true
httpsproxy:
external: true
external_network:
internal_network:
internal: true

BIN
favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

41
install.sh Normal file
View File

@ -0,0 +1,41 @@
#!/bin/bash
# This should deploy a masto instance neatly.
# Assumptions:
# - Using ubuntu!
# - Docker and docker-compose installed, not from ubuntu repo.
# - Reverse proxy:
# - You are using jwilder/nginx-proxy to reverse proxy https
# - You are using nginxproxy/acme-companion to generate letsencrypt certs
# - These two are inside the external network 'httpsproxy'
# - You have an external network called 'mail' that serves the mail.
# - The domain is solarpunk.moe (might make it generic in future perhaps)
# - Your docker installation is configured root only (no custom docker users)
# Go to this script's dir
cd "$(dirname "${BASH_SOURCE[0]}")"
echo "Welcome to the solarpunk.moe installer."
read -p "Press enter to create public/system dir owned by UID 991, CTRL-C to cancel."
mkdir -p public/system/
sudo chown 991 public/system # Magic mastodon UID inside the container
sudo chown 991 favicon.ico # Magic mastodon UID inside the container
sudo cp favicon.ico public/
# Run the mastodon setup wizard. Most of the options should be the defaults
read -p "Press enter to run the setup wizard, CTRL-C to cancel."
sudo docker-compose run --rm web bundle exec rake mastodon:setup
echo ES_ENABLED=true >> .env.production
echo ES_HOST=es >> .env.production
echo ES_PORT=9200 >> .env.production
# Start 'er up!
read -p "Press enter to bring up the instance, CTRL-C to cancel."
sudo docker-compose up -d
# Create elasticsearch index.
read -p "Press enter to make ElasticSearch indices, CTRL-C to cancel."
sudo docker-compose run --env RAILS_ENV=production web bin/tootctl search deploy

View File

@ -0,0 +1,104 @@
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream backend {
server masto_web:3000 fail_timeout=0;
}
upstream streaming {
server masto_streaming:4000 fail_timeout=0;
}
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=CACHE:10m inactive=7d max_size=1g;
server {
listen 80;
listen [::]:80;
server_name solarpunk.moe;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
keepalive_timeout 70;
sendfile on;
client_max_body_size 80m;
location /.well-known/acme-challenge/ { allow all; }
root /home/mastodon/live/public;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
add_header Strict-Transport-Security "max-age=31536000";
location / {
try_files $uri @proxy;
}
location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) {
add_header Cache-Control "public, max-age=31536000, immutable";
add_header Strict-Transport-Security "max-age=31536000";
try_files $uri @proxy;
}
location /sw.js {
add_header Cache-Control "public, max-age=0";
add_header Strict-Transport-Security "max-age=31536000";
try_files $uri @proxy;
}
location @proxy {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Proxy "";
proxy_pass_header Server;
proxy_pass http://backend;
proxy_buffering on;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_cache CACHE;
proxy_cache_valid 200 7d;
proxy_cache_valid 410 24h;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
add_header X-Cached $upstream_cache_status;
add_header Strict-Transport-Security "max-age=31536000";
tcp_nodelay on;
}
location /api/v1/streaming {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Proxy "";
proxy_pass http://streaming;
proxy_buffering off;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
tcp_nodelay on;
}
error_page 500 501 502 503 504 /500.html;
}