feat(projects): migrate moritzgrafde website into monorepo and document in AGENTS.md

This commit is contained in:
Moritz Graf
2026-09-26 11:58:30 +02:00
parent 945d80b232
commit afb80bbba8
85 changed files with 2001 additions and 0 deletions
@@ -0,0 +1,5 @@
{{ partial "header.html" . }}
{{ partial "error.html" . }}
{{ partial "footer.html" . }}
@@ -0,0 +1,7 @@
{{ partial "header.html" . }}
{{ partial "li.html" . }}
{{ partial "menu.html" . }}
{{ partial "footer.html" . }}
@@ -0,0 +1,14 @@
{{ partial "header.html" . }}
{{ partial "content.html" . }}
{{ if ne .Params.showcomments false }}
{{ template "_internal/disqus.html" . }}
{{ end }}
{{ partial "menu.html" . }}
{{ partial "footer.html" . }}
@@ -0,0 +1,11 @@
{{ partial "header.html" . }}
{{ partial "avatar.html" . }}
{{ partial "info.html" . }}
{{ partial "social.html" . }}
{{ partial "main_menu.html" . }}
{{ partial "footer.html" . }}
@@ -0,0 +1,4 @@
<header class="row text-center header">
{{ with .Site.Params.authorimage }} <img src="img/{{ . }}" alt="Author Image" class="img-circle text-center headshot"> {{ end }}
<h1 class="author">{{ .Site.Params.author }}</h1>
</header>
@@ -0,0 +1,45 @@
<header class="row text-left title">
<h1 class="title">{{ .Title }}</h1>
</header>
<section id="category-pane" class="row meta">
{{ if ne .Params.showpagemeta false }}
<div class="col-md-12">
<h6 class="text-left meta">
PUBLISHED ON {{ .Date.Format .Site.Params.dateformat | upper }}
{{ if isset .Params "categories" }}
{{ $total := len .Params.categories }}
{{ if gt $total 0 }}
—
{{ $total := sub $total 1 }}
{{ range $i, $cat := sort $.Params.categories }}
<a class="meta" href="{{ "/categories/" | relURL }}{{ $cat | urlize }}">{{ $cat | upper }}</a>{{ if lt $i $total }}, {{ end }}
{{ end }}
{{ end }}
{{ end }}
</h6>
</div>
{{ end }}
</section>
<section id="content-pane" class="row">
<div class="col-md-12 text-justify content">
{{ .Content }}
</div>
</section>
<section id="tag-pane" class="row meta">
{{ if ne .Params.showpagemeta false }}
<div class="col-md-12">
<h6 class="text-right meta">
{{ if isset .Params "tags" }}
{{ $total := len .Params.tags }}
{{ if gt $total 0 }}
TAGS:
{{ $subtotal := sub $total 1 }}
{{ range $i, $tag := sort $.Params.tags }}
<a class="meta" href="{{ "/tags/" | relURL }}{{ $tag | urlize }}">{{ $tag | upper }}</a>{{ if lt $i $subtotal }}, {{ end }}
{{ end }}
{{ end }}
{{ end }}
</h6>
</div>
{{ end }}
</section>
@@ -0,0 +1,4 @@
<section id="error-pane" class="row text-center error">
<h1 class="text-center">404</h1>
<p>Sorry! That page does not exist. It may have been removed or moved to a new section on the site. Click <a href="/">here</a> go back to the home page.</p>
</section>
@@ -0,0 +1,23 @@
{{ partial "sub_footer.html" . }}
</div>
{{ with .Site.Params.extra }}
{{ if .highlightjs }}
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
{{ range .highlightjslanguages }}
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/languages/{{.}}.min.js"></script>
{{ end }}
<script type="text/javascript">
hljs.initHighlightingOnLoad();
</script>
{{ end }}
{{ end }}
{{ template "_internal/google_analytics.html" . }}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="js/main.js"></script>
</body>
</html>
@@ -0,0 +1,48 @@
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
{{ with .Site.Params.meta.description }}<meta name="description" content="{{ . }}">{{ end }}
{{ with .Site.Params.meta.keywords }}<meta name="keywords" content="{{.}}">{{ end }}
<base href="{{ .Site.BaseURL }}">
<title>{{ .Site.Title }}</title>
{{ hugo.Generator }}
{{ with .OutputFormats.Get "rss" }}
<link href="{{ .Permalink }}" rel="alternate" type="application/rss+xml" title="{{ $.Site.Title }}" />
<link href="{{ .Permalink }}" rel="feed" type="application/rss+xml" title="{{ $.Site.Title }}" />
{{ end }}
{{ if .Site.Params.extra.highlightjs }}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/{{ .Site.Params.extra.highlightjsstyle | default "default" }}.min.css">
{{ end }}
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:300,400|Roboto+Slab:400,700|Roboto:300,300i,400,400i,500,500i,700,700i">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css">
<link rel="stylesheet" href="{{ "css/main.css" | absURL }}">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="/manifest.json">
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
<meta name="theme-color" content="#ffffff">
</head>
<body lang="{{ .Site.LanguageCode }}">
<div class="container">
@@ -0,0 +1,8 @@
<section id="info-pane" class="row text-center info">
{{ with .Site.Params.intro }}
<h3 class="intro">{{ . | markdownify }}</h3>
{{ end }}
{{ with .Site.Params.description }}
<h4 class="description">{{ . | markdownify }}</h4>
{{ end }}
</section>
@@ -0,0 +1,27 @@
<section id="list-pane" class="row list">
<ul >
{{ range .Data.Pages.ByPublishDate }}
<li class="list-entry">
<a class="list-entry-link" href="{{ .Permalink }}">{{ .Title }}</a>
<p class="meta">
{{ .Date.Format .Site.Params.dateformat | upper }}
<span class="category">
{{ if isset .Params "categories" }}
{{ $total := len .Params.categories }}
{{ if gt $total 0 }}
—
{{ $total := sub $total 1 }}
{{ range $i, $cat := sort .Params.categories }}
<a class="category" href="{{ "/categories/" | relURL }}{{ $cat | humanize | urlize }}">{{ $cat | upper }}</a>{{ if lt $i $total }}, {{ end }}
{{ end }}
{{ end }}
{{ end }}
</span>
</p>
<p class="excerpt">
{{ .Description }}
</p>
</li>
{{ end }}
</ul>
</section>
@@ -0,0 +1,7 @@
<section id="main-menu-pane" class="row text-center main-menu">
{{ with .Site.Menus.main }}
{{ range sort . }}
<h4><a class="menu-item" href="{{ .URL }}">{{ .Name | lower }}</a></h4>
{{ end }}
{{ end }}
</section>
@@ -0,0 +1,14 @@
<section id="menu-pane" class="row menu text-center">
{{ if not .IsNode }}
{{ with .PrevInSection }}
<span><a class="menu-item" href="{{ .Permalink }}">&lt; prev | </a></span>
{{ end }}
{{ if (or (.PrevInSection) (.NextInSection)) }}
<span><a class="menu-item" href="{{ .Section | relURL }}">{{ .Section | lower }}</a></span>
{{ end }}
{{ with .NextInSection }}
<span><a class="menu-item" href="{{ .Permalink }}"> | next &gt;</a></span>
{{ end }}
{{ end }}
<h4 class="text-center"><a class="menu-item" href="{{ .Site.BaseURL }}">home</a></h4>
</section>
@@ -0,0 +1,38 @@
<section id="social-pane" class="row text-center social">
{{ with .Site.Params.social.twitter }}
<a href="https://twitter.com/{{.}}"><i class="fa fa-twitter" aria-hidden="true"></i></a>
{{ end }}
{{ with .Site.Params.social.google }}
<a href="https://plus.google.com/{{.}}/about"><i class="fa fa-google-plus-official" aria-hidden="true"></i></a>
{{ end }}
{{ with .Site.Params.social.facebook }}
<a href="https://facebook.com/{{.}}"><i class="fa fa-facebook-official" aria-hidden="true"></i></a>
{{ end }}
{{ with .Site.Params.social.github }}
<a href="https://github.com/{{.}}"><i class="fa fa-github" aria-hidden="true"></i></a>
{{ end }}
{{ with .Site.Params.social.instagram }}
<a href="https://instagram.com/{{.}}"><i class="fa fa-instagram" aria-hidden="true"></i></a>
{{ end }}
{{ with .Site.Params.social.linkedin }}
<a href="https://linkedin.com/in/{{.}}"><i class="fa fa-linkedin" aria-hidden="true"></i></a>
{{ end }}
{{ with .Site.Params.social.stackoverflow }}
<a href="https://stackoverflow.com/users/{{.}}"><i class="fa fa-stack-overflow" aria-hidden="true"></i></a>
{{ end }}
{{ with .Site.Params.social.medium}}
<a href="https://medium.com/{{.}}"><i class="fa fa-medium" aria-hidden="true"></i></a>
{{ end }}
{{ with .Site.Params.social.devto}}
<a href="https://dev.to/{{.}}"><i class="fa fa-terminal" aria-hidden="true"></i></a>
{{ end }}
{{ with .Site.Params.social.angellist}}
<a href="https://angel.co/{{.}}"><i class="fa fa-angellist" aria-hidden="true"></i></a>
{{ end }}
{{ with .Site.Params.social.email }}
<a href="mailto:{{.}}"><i class="fa fa-envelope-o" aria-hidden="true"></i></a>
{{ end }}
{{ with .Site.Params.social.xing }}
<a href="https://www.xing.com/profile/{{.}}"><i class="fa fa-xing" aria-hidden="true"></i></a>
{{ end }}
</section>
@@ -0,0 +1,9 @@
<footer class="row text-center footer">
<hr />
{{ with .Site.Params.extra }}
<h6 class="text-center copyright">{{ .copyright | markdownify }}</h6>
{{ if ne .poweredby false }}
<h6 class="text-center powered">Powered by <a href="https://gohugo.io/">Hugo</a> &amp; <a href="https://github.com/shenoybr/hugo-goa">Goa</a>.</h6>
{{ end }}
{{ end }}
</footer>