Compare commits

..
6 Commits
25 changed files with 419 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
MIT License
Copyright (c) 2026 Lennard Emanuel Haufe
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
associated documentation files (the "Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the
following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial
portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO
EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
USE OR OTHER DEALINGS IN THE SOFTWARE.
+9
View File
@@ -0,0 +1,9 @@
# haufe_website
This is the name of my website project. The name of the domain is diffrent but this is how I referr to it internally.
03.September.2026
We are currently on Version 1.0.0. Every change to articles will counted as the last number of the three. This means that when one new article is published, the last number will get added a 1.
Kind regards Lennard
+9
View File
@@ -0,0 +1,9 @@
# This Website
DESCRIPTION:This Website had a lot of diffrent version, featuring diffrent styles...
TAGS:projects,css,html,coding
HEADIMAGE:another.png
This Website had a lot of diffrent version, featuring diffrent styles. Everytime I recreate it, I say "this will be the version I will continue on", but then I make a change to it or am unhappy with it. So I create a new Version, mostly from scratch. If I would be honest I could call this version of the Website v20 at least, but I will call it v1.
## The "Technology" behind it
I use golang to run the http server and to compile my md files to a static website. I use md over html, becaus first one always needs to add "<>" and at the end "</>" of every text element, this makes it a long and fustrating process to write it. Additionaly one needs to add the head, the header and the footer to every file seperatly.This makes changing a style outside the universal css file more complicated. This means that one thinks of a new header structure, every header in every file needs to be changed. Which can be done of course with a IDE and its "occurences-tool", but this process does not ensure correct result. Leading to error this makes the progess even longer, then with the compalation method.
## Usage of the Website
This website is being populated with diffent informations such as projects, documentations and comments on diffrent technical standpoints. I will use it to improve my english level. So if you are an born english speaker, please be so kind and report any erros to me.
+3
View File
@@ -0,0 +1,3 @@
module haufenet.de
go 1.26.4
Executable
BIN
View File
Binary file not shown.
Executable
BIN
View File
Binary file not shown.
+151
View File
@@ -0,0 +1,151 @@
package main
import (
"bufio"
"log"
"net/http"
"os"
"strings"
)
var data_articles_index string = ""
var top string = "<!doctype html><html lang='en'><head><meta charset='UTF-8' /><meta name='viewport' content='width=device-width, initial-scale=1.0' /><title>Haufenet</title><link rel='stylesheet' href='/index.css' /><link rel='icon' type='image/png' href='/favicon-96x96.png' sizes='96x96'/><link rel='icon' type='image/svg+xml' href='/favicon.svg'/><link rel='shortcut icon' href='/favicon.ico' /><link rel='apple-touch-icon' sizes='180x180' href='/apple-touch-icon.png' /><link rel='manifest' href='/site.webmanifest' /><link rel='preconnect' href='https://fonts.googleapis.com'><link rel='preconnect' href='https://fonts.gstatic.com' crossorigin><link href='https://fonts.googleapis.com/css2?family=BBH+Bogle&display=swap' rel='stylesheet'></head><body><header><a href='/' ><b>Haufenet</b></a></header>"
var bottom string = "<footer><p>&copy Lennard Haufe<p><p>Running on net/http GO</p><p>No usage of AI</p><a href='/imprint_privacy/'>Imprint and Privacy</a></footer></body><script src='/index.js'></script></html>"
var tag_collection string = ""
func main() {
entries, err := os.ReadDir("./articles")
if err != nil {
log.Fatal(err)
}
for _, e := range entries {
AnalayzeFiles(e.Name())
}
log.Println(tag_collection)
log.Print("Server running on port 8090")
EditArticlesPage()
ReadFileOthers("imprint_privacy.md")
fileserver := http.FileServer(http.Dir("./website"))
http.Handle("/", fileserver)
if err := http.ListenAndServe(":8090", nil); err != nil {
log.Fatal(err)
}
}
func EditArticlesPage() {
err := os.WriteFile("./website/articles/index.html", []byte(top+"<list-articles><h1 id='top-article-list'>Articles</h1><div>"+data_articles_index+"</div></list-articles>"+bottom), 0755)
if err != nil {
panic(err)
}
}
func AnalayzeFiles(filename string) {
file, err := os.Open("./articles/" + filename)
if err != nil {
log.Fatalf("not opening")
}
filename_new := strings.Split(filename, ".md")
defer file.Close()
scanner := bufio.NewScanner(file)
var end_text_page_article string = ""
var tags_page_article string = ""
var title_overview_articles string = ""
var description_overview_articles string = ""
var image_overview_articles string = ""
for scanner.Scan() {
content := scanner.Text()
if strings.Contains(content, "###") {
part := strings.Split(content, `###`)
end_text_page_article += "<h3>" + part[1] + "</h3>"
} else if strings.Contains(content, "##") {
part := strings.Split(content, `##`)
end_text_page_article += "<h2>" + part[1] + "</h2>"
} else if strings.Contains(content, "#") {
part := strings.Split(content, `#`)
end_text_page_article += "<h1>" + part[1] + "</h1>"
title_overview_articles = "<h1>" + part[1] + "</h1>"
} else if strings.Contains(content, "HEADIMAGE:") {
part := strings.Split(content, `HEADIMAGE:`)
end_text_page_article += "<img src='/pictures/" + part[1] + "'>"
image_overview_articles = "<img src='/pictures/" + part[1] + "'>"
} else if strings.Contains(content, "DESCRIPTION:") {
part := strings.Split(content, `DESCRIPTION:`)
description_overview_articles = "<p>" + part[1] + "</p>"
} else if strings.Contains(content, "[img]:") {
part := strings.Split(content, `[img]:`)
end_text_page_article += "<img src='/pictures/" + part[1] + "'>"
} else if strings.Contains(content, "DESCRIPTION:") {
end_text_page_article = ""
} else if strings.Contains(content, "TAGS:") {
part := strings.Split(content, `TAGS:`)
part_2 := strings.Split(part[1], ",")
part_tags := "<articles-tags>"
for i := 0; i < len(part_2); i++ {
part_tags += "<a href='/tags/" + part_2[i] + "'>" + part_2[i] + "</a>"
tag_collection += "#" + part_2[i] + ":" + filename_new[0] + ":" + title_overview_articles + ":" + description_overview_articles + ":" + image_overview_articles
}
part_tags += "</articles-tags>"
tags_page_article = part_tags
} else if content == "" {
end_text_page_article += "<br>"
} else {
end_text_page_article += "<p>" + content + "</p>"
}
}
Page_Article(filename_new[0], end_text_page_article, tags_page_article)
Page_Collection_Overview_Articles(filename_new[0], title_overview_articles, image_overview_articles, description_overview_articles, tags_page_article)
}
func Page_Collection_Overview_Articles(filename string, title string, image string, description string, tags string) {
data_articles_index += "<article-display><a href='/articles/" + filename + ".html'>" + title + image + description + "</a>" + tags + "</article-display>"
}
func Page_Article(filename string, text string, tags string) {
err := os.WriteFile("./website/articles/"+filename+".html", []byte(top+"<articles-detail><articles-detail-down>"+text+"<h4>Tags</h4>"+tags+"<br></articles-detail-down></articles-detail>"+bottom), 0755)
if err != nil {
panic(err)
}
}
func ReadFileOthers(filename string) {
file, err := os.Open("./other/" + filename)
if err != nil {
log.Fatalf("not opening")
}
defer file.Close()
scanner := bufio.NewScanner(file)
var new_text string = ""
for scanner.Scan() {
content := scanner.Text()
var end_type string = ""
if strings.Contains(content, "###") {
part := strings.Split(content, `###`)
end_type = "<h3>" + part[1] + "</h3>"
} else if strings.Contains(content, "##") {
part := strings.Split(content, `##`)
end_type = "<h2>" + part[1] + "</h2>"
} else if strings.Contains(content, "#") {
part := strings.Split(content, `#`)
end_type = "<h1>" + part[1] + "</h1>"
} else if content == "" {
end_type = "<br>"
} else {
end_type = "<p>" + content + "</p>"
}
new_text += end_type
}
filename_new := strings.Split(filename, ".md")
err = os.Mkdir("./website/"+filename_new[0], 0755)
err = os.WriteFile("./website/"+filename_new[0]+"/index.html", []byte(top+"<articles-detail><div>"+new_text+"</div></articles-detail>"+bottom), 0755)
if err != nil {
panic(err)
}
}
View File
+15
View File
@@ -0,0 +1,15 @@
# Impressum
Lennard Haufe
Obere Ziegeli 11
71522 Backnang
# Kontakt
Telefon: 004917650320223
E-Mail: info.lennard.haufe@haufenet.com
# Inhaltlich verantwortlich i.S.v. § 18 Abs. 2 MStV
Lennard Haufe
Obere Ziegelei 11
71522 Backnang
# Dieses Impressum gilt auch für folgende Social-Media-Profile
Instagram: https://www.instagram.com/haufe_net_com/
# Quellenangaben für verwendete Bilder und Grafiken
D. Stroh byd-film.de
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

+1
View File
@@ -0,0 +1 @@
<!doctype html><html lang='en'><head><meta charset='UTF-8' /><meta name='viewport' content='width=device-width, initial-scale=1.0' /><title>Haufenet</title><link rel='stylesheet' href='/index.css' /><link rel='icon' type='image/png' href='/favicon-96x96.png' sizes='96x96'/><link rel='icon' type='image/svg+xml' href='/favicon.svg'/><link rel='shortcut icon' href='/favicon.ico' /><link rel='apple-touch-icon' sizes='180x180' href='/apple-touch-icon.png' /><link rel='manifest' href='/site.webmanifest' /></head><body><header><a href='/' ><b>Haufenet</b></a></header><articles-detail><div><h1> Fuck</h1><img src='/pictures/test.png'><p>some text you wrote me</p><img src='/pictures/another.png'><p>this is what i wrote and display</p><h4>Tags</h4><articles-tags><a href='/tags/projects'>projects</a><a href='/tags/css'>css</a><a href='/tags/html'>html</a><a href='/tags/coding'>coding</a></articles-tags><br></div></articles-detail><footer><p>&copy Lennard Haufe<p><p>No usage of AI</p><a href='/imprint_privacy/'>Imprint and Privacy</a></footer></body><script src='/index.js'></script></html>
+1
View File
@@ -0,0 +1 @@
<!doctype html><html lang='en'><head><meta charset='UTF-8' /><meta name='viewport' content='width=device-width, initial-scale=1.0' /><title>Haufenet</title><link rel='stylesheet' href='/index.css' /><link rel='icon' type='image/png' href='/favicon-96x96.png' sizes='96x96'/><link rel='icon' type='image/svg+xml' href='/favicon.svg'/><link rel='shortcut icon' href='/favicon.ico' /><link rel='apple-touch-icon' sizes='180x180' href='/apple-touch-icon.png' /><link rel='manifest' href='/site.webmanifest' /><link rel='preconnect' href='https://fonts.googleapis.com'><link rel='preconnect' href='https://fonts.gstatic.com' crossorigin><link href='https://fonts.googleapis.com/css2?family=BBH+Bogle&display=swap' rel='stylesheet'></head><body><header><a href='/' ><b>Haufenet</b></a></header><list-articles><h1 id='top-article-list'>Articles</h1><div><article-display><a href='/articles/this_website.html'><h1> This Website</h1><img src='/pictures/another.png'><p>This Website had a lot of diffrent version, featuring diffrent styles...</p></a><articles-tags><a href='/tags/projects'>projects</a><a href='/tags/css'>css</a><a href='/tags/html'>html</a><a href='/tags/coding'>coding</a></articles-tags></article-display></div></list-articles><footer><p>&copy Lennard Haufe<p><p>Running on net/http GO</p><p>No usage of AI</p><a href='/imprint_privacy/'>Imprint and Privacy</a></footer></body><script src='/index.js'></script></html>
+1
View File
@@ -0,0 +1 @@
<!doctype html><html lang='en'><head><meta charset='UTF-8' /><meta name='viewport' content='width=device-width, initial-scale=1.0' /><title>Haufenet</title><link rel='stylesheet' href='/index.css' /><link rel='icon' type='image/png' href='/favicon-96x96.png' sizes='96x96'/><link rel='icon' type='image/svg+xml' href='/favicon.svg'/><link rel='shortcut icon' href='/favicon.ico' /><link rel='apple-touch-icon' sizes='180x180' href='/apple-touch-icon.png' /><link rel='manifest' href='/site.webmanifest' /></head><body><header><a href='/' ><b>Haufenet</b></a></header><articles-detail><articles-detail-down><h1> This Website</h1><img src='/pictures/another.png'><br><p>This Website had a lot of diffrent version, featuring diffrent styles. Everytime I recreate it, I say "this will be the version I will continue on", but then I make a change to it or am unhappy with it. So I create a new Version, mostly from scratch. If I would be honest I could call this version of the Website v20 at least, but I will call it v1.</p><br><h1></h1><br><p>I use golang as my http server and my language to compile my static website. I do it to be able to md as my article writting language, as I do not think that html is good enough for that. First of all i alwasy need to add "<>" and at the end "</>", this makes it a long and fustrating process to write it. Additionaly one nees to add the head as well as the header and footer to every article, which makes changing a style more complicated, when you not only change the css. For example when you change the order of the header, every article needs to be changed, but this static site approach allows to make change to one variable, so that everything is changed.</p><h4>Tags</h4><articles-tags><a href='/tags/projects'>projects</a><a href='/tags/css'>css</a><a href='/tags/html'>html</a><a href='/tags/coding'>coding</a></articles-tags><br></articles-detail-down></articles-detail><footer><p>&copy Lennard Haufe<p><p>No usage of AI</p><a href='/imprint_privacy/'>Imprint and Privacy</a></footer></body><script src='/index.js'></script></html>
+1
View File
@@ -0,0 +1 @@
<!doctype html><html lang='en'><head><meta charset='UTF-8' /><meta name='viewport' content='width=device-width, initial-scale=1.0' /><title>Haufenet</title><link rel='stylesheet' href='/index.css' /><link rel='icon' type='image/png' href='/favicon-96x96.png' sizes='96x96'/><link rel='icon' type='image/svg+xml' href='/favicon.svg'/><link rel='shortcut icon' href='/favicon.ico' /><link rel='apple-touch-icon' sizes='180x180' href='/apple-touch-icon.png' /><link rel='manifest' href='/site.webmanifest' /><link rel='preconnect' href='https://fonts.googleapis.com'><link rel='preconnect' href='https://fonts.gstatic.com' crossorigin><link href='https://fonts.googleapis.com/css2?family=BBH+Bogle&display=swap' rel='stylesheet'></head><body><header><a href='/' ><b>Haufenet</b></a></header><articles-detail><articles-detail-down><h1> This Website</h1><img src='/pictures/another.png'><p>This Website had a lot of diffrent version, featuring diffrent styles. Everytime I recreate it, I say "this will be the version I will continue on", but then I make a change to it or am unhappy with it. So I create a new Version, mostly from scratch. If I would be honest I could call this version of the Website v20 at least, but I will call it v1.</p><h2> The "Technology" behind it</h2><p>I use golang to run the http server and to compile my md files to a static website. I use md over html, becaus first one always needs to add "<>" and at the end "</>" of every text element, this makes it a long and fustrating process to write it. Additionaly one needs to add the head, the header and the footer to every file seperatly.This makes changing a style outside the universal css file more complicated. This means that one thinks of a new header structure, every header in every file needs to be changed. Which can be done of course with a IDE and its "occurences-tool", but this process does not ensure correct result. Leading to error this makes the progess even longer, then with the compalation method.</p><h2> Usage of the Website</h2><p>This website is being populated with diffent informations such as projects, documentations and comments on diffrent technical standpoints. I will use it to improve my english level. So if you are an born english speaker, please be so kind and report any erros to me.</p><h4>Tags</h4><articles-tags><a href='/tags/projects'>projects</a><a href='/tags/css'>css</a><a href='/tags/html'>html</a><a href='/tags/coding'>coding</a></articles-tags><br></articles-detail-down></articles-detail><footer><p>&copy Lennard Haufe<p><p>Running on net/http GO</p><p>No usage of AI</p><a href='/imprint_privacy/'>Imprint and Privacy</a></footer></body><script src='/index.js'></script></html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 906 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="1000" height="1000"><metadata><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><rdf:Description><dc:creator>RealFaviconGenerator</dc:creator><dc:source>https://realfavicongenerator.net</dc:source></rdf:Description></rdf:RDF></metadata><g clip-path="url(#SvgjsClipPath1185)"><rect width="1000" height="1000" fill="#000000"></rect><g transform="matrix(5,0,0,5,0,0)"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 200 200" width="200" height="200"><rect width="200" height="200" fill="url('#gradient')"></rect><defs><linearGradient id="gradient" gradientTransform="rotate(45 0.5 0.5)"><stop offset="0%" stop-color="#000000"></stop><stop offset="100%" stop-color="#000000"></stop></linearGradient><clipPath id="SvgjsClipPath1185"><rect width="1000" height="1000" x="0" y="0" rx="0" ry="0"></rect></clipPath></defs><g><g fill="#ffffff" transform="matrix(4.952176249328318,0,0,4.952176249328318,4.692324014647824,135.2093486603968)" stroke="#ffffff" stroke-width="0.2"><path d="M12.96-14.22L12.96 0L9.55 0L9.55-5.94L4.50-5.94L4.50 0L1.07 0L1.07-14.22L4.50-14.22L4.50-8.57L9.55-8.57L9.55-14.22L12.96-14.22ZM24.08-8.30L24.08-5.66L18.55-5.66L18.55 0L15.13 0L15.13-14.22L24.64-14.22L24.64-11.57L18.55-11.57L18.55-8.30L24.08-8.30ZM37.42-14.22L37.42-11.57L33.15-11.57L33.15 0L29.73 0L29.73-11.57L25.54-11.57L25.54-14.22L37.42-14.22Z"></path></g></g></svg></g></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

+1
View File
@@ -0,0 +1 @@
<!doctype html><html lang='en'><head><meta charset='UTF-8' /><meta name='viewport' content='width=device-width, initial-scale=1.0' /><title>Haufenet</title><link rel='stylesheet' href='/index.css' /><link rel='icon' type='image/png' href='/favicon-96x96.png' sizes='96x96'/><link rel='icon' type='image/svg+xml' href='/favicon.svg'/><link rel='shortcut icon' href='/favicon.ico' /><link rel='apple-touch-icon' sizes='180x180' href='/apple-touch-icon.png' /><link rel='manifest' href='/site.webmanifest' /><link rel='preconnect' href='https://fonts.googleapis.com'><link rel='preconnect' href='https://fonts.gstatic.com' crossorigin><link href='https://fonts.googleapis.com/css2?family=BBH+Bogle&display=swap' rel='stylesheet'></head><body><header><a href='/' ><b>Haufenet</b></a></header><articles-detail><div><h1> Impressum</h1><p>Lennard Haufe</p><p>Obere Ziegeli 11</p><p>71522 Backnang</p><h1> Kontakt</h1><p>Telefon: 004917650320223</p><p>E-Mail: info.lennard.haufe@haufenet.com</p><h1> Inhaltlich verantwortlich i.S.v. § 18 Abs. 2 MStV</h1><p>Lennard Haufe</p><p>Obere Ziegelei 11</p><p>71522 Backnang</p><h1> Dieses Impressum gilt auch für folgende Social-Media-Profile</h1><p>Instagram: https://www.instagram.com/haufe_net_com/</p><h1> Quellenangaben für verwendete Bilder und Grafiken</h1><p>D. Stroh byd-film.de</p></div></articles-detail><footer><p>&copy Lennard Haufe<p><p>Running on net/http GO</p><p>No usage of AI</p><a href='/imprint_privacy/'>Imprint and Privacy</a></footer></body><script src='/index.js'></script></html>
+161
View File
@@ -0,0 +1,161 @@
body{
margin: 0;
left: 0;
font-family: sans-serif;
}
header{
display: grid;
grid-template-columns: 1fr 1fr 1fr;
background-color: hsl(0 0% 10%);
padding: 1rem;
gap: 1rem;
}
img{
width: 800px
}
header a{
display: flex;
align-items: center;
justify-content: center;
text-decoration: none;
color: white;
}
footer{
display: flex;
align-items: center;
justify-content: center;
flex-direction: row;
gap: 1rem;
background-color: hsl(0 0% 10%);
color: hsl(0 0% 80%);
}
footer a{
text-decoration: none;
font-weight: bold;
color: hsl(0 0% 90%);
}
list-articles{
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
background-color: #FFF07C;
}
.bbh-bogle-regular {
font-family: "BBH Bogle", sans-serif;
font-weight: 400;
font-style: normal;
}
#top-article-list{
font-size: 6rem;
font-family: "BBH Bogle", sans-serif;
}
list-articles div{
max-width: 800px;
display: grid;
grid-auto-rows: 1fr;
gap: 2rem;
margin-bottom: 2rem;
}
article-display a{
text-decoration: none;
color: black;
}
article-display a h1:hover{
text-decoration: underline;
}
articles-tags{
display: flex;
flex-direction: row;
gap: 1rem;
}
articles-tags a{
color: hsl(0 0% 90%);
padding: 0.5rem;
font-weight: bold;
background-color: black;
}
articles-detail{
display: flex;
align-items: center;
justify-content: center;
text-align: justify;
}
body-inner{
background-color: #437C90;
}
articles-detail-down{
max-width: 800px;
text-align: justify;
padding: 1rem;
}
articles-detail div{
padding: 1rem;
}
skills{
display: flex;
flex-direction: column;
padding: 1rem;
gap: 4px;
}
skills-sub{
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 1rem;
}
skills-sub button{
background-color: black;
color: hsl(0 0% 80%);
font-weight: bold;
border: none;
}
skills-sub button:hover{
background-color: hsl(0 0% 10%);
}
about h1,p{
display: flex;
flex-direction: column;
padding: 1rem;
max-width: 900px;
}
.special-header{
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
font-family: "BBH Bogle", sans-serif;
font-size: 8rem;
}
about{
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
}
@media (max-width: 1200px){
img{
width: 100%;
}
skills-sub{
display: grid;
grid-template-columns: 1fr;
grid-template-rows: 0.1fr 0.1fr 1fr;
}
article-display{
padding: 1rem;
}
footer{
padding-bottom: 1rem;
display: flex;
flex-direction: column;
}
}
+26
View File
@@ -0,0 +1,26 @@
<!doctype html><html lang='en'><head><meta charset='UTF-8' /><meta name='viewport' content='width=device-width, initial-scale=1.0' /><title>Haufenet</title><link rel='stylesheet' href='/index.css' /><link rel='icon' type='image/png' href='/favicon-96x96.png' sizes='96x96'/><link rel='icon' type='image/svg+xml' href='/favicon.svg'/><link rel='shortcut icon' href='/favicon.ico' /><link rel='apple-touch-icon' sizes='180x180' href='/apple-touch-icon.png' /><link rel='manifest' href='/site.webmanifest' /><link rel='preconnect' href='https://fonts.googleapis.com'><link rel='preconnect' href='https://fonts.gstatic.com' crossorigin><link href='https://fonts.googleapis.com/css2?family=BBH+Bogle&display=swap' rel='stylesheet'></head><body><header><a href='/' ><b>Haufenet</b></a></header>
<body-inner>
<h1 class="special-header">Who I am and what I do</h1>
<about>
<p>Hi my name is Lennard. I am a currently a student in High School and will finish it in 2027 (hopefully ;) ). I do not like to make any photos of me and post them, so you got a text instead. I do not claim to be very capable, but I still aquired some skills in the past years. When talking about the past years, I mean now 4 years since I started to take interest in IT. I started of with the idea of an NAS(Network Attached Storage), but not existant funds let me to use old laptops. The story is even longer but I will not mention the rest </p>
</about>
<skills>
<skills-sub>
<h2>Networking</h2>
<p>From Opnsense, Unifi to Linux and Servers</p>
<button onclick="window.location.href='/tags/networking'" >SUCH PROJECTS</button>
</skills-sub>
<skills-sub>
<h2>Programming</h2>
<p>Loved JS and Golang, tried C and forced Java</p>
<button onclick="window.location.href='/tags/programming'">SUCH PROJECTS</button>
</skills-sub>
<skills-sub>
<h2>Design</h2>
<p>Work in Progress ... as You can see</p>
<button onclick="window.location.href='/tags/design'">SUCH PROJECTS</button>
</skills-sub>
</skills>
</body-inner>
<footer><p>&copy Lennard Haufe<p><p>No usage of AI</p><a href='/imprint_privacy/'>Imprint and Privacy</a></footer></body><script src='/index.js'></script></html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

+21
View File
@@ -0,0 +1,21 @@
{
"name": "Haufenet",
"short_name": "HFT",
"icons": [
{
"src": "/web-app-manifest-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/web-app-manifest-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB