Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
315d21d955 | ||
|
|
fc98b3fc0b | ||
|
|
6976253cef | ||
|
|
556b732ee4 | ||
|
|
c798358b49 | ||
|
|
afe05b010d |
@@ -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.
|
||||||
@@ -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
|
||||||
@@ -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.
|
||||||
@@ -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>© 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)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
After Width: | Height: | Size: 1.5 KiB |
@@ -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>© 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>
|
||||||
@@ -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>© 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>
|
||||||
@@ -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>© 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>
|
||||||
@@ -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>© 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>
|
||||||
|
After Width: | Height: | Size: 906 B |
|
After Width: | Height: | Size: 15 KiB |
@@ -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 |
@@ -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>© 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>
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>© 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>
|
||||||
|
After Width: | Height: | Size: 3.3 MiB |
|
After Width: | Height: | Size: 45 KiB |
@@ -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"
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 7.5 KiB |