~mika/www.m1kadev.nl

f96a73084b6e1377ef6de64580906ad66466d823 — m1ka 3 months ago 1e05c77
add link to codeberg repository
M Dockerfile => Dockerfile +2 -1
@@ 1,5 1,6 @@
FROM alpine:3
RUN apk add --no-cache elixir nginx git rust cargo nodejs npm
RUN apk add --no-cache elixir nginx git rust cargo nodejs npm tzdata
RUN ln -s /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime
COPY nginx.conf /etc/nginx/nginx.conf

# setup folders

M bricks/base-header.thtml => bricks/base-header.thtml +1 -2
@@ 1,4 1,3 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/styles/base.css">
<script src="/scripts/loadBuildData.js" defer></script>
\ No newline at end of file
<link rel="stylesheet" href="/styles/base.css">
\ No newline at end of file

A bricks/extended-footer.thtml => bricks/extended-footer.thtml +5 -0
@@ 0,0 1,5 @@
<footer>
<div>
{{ &extended_build_info }}
</div>
</footer>
\ No newline at end of file

A bricks/footer.thtml => bricks/footer.thtml +10 -0
@@ 0,0 1,10 @@
<footer>
<div id="build-info">
{{ &build_info }}
</div>
<div id="links">
    <a href="https://codeberg.org/m1ka/www.m1kadev.nl/">
        <img id="codeberg">
    </a>
</div>
</footer>
\ No newline at end of file

M kethel/lib/bricks.ex => kethel/lib/bricks.ex +3 -3
@@ 25,14 25,14 @@ defmodule Bricks do
    {e_build_date, 0} = System.cmd("date", ["+%H:%M:%S %d/%m/%y"])

    footer = """
      Built from commit <a href="https://codeberg.org/m1ka/www.m1kadev.nl/commit/#{git_commit}">#{git_commit |> binary_slice(0..7)}</a>, on #{build_date}
      Built from commit <a href="https://codeberg.org/m1ka/www.m1kadev.nl/commit/#{git_commit}">#{git_commit |> binary_slice(0..7)}</a>, on #{build_date}.
    """

    extended_footer = """
      Built from commit <a href="https://codeberg.org/m1ka/www.m1kadev.nl/commit/#{git_commit}">#{git_commit |> String.trim()}</a>, using lightningcss #{lcss_version},
      html-minifier-next version #{hmn_version}, uglifyjs version #{ujs_version}, on #{e_build_date}
      html-minifier-next version #{hmn_version}, uglifyjs version #{ujs_version}, on #{e_build_date}.
    """

    Map.merge(%{footer: footer, extended_footer: extended_footer}, from_files)
    Map.merge(%{build_info: footer, extended_build_info: extended_footer}, from_files)
  end
end

M kethel/lib/pages.ex => kethel/lib/pages.ex +9 -2
@@ 57,14 57,21 @@ defmodule Pages do
      Map.merge(%{fxg_content: invoke_fxg(page_data), location: location}, pages.bricks)

    page_rendered = Mustache.render(template, mustache_context)
    File.write!(output_path, page_rendered)
    File.write!(output_path, invoke_hmn(page_rendered))
    IO.puts("[COMPILED] #{pages.project_root}/pages#{page_path}.fxg -> #{output_path}")
  end

  # doc "Invokes the fxg compiler, a la `fxg -`, piping `data` into the process stdin, and reading the stdout. "
  @doc "Invokes the fxg compiler, a la `fxg -`, piping `data` into the process stdin, and reading the stdout. "
  @spec invoke_fxg(binary()) :: binary()
  defp invoke_fxg(data) do
    {:ok, res} = Rambo.run("fxg", ["-"], in: data)
    res.out
  end

  @doc "Invokes the fxg compiler, a la `fxg -`, piping `data` into the process stdin, and reading the stdout. "
  @spec invoke_hmn(binary()) :: binary()
  defp invoke_hmn(data) do
    {:ok, res} = Rambo.run("npx", ["html-minifier-next", "--preset", "conservative"], in: data)
    res.out
  end
end

M pages/colophon.fxg => pages/colophon.fxg +7 -3
@@ 1,10 1,14 @@
====== colophon ======

===== about =====
you're looking at a <#https://en.wiktionary.org/wiki/beautiful#English beautiful> site, written with 100% non-ai code.

you're looking at a <#https://en.wiktionary.org/wiki/beautiful#English beautiful> site, with <#https://caddyserver.com/ caddy> as its backend.
===== fonts =====

the site generator is a home-grown non-gmo <#https://github.com/m1kadev/www.m1kadev.nl/tree/main/kethel/ elixir app>. the internal markup language is <#https://github.com/m1kadev/fxg fxg>, made to be more legible than markdown. 
this website is intended to be set in //New York//, an <#https://developer.apple.com/fonts/ Apple system font>, with Georgia, and then the CSS standard serif fonts, as fallback fonts for sans-serif fonts, i use //SF Pro//, also an Apple system font, with //Tahoma//, and then the CSS sans-serif as fallback fonts.

===== technical =====

the site generator is a non-gmo <#https://github.com/m1kadev/www.m1kadev.nl/tree/main/kethel/ elixir tool>. the internal markup language is <#https://github.com/m1kadev/fxg fxg>, made to be more legible than markdown. 

templating the final html is handled by <#https://mustache.github.io mustache>, a stateless templating library.


A scripts/dyn-codeberg-logo.js => scripts/dyn-codeberg-logo.js +15 -0
@@ 0,0 1,15 @@
const setCodebergLogo = image => {
    const isLight = window.matchMedia("(prefers-color-scheme: light)").matches;
    if (isLight) {
        image.src = "/static/codeberg-logo_icon_blue.svg";
    } else {
        image.src = "/static/codeberg-logo_icon_white.svg";
    }
};

addEventListener("DOMContentLoaded", ev => {
    const image = document.getElementById("codeberg");
    setCodebergLogo(image);
    window.matchMedia("(prefers-color-scheme: light)").addEventListener('change', _ => setCodebergLogo(image));
});


A static/.DS_Store => static/.DS_Store +0 -0
A static/codeberg-logo_icon_blue.svg => static/codeberg-logo_icon_blue.svg +164 -0
@@ 0,0 1,164 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   width="16"
   height="16"
   viewBox="0 0 4.2333332 4.2333335"
   version="1.1"
   id="svg1468"
   sodipodi:docname="codeberg-logo_icon_blue.svg"
   inkscape:version="1.2-alpha1 (b6a15bb, 2022-02-23)"
   inkscape:export-filename="/home/mray/Projects/Codeberg/logo/icon/png/codeberg-logo_icon_blue.png"
   inkscape:export-xdpi="384"
   inkscape:export-ydpi="384"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title
     id="title16">Codeberg logo</title>
  <defs
     id="defs1462">
    <linearGradient
       xlink:href="#linearGradient6924"
       id="linearGradient6918"
       x1="42519.285"
       y1="-7078.7891"
       x2="42575.336"
       y2="-6966.9307"
       gradientUnits="userSpaceOnUse" />
    <linearGradient
       id="linearGradient6924">
      <stop
         style="stop-color:#2185d0;stop-opacity:0"
         offset="0"
         id="stop6920" />
      <stop
         id="stop6926"
         offset="0.49517274"
         style="stop-color:#2185d0;stop-opacity:0.48923996" />
      <stop
         style="stop-color:#2185d0;stop-opacity:0.63279623"
         offset="1"
         id="stop6922" />
    </linearGradient>
    <linearGradient
       xlink:href="#linearGradient6924-6"
       id="linearGradient6918-3"
       x1="42519.285"
       y1="-7078.7891"
       x2="42575.336"
       y2="-6966.9307"
       gradientUnits="userSpaceOnUse" />
    <linearGradient
       id="linearGradient6924-6">
      <stop
         style="stop-color:#2185d0;stop-opacity:0;"
         offset="0"
         id="stop6920-7" />
      <stop
         id="stop6926-5"
         offset="0.49517274"
         style="stop-color:#2185d0;stop-opacity:0.30000001;" />
      <stop
         style="stop-color:#2185d0;stop-opacity:0.30000001;"
         offset="1"
         id="stop6922-3" />
    </linearGradient>
  </defs>
  <sodipodi:namedview
     showborder="false"
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1.0"
     inkscape:pageopacity="0.0"
     inkscape:pageshadow="2"
     inkscape:zoom="22.627417"
     inkscape:cx="12.948893"
     inkscape:cy="12.661631"
     inkscape:document-units="px"
     inkscape:current-layer="svg1468"
     inkscape:document-rotation="0"
     showgrid="false"
     fit-margin-top="0"
     fit-margin-left="0"
     fit-margin-right="0"
     fit-margin-bottom="0"
     units="px"
     inkscape:snap-global="false"
     inkscape:snap-page="true"
     showguides="false"
     inkscape:window-width="1531"
     inkscape:window-height="873"
     inkscape:window-x="69"
     inkscape:window-y="27"
     inkscape:window-maximized="1"
     inkscape:pagecheckerboard="0"
     inkscape:deskcolor="#d1d1d1">
    <inkscape:grid
       type="xygrid"
       id="grid2067" />
  </sodipodi:namedview>
  <metadata
     id="metadata1465">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title>Codeberg logo</dc:title>
        <cc:license
           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
        <dc:creator>
          <cc:Agent>
            <dc:title>Robert Martinez</dc:title>
          </cc:Agent>
        </dc:creator>
        <dc:rights>
          <cc:Agent>
            <dc:title>Codeberg and the Codeberg Logo are trademarks of Codeberg e.V.</dc:title>
          </cc:Agent>
        </dc:rights>
        <dc:date>2020-04-09</dc:date>
        <dc:publisher>
          <cc:Agent>
            <dc:title>Codeberg e.V.</dc:title>
          </cc:Agent>
        </dc:publisher>
        <dc:source>codeberg.org</dc:source>
      </cc:Work>
      <cc:License
         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
        <cc:permits
           rdf:resource="http://creativecommons.org/ns#Reproduction" />
        <cc:permits
           rdf:resource="http://creativecommons.org/ns#Distribution" />
        <cc:permits
           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
      </cc:License>
    </rdf:RDF>
  </metadata>
  <g
     id="g370484"
     inkscape:label="logo"
     transform="matrix(0.06551432,0,0,0.06551432,-2.232417,-1.431776)">
    <path
       id="path6733-5"
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:url(#linearGradient6918-3);fill-opacity:1;stroke:none;stroke-width:3.67846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
       d="m 42519.285,-7078.7891 a 0.76086879,0.56791688 0 0 0 -0.738,0.6739 l 33.586,125.8886 a 87.182358,87.182358 0 0 0 39.381,-33.7636 l -71.565,-92.5196 a 0.76086879,0.56791688 0 0 0 -0.664,-0.2793 z"
       transform="matrix(0.37058478,0,0,0.37058478,-15690.065,2662.0533)"
       inkscape:label="berg" />
    <path
       id="path360787"
       style="opacity:1;fill:#2185d0;fill-opacity:1;stroke-width:17.0055;paint-order:markers fill stroke;stop-color:#000000"
       d="m 11249.461,-1883.6961 c -12.74,0 -23.067,10.3275 -23.067,23.0671 0,4.3335 1.22,8.5795 3.522,12.2514 l 19.232,-24.8636 c 0.138,-0.1796 0.486,-0.1796 0.624,0 l 19.233,24.8646 c 2.302,-3.6721 3.523,-7.9185 3.523,-12.2524 0,-12.7396 -10.327,-23.0671 -23.067,-23.0671 z"
       sodipodi:nodetypes="sccccccs"
       inkscape:label="sky"
       transform="matrix(1.4006354,0,0,1.4006354,-15690.065,2662.0533)" />
  </g>
</svg>

A static/codeberg-logo_icon_white.svg => static/codeberg-logo_icon_white.svg +164 -0
@@ 0,0 1,164 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   width="16"
   height="16"
   viewBox="0 0 4.2333332 4.2333335"
   version="1.1"
   id="svg1468"
   sodipodi:docname="codeberg-logo_icon_white.svg"
   inkscape:version="1.2-alpha1 (b6a15bb, 2022-02-23)"
   inkscape:export-filename="/home/robert/Documents/Codeberg/Logo-Kit/svg/Codeberg-favicon_64px.png"
   inkscape:export-xdpi="384"
   inkscape:export-ydpi="384"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title
     id="title16">Codeberg logo</title>
  <defs
     id="defs1462">
    <linearGradient
       xlink:href="#linearGradient6924"
       id="linearGradient6918"
       x1="42519.285"
       y1="-7078.7891"
       x2="42575.336"
       y2="-6966.9307"
       gradientUnits="userSpaceOnUse" />
    <linearGradient
       id="linearGradient6924">
      <stop
         style="stop-color:#2185d0;stop-opacity:0"
         offset="0"
         id="stop6920" />
      <stop
         id="stop6926"
         offset="0.49517274"
         style="stop-color:#2185d0;stop-opacity:0.48923996" />
      <stop
         style="stop-color:#2185d0;stop-opacity:0.63279623"
         offset="1"
         id="stop6922" />
    </linearGradient>
    <linearGradient
       xlink:href="#linearGradient6924-6"
       id="linearGradient6918-3"
       x1="42519.285"
       y1="-7078.7891"
       x2="42575.336"
       y2="-6966.9307"
       gradientUnits="userSpaceOnUse" />
    <linearGradient
       id="linearGradient6924-6">
      <stop
         style="stop-color:#ffffff;stop-opacity:0;"
         offset="0"
         id="stop6920-7" />
      <stop
         id="stop6926-5"
         offset="0.49517274"
         style="stop-color:#ffffff;stop-opacity:0.30000001;" />
      <stop
         style="stop-color:#ffffff;stop-opacity:0.30000001;"
         offset="1"
         id="stop6922-3" />
    </linearGradient>
  </defs>
  <sodipodi:namedview
     showborder="false"
     id="base"
     pagecolor="#000000"
     bordercolor="#666666"
     borderopacity="1.0"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:zoom="22.627417"
     inkscape:cx="2.8505242"
     inkscape:cy="18.274291"
     inkscape:document-units="px"
     inkscape:current-layer="svg1468"
     inkscape:document-rotation="0"
     showgrid="false"
     fit-margin-top="0"
     fit-margin-left="0"
     fit-margin-right="0"
     fit-margin-bottom="0"
     units="px"
     inkscape:snap-global="false"
     inkscape:snap-page="true"
     showguides="false"
     inkscape:window-width="1531"
     inkscape:window-height="873"
     inkscape:window-x="69"
     inkscape:window-y="27"
     inkscape:window-maximized="1"
     inkscape:pagecheckerboard="0"
     inkscape:deskcolor="#d1d1d1">
    <inkscape:grid
       type="xygrid"
       id="grid2067" />
  </sodipodi:namedview>
  <metadata
     id="metadata1465">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title>Codeberg logo</dc:title>
        <cc:license
           rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
        <dc:creator>
          <cc:Agent>
            <dc:title>Robert Martinez</dc:title>
          </cc:Agent>
        </dc:creator>
        <dc:rights>
          <cc:Agent>
            <dc:title>Codeberg and the Codeberg Logo are trademarks of Codeberg e.V.</dc:title>
          </cc:Agent>
        </dc:rights>
        <dc:date>2020-04-09</dc:date>
        <dc:publisher>
          <cc:Agent>
            <dc:title>Codeberg e.V.</dc:title>
          </cc:Agent>
        </dc:publisher>
        <dc:source>codeberg.org</dc:source>
      </cc:Work>
      <cc:License
         rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
        <cc:permits
           rdf:resource="http://creativecommons.org/ns#Reproduction" />
        <cc:permits
           rdf:resource="http://creativecommons.org/ns#Distribution" />
        <cc:permits
           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
      </cc:License>
    </rdf:RDF>
  </metadata>
  <g
     id="g370484"
     inkscape:label="logo"
     transform="matrix(0.06551432,0,0,0.06551432,-2.232417,-1.431776)">
    <path
       id="path6733-5"
       style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:url(#linearGradient6918-3);fill-opacity:1;stroke:none;stroke-width:3.67846;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000;stop-opacity:1"
       d="m 42519.285,-7078.7891 a 0.76086879,0.56791688 0 0 0 -0.738,0.6739 l 33.586,125.8886 a 87.182358,87.182358 0 0 0 39.381,-33.7636 l -71.565,-92.5196 a 0.76086879,0.56791688 0 0 0 -0.664,-0.2793 z"
       transform="matrix(0.37058478,0,0,0.37058478,-15690.065,2662.0533)"
       inkscape:label="berg" />
    <path
       id="path360787"
       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:17.0055;paint-order:markers fill stroke;stop-color:#000000"
       d="m 11249.461,-1883.6961 c -12.74,0 -23.067,10.3275 -23.067,23.0671 0,4.3335 1.22,8.5795 3.522,12.2514 l 19.232,-24.8636 c 0.138,-0.1796 0.486,-0.1796 0.624,0 l 19.233,24.8646 c 2.302,-3.6721 3.523,-7.9185 3.523,-12.2524 0,-12.7396 -10.327,-23.0671 -23.067,-23.0671 z"
       sodipodi:nodetypes="sccccccs"
       inkscape:label="sky"
       transform="matrix(1.4006354,0,0,1.4006354,-15690.065,2662.0533)" />
  </g>
</svg>

D static/github-mark-white.svg => static/github-mark-white.svg +0 -1
@@ 1,1 0,0 @@
<svg width="98" height="96" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z" fill="#fff"/></svg>
\ No newline at end of file

D static/motds => static/motds +0 -6
@@ 1,6 0,0 @@
"what do you think success is?", asked the boy <br> "to love", said the mole # from "the boy, the mole, the fox and the horse", by charlie mackesy
let's go down to the bandstand on the pier / watch the drunks and lovers appear # from "sovereign light cafe", by keane, on the album strangeland
just buy cool things, you'll be 30 before you know it # thrift store employee, in spijkenisse, the netherlands
words are very unneccecary / they can only do harm # "enjoy the silence", by depeche mode, on violator
and all the fears you hold so dear / will turn to whisper in your ear # "duvet" by bôa, on twilight
when routine bites hard and ambitions are low # "love will tear us apart" by joy division, on the single of the same name
\ No newline at end of file

M styles/base.css => styles/base.css +35 -5
@@ 1,9 1,9 @@
:root {
    --serif-font: "Castilo MT", serif;
    --sans-serif-font: "SF Pro", "Segoe UI", sans-serif;
    --serif-font: "New York", "Georgia", serif;
    --sans-serif-font: "SF Pro", "Tahoma", sans-serif;
    color-scheme: light dark;
    --fg-color: light-dark(#121413, #eeeeee);
    --bg-color: light-dark(#eeeeee, #121413);
    --fg-color: light-dark(#0A0A0A, #FFFFFF);
    --bg-color: light-dark(#e9e9e9, #1c1c1d);
    --accent-color: #ee41b4;
}



@@ 114,10 114,25 @@ p {
}

footer {
    width: min(100vw, 450px);
}

footer>#build-info {
    width: min(100vw, 450px);
    padding: .5rem;
}

footer>#links {
    border-top: .1rem solid var(--fg-color);
    padding: .5rem;
    width: 450px;
}

img#codeberg {
    width: 2rem;
    height: 2rem;
}


@media (min-width: 900px) {

    .link-group {


@@ 162,4 177,19 @@ footer {
    nav>a {
        text-align: right;
    }

    footer {
        width: initial;
    }

    footer>#build-info {
        display: inline;
    }

    footer>#links {
        border-top: 0 solid transparent;
        display: inline;
        float: right;
    }

}
\ No newline at end of file

M templates/base.thtml => templates/base.thtml +2 -4
@@ 3,7 3,7 @@

<head>
    {{ &base_header }}
    {{ &highlight }}
    <script src="/scripts/dyn-codeberg-logo.js"></script>
    <title>{{ location }} - m1kadev</title>
    {{ &ogp }}
</head>


@@ 12,9 12,7 @@
    {{ &navbar }}
    <main>
        {{ &fxg_content }}
        <footer>
            {{ &footer }}
        </footer>
        {{ &footer }}
    </main>
</body>
</html>
\ No newline at end of file

M templates/pages/colophon.thtml => templates/pages/colophon.thtml +1 -4
@@ 3,7 3,6 @@

<head>
    {{ &base_header }}
    {{ &highlight }}
    <title>{{ location }} - m1kadev</title>
    {{ &ogp }}
</head>


@@ 12,9 11,7 @@
    {{ &navbar }}
    <main>
        {{ &fxg_content }}
        <footer>
            {{ &extended_footer }}
        </footer>
        {{ &extended_footer }}
    </main>
</body>
</html>
\ No newline at end of file