diff --git a/.gitignore b/.gitignore index 0299c7e..4c143d4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,137 @@ -# ---> Hugo -# Generated files by hugo -/public/ -/resources/_gen/ -/assets/jsconfig.json +# ============================================================================== +# Created by https://gitignores.com/ +# COMPREHENSIVE FRAMEWORK TEMPLATE for Hugo +# Website: https://gohugo.io/ +# Repository: https://github.com/gohugoio/hugo +# ============================================================================== + +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# TEMPLATE OVERVIEW & USAGE NOTES +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# • TEMPLATE TYPE: COMPREHENSIVE FRAMEWORK TEMPLATE +# • PURPOSE: Complete Hugo Go framework patterns for static site generation and build artifacts +# • DESIGN PHILOSOPHY: Self-contained with all Hugo-specific patterns +# • COMBINATION GUIDANCE: Use standalone; optionally add IDE/OS templates +# • SECURITY CONSIDERATIONS: Includes security patterns for .env files and credentials +# • BEST PRACTICES: Review patterns before use, test with git check-ignore, customize for your project +# • OFFICIAL SOURCES: Hugo documentation and community best practices + +# •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• +# SECURITY & SENSITIVE DATA PROTECTION (ALWAYS FIRST!) +# •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• +# CRITICAL: Protect sensitive data from accidental commits to version control + +*.crt +*.key +*.keystore +*.pem +*.secret +*.token +*_keys +*_secrets +*_tokens +.env +.env.* +.env.*.local +.env.local +id_dsa +id_rsa + +# •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• +# BUILD ARTIFACTS & DISTRIBUTION +# •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• + +*.tar.gz +*.zip +public/ +resources/ + +# •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• +# DEPENDENCY MANAGEMENT & PACKAGE CACHE +# •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• + +.cache/ +_modules/ +docs/_build/ + +# •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• +# DEVELOPMENT & RUNTIME ARTIFACTS +# •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• + +*.log +*.tmp +hugo.log +.hugo_build.lock + +# •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• +# FRAMEWORK-SPECIFIC PATTERNS +# •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• + +*.temp +.backup/ +.bak/ +.deploy/ +.deployment/ +archetypes/__generated__/ +assets/__generated__/ +assets/css/__generated__/ +assets/images/__generated__/ +assets/js/__generated__/ +benchmark/ +benchmarks/ +config.json.bak +config.toml.bak +config.yaml.bak +config.yml.bak +content/__generated__/ +data/__generated__/ +docs/_site/ +hugo.json.bak +hugo.toml.bak +hugo.yaml.bak +hugo.yml.bak hugo_stats.json +layouts/__generated__/ +static/__generated__/ +themes/*/ -# Executable may be added to repository -hugo.exe -hugo.darwin -hugo.linux +# •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• +# TESTING & QUALITY ASSURANCE +# •••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••• -# Temporary lock file while building -/.hugo_build.lock +coverage/ +tests/ +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# TEMPLATE CUSTOMIZATION & BEST PRACTICES +# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# 1. REVIEW: Examine all patterns before use +# 2. CUSTOMIZE: Adapt to your project's specific structure +# 3. TEST: Use `git check-ignore` to verify patterns +# 4. SECURE: Always protect sensitive data and credentials +# 5. UPDATE: Review periodically as technology evolves + +# RECOMMENDED USAGE PATTERNS: +# ============================================================================== +# +# BASIC USAGE (STANDALONE): +# ------------------------- +# cp frameworks/hugo.gitignore .gitignore +# +# WITH IDE SUPPORT: +# ---------------- +# cat frameworks/hugo.gitignore \ +# ides/visual-studio-code.gitignore | sort -u > .gitignore +# +# CROSS-PLATFORM DEVELOPMENT: +# --------------------------- +# cat frameworks/hugo.gitignore \ +# os/linux.gitignore \ +# os/macos.gitignore \ +# os/windows.gitignore | sort -u > .gitignore +# +# IMPORTANT NOTES: +# ============================================================================== +# 1. This template is self-contained and includes security patterns +# 2. No need to add common/security.gitignore separately +# 3. Test with `git status --ignored` to ensure proper coverage diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..42741c4 --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,12 @@ +--- +date: '{{ .Date }}' +draft: false +title: '{{ replace .File.ContentBaseName "-" " " | title }}' + +author: "Michael" +cover: + image: "" + +category: ["categories"] +tags: ["first"] +--- diff --git a/archetypes/page.md b/archetypes/page.md new file mode 100644 index 0000000..b559ef2 --- /dev/null +++ b/archetypes/page.md @@ -0,0 +1,6 @@ +--- +draft: false +title: '{{ replace .File.ContentBaseName "-" " " | title }}' +url: +comments: false +--- diff --git a/content/about.md b/content/about.md new file mode 100644 index 0000000..2212f0a --- /dev/null +++ b/content/about.md @@ -0,0 +1,13 @@ +--- +date: '2026-07-31T19:16:38+02:00' +draft: false +title: 'About' +url: /about/ +comments: false +--- +## Moin, +Ich bin Michael, Elektroingenieur, Fotograf, Musiker und ich schreibe gern. Neben der Musik und der Fotografie interessiere ich mich für Open Source Anwedungen, Open Data, Nachhaltigkeit, Tier- und Menschenrechte. + +...ach ja und Katzen 😸 + +Auf diesem Blog schreibe ich was ich so mache, was ich so erlebt habe oder worüber ich mir Gedanken gemacht habe. diff --git a/content/archives.md b/content/archives.md new file mode 100644 index 0000000..aaadc43 --- /dev/null +++ b/content/archives.md @@ -0,0 +1,7 @@ + +--- +title: "All" +layout: "archives" +url: "/all/" +summary: archives +--- diff --git a/content/blogroll.md b/content/blogroll.md new file mode 100644 index 0000000..4779f87 --- /dev/null +++ b/content/blogroll.md @@ -0,0 +1,9 @@ +--- +draft: false +title: 'Blogroll' +url: /blogroll/ +comments: false +ShowReadingTime: false +ShowWordCount: false +--- +### Inhalt folgt in Kürze diff --git a/content/changelog.md b/content/changelog.md new file mode 100644 index 0000000..7d543a7 --- /dev/null +++ b/content/changelog.md @@ -0,0 +1,21 @@ +--- +draft: false +title: 'Changelog' +url: /changelog/ +comments: false +ShowReadingTime: false +ShowWordCount: false +--- +## Änderungen an diesem Blog +### 2026-08-01 Wechsel des Content Management Systems + - Bisher wurde für diesen Blog [Wordpress](https://wordpress.org/) verwendet. Stattdessen wird nun [Hugo](https://gohugo.io) verwendet + - Vor dem Umstieg wurde für Kommentare, die von Wordpress integrierte Funktion verwendet. Als ersatz wird nun eine selbst gehostete Instanz von [remark42](https://remakr42.com) eingesetzt. + +### 2026-08-08 ActivityPub + - Vor dem Umstieg wurde das [Wordpress Plugin ActivityPub](https://wordpress.org/plugins/activitypub/) verwendet. Als ersatz hierfür dient nun eine selbst gehostete Instanz von [GoToSocial](https://gotosocial.org/) eingesetzt. Der Benutzer, welcher automatisiert Posts absetzt ist unter [https://social.mike-whiskey.de/@michael](https://social.mike-whiskey.de/@michael) zu finden. + +### 2026-08-09 Slashes und Kategorien + - Anlegen einer [/Slashes Page](/slashes) + - Anlegen einer [/Changelog Page](/changelog) + - Anlgen von Platzhalter für /uses, /follow und blogroll/ + - Die Kategorie *Persönliches Logbuch* wurde umbenannt in *logbuch* diff --git a/content/follow.md b/content/follow.md new file mode 100644 index 0000000..6f6b432 --- /dev/null +++ b/content/follow.md @@ -0,0 +1,9 @@ +--- +draft: false +title: 'Follow' +url: /follow/ +comments: false +ShowReadingTime: false +ShowWordCount: false +--- +### Inhalt folgt in Kürze diff --git a/content/posts/2026/2026-08-09_hello_hugo/index.md b/content/posts/2026/2026-08-09_hello_hugo/index.md new file mode 100644 index 0000000..025c081 --- /dev/null +++ b/content/posts/2026/2026-08-09_hello_hugo/index.md @@ -0,0 +1,76 @@ +--- +categories: + - fotologbuch +#cover: +# image: images/... +tags: + - landschaft + - nebel + - schnee + - wald + - waldrand +title: "Hello Hugo" + + +--- +## Komm wir fangen etwas neues an + +Moin, ich habe den Schritt gewagt und habe mich von Wordpress verabschiedet und bin zu dem Content Management Systems (CMS) [Hugo](https://gohugo.io) übergelaufen. Warum ich das gemacht habe, hat mehrere Gründe. + + +Ich kann Posts direkt am Laptop als sog. [Markdown Datei](https://de.wikipedia.org/wiki/Markdown) in einem x-Beliebigen Texteditor verfassen. Ich bin also nicht darauf angewiesen, mich auf dem Dashboard von Wordpress anzumelden um dann im Browser den Beitrag zu schreiben. Da ich gerne von Unterwegs schreibe ist also auch nicht zwingend ein Internetzugang notwendig + +Ich habe den kompletten Blog mit [Git](https://de.wikipedia.org/wiki/Git) unter Versionskontrolle. Alle Änderungen können also direkt gesehen und ggf. mit einem klick zurückgenommen werden. + +Ich hab die Schnauze voll von Wordpress. Mein Blog ist ja relativ simple gestrickt und so waren auch nicht viele Plugins notwendig. Dennoch ständig diese Aufmerksamkeitshascherei, *komm schau mal hier und willst du nicht auf Premum wechseln? Kostet auch nur 100€ im Jahr, bla, bla...*. Ne, sowas regt mich auf ^^. + +Zudem find ich es etwas übertrieben, für ein kleines Blog eine [MySQL Datenbank](https://de.wikipedia.org/wiki/MySQL) betreiben zu müssen. + +## Warum Hugo? +Das kann ich gleich als erstes beantworten: weil es für mich am besten passt! + +Letztes Jahr um die Weihnachtszeit hab ich mich mit verschiedenen CMS auseinander gesetzt. Fürs erste habe ich mich allerdings dagegen entschieden. Bis ich dann vor ein Paar Monaten auf [Publii](https://getpublii.com/) gestoßen bin. Publii wird auf dem PC installiert und hat dann eine Grafische Benutzeroberfläche, wo alles relativ entspannt eingestellt werden kann. Mit ein paar wenigen Einstellungen ist es dann auch möglich, die erstelle Website direkt auf den Server hochzuladen. Dort landen dann die statischen HTML Dateien. Ich hatte ohne größere Einarbeitungszeit innerhalb von ein paar Minuten eine Homepage gebaut und hochgeladen. + +Das hatte mich erstmal beeindruckt. Also beschäftigte ich mich weiter damit und hab angefangen ein vorgefertigtes Theme an meine Vorstellungen anzupassen. Doch als ich versucht habe das Programm (also das auf meinem Laptop installiert ist) so anzupassen, dass es meinen Vorstellungen entspricht, war ich schonwieder etwas genervz ^^. + +Da ich vom [Pixelroiber](https://pixelroiber.de/) weiß, dass er Hugo verwendet und er damit einen schönen Blog damit betreibt, hab ich mir dieses CMS doch nochmal genauer angeschaut. + +Ja Hugo ist mächtig und ich musste mir erst mal einiges aneigen/durchlesen/ausprobieren bevor ich damit loslegen konnte. Wobei ich sagen muss, dass der [Quick Start Guide](https://gohugo.io/getting-started/quick-start/) gut gemacht ist und einen sanften Einstieg bringt. Bei allem danach hatte ich eine steile Lernkurve 😂 + +Wo nun für mich der Vorteil darin ist: ich habe meine Feste Ordnerstruktur im Home-Verzeichnis und ich möchte den "Hugo-Workspace" neben meinen anderen Projekten haben. Dazu kommt, dass ich gerne mit Bash-Skripten arbeite und mir so für alle Anwendungsfälle, unkompliziert ein passendes Skript schreiben kann. + +Aber gut, es kam der Moment und den hätte ich vielleicht etwas früher machen sollen, als ich mir Gedanken dazu gemacht habe, wie ich denn meine beiden Blogs von Wordpress zu Hugo migriere. Es gibt ein relativ simples Tool dafür und das nennt sich [wp2hugo](https://github.com/ashishb/wp2hugo). + +Hierfür wird als erstes im Dashboard von der Wordpress-Seite eine export-XML Datei erstellt und heruntergeladen. Diese XML-Datei, kann dann wp2hugo übergeben werden und das Programm erstellt daraus ein Hugo-Projekt. + +Hätte ich das früher gemacht, wäre mir deutlich schneller aufgefallen, wie die Arbeitsweise von Hugo ist. Aber gut, nichts war umsonst und nun kenne ich die wichtigsten Mechanismen. + +## Die nächste Herausforderung +Kommentare! Mir sind Kommentare wichtig und ich freu mich immer darüber. Aber Kommentare sind dynamischer Inhalt und hierfür ist dann doch wieder eine Datenbank erforderlich. Hugo bietet hier von Haus eine Funktion eine Kommentarfunktion mithilfe von [Disqus](https://de.wikipedia.org/wiki/Disqus) zu implementieren, aber das ist dann wieder eine Zentralisierte Lösung, bei der dann auch noch ein Unternehemen aus den USA dahinter steht. + +Für mich war das erstmal verlockend, aber dann hatte ich mich doch gleich wieder von dem Gedanken verabschiedet. Ich möchte nicht, dass Menschen die bei mir einen Kommentar abgeben möchten, sich u.U. erst mal Gedanken darüber machen müssen - also Stichwort Datenschutz. + +Es gibt noch eine Reihe weiterer Dienstleister, aber für mich war klar, es muss eine Lösung her, die ich selber Hosten kann. Am Ende hatten sich dann drei Sinnvolle Optionen herauskristallisiert. + +### Die erste Option... +...war [Isso](https://isso-comments.de/). Das ist total simple und ich hatte das relativ schnell am laufen. Besonders nice finde ich die Ausage vom Entwickler +> **SQLite Backend** +> Because comments are not Big Data. + +Mein erster Blick auf das [Github Reposistory](https://github.com/isso-comments/isso/) hatte bei mir den Anschein erweckt, dass das Projekt eingeschlafen/verweist ist. Als ich nun nochmal darauf geschaut hatte, ist mir allerdings doch noch aktivität aufgefallen. Was mich dazu veranlasst doch nochmal darüber nachzudenken, Isso zu verwenden. Dies war nämlich mein Favorit, aber ich versuche es wo es geht zu vermeiden, Software zu verwenden welche nicht mehr gewartet wird - besonders bei Webanwendungen. + +### Die zweite Option... +...war [Pure Comments](https://github.com/kevquirk/purecomments). Das ist noch ein relativ junges Projekt und sieht auf den ersten Blick relativ einfach aus, allerdings hatte ich Schwierigkeiten, eine Instanz für mehrere Websites zu verwenden. Möglich, dass ich es mir nicht genau genug angeschaut hatte, aber das hab ich aus diesem Grund dann doch zügig wieder beiseite gelegt. + +### Die dritte Option... +...war [Remark42](https://remark42.com/). Das ist zum einen sehr leichtgewichtig und zum anderen aber auch sehr mächtig. Und leider auch etwas spärlich Dokumentiert. Ich hab einiges ausprobiert musste mir aber vieles durch ausprobieren erarbeiten. Für war das letztes Wochenende noch die beste Option und deshalb läuft die Kommentarfunktion auf diesem Blog und bei meinem [Fotoblog](https://logbuch35mm.de). Aber wie schon oben erwähnt, werde ich mir Isso doch nochmal bei Gelegenheit anschauen. + +## Was ist mit ActivityPub? +Also das Protokoll, welches vom Fediverse verwendet wird. Bei Wordpress hatte ich den Komfort, einfach ein Plugin zu installieren und schon war es möglich mit einem Dienst wie Mastodon, diesem zu Folgen. Joa des geht auch im Zusammenspiel mit Hugo. Hierfür hatte ich schon ein paar Anleitungen gefunden, allerdings kostet mich soetwas viel Zeit. Zeit die ich am Stück brauche und nicht immer mal wieder nach Feierabend machen kann. Das funktionerit mit meinem Hirn nicht ^^ + +Deshalb habe ich mir fürs erste eine Alternative überlegt - und zwar eine eigene [GoToSocial](https://gotosocial.org/) Instanz. Diese hat (bisher) einen User und der wird einen Post ins Fediverse absetzten, wenn ich hier einen neuen Beitrag poste. Zu finden ist das hier [https://social.mike-whiskey.de/@michael](https://social.mike-whiskey.de/@michael) + +## Und nun aus dem Quark kommen +Ja, der eigentliche Umzug war schnell erledigt. Es gibt aber noch so viel, was ich für diesen und den Fotoblog machen muss, möchte, was auch immer 😬 nur so langsam sollte ich aus dem Quark kommen. Hier blockiert mein Hirn dann schnell und möchte erst mal alles "perfekt" machen, bevor es weiter geht. Dabei habe ich schon in der Vergangenheit gelernt, dass es viel länger dauert, wenn ich versuche alles auf einmal so hinbiege, dass es für mich zufriedenstellend ist. + +Lange Rede kurzer Sinn. Es ist noch nicht alles fertig und das wird Stück Stück sich noch anpassen. Nun bin ich aber erst mal zufrieden und habe hiermit nun meinen ersten neuen Post den ich mit Hugo erstellt habe fertig 😌 diff --git a/content/search.md b/content/search.md new file mode 100644 index 0000000..6dea674 --- /dev/null +++ b/content/search.md @@ -0,0 +1,8 @@ + +--- +title: "Search" # in any language you want +layout: "search" # necessary for search +summary: "Search" +url: "/search/" +placeholder: "placeholder text in search input box" +--- diff --git a/content/slashes.md b/content/slashes.md new file mode 100644 index 0000000..9e26e8f --- /dev/null +++ b/content/slashes.md @@ -0,0 +1,17 @@ +--- +draft: false +title: 'Slashes' +comments: false +url: /slashes/ +ShowReadingTime: false +ShowWordCount: false +--- +## Eine Liste aller meine slash pages +Mehr zu dem findest du [hier](https://slashpages.net/) +- [/About](/about) +- [/Blogroll](/blogroll) +- [/Changelog](/changelog) +- [/Follow](/follow) +- [/Slashes](/slashes) +- [/Uses](/uses) + diff --git a/content/uses.md b/content/uses.md new file mode 100644 index 0000000..3dcc013 --- /dev/null +++ b/content/uses.md @@ -0,0 +1,9 @@ +--- +draft: false +title: 'Uses' +url: /uses/ +comments: false +ShowReadingTime: false +ShowWordCount: false +--- +### Inhalt folgt in Kürze diff --git a/hugo.yml b/hugo.yml new file mode 100644 index 0000000..dc6e3af --- /dev/null +++ b/hugo.yml @@ -0,0 +1,160 @@ +baseURL: "https://mike-whiskey.de/" +title: Mike Whiskey +paginate: 10 +theme: + - hugo-PaperMod + - hugo-shortcode-gallery + +enableRobotsTXT: true +buildDrafts: false +buildFuture: false +buildExpired: false + +module: + mounts: + - source: assets + target: assets + - source: static + target: static + - source: content + target: content + - source: ../Archiv/wp-content/ + target: assets/wp-content + - source: /home/michael/Bilder/2026/ + target: assets/images + - source: /home/michael/Bilder/2025/ + target: assets/images + - source: /home/michael/Bilder/2024/ + target: assets/images + +permalinks: + posts: "/:year/:month/:slug/" + +minify: + disableXML: true + minifyOutput: true + +taxonomies: + category: categories + tag: tags + +publishDir: /tmp/MikeWhiskey_Public + +outputs: + home: + - HTML + - RSS + - JSON +outputFormats: + RSS: + mediaType: application/rss+xml + baseName: feed + +menu: + main: + - identifier: about + name: about + url: /about/ + weight: 9 + - identifier: tags + name: tags + url: /tags/ + weight: 10 + - identifier: slashes + name: slashes + url: /slashes/ + weight: 20 + +# Read: https://github.com/adityatelange/hugo-PaperMod/wiki/FAQs#using-hugos-syntax-highlighter-chroma +pygmentsUseClasses: true +markup: + highlight: + noClasses: false + # anchorLineNos: true + # codeFences: true + # guessSyntax: true + # lineNos: true + # style: monokai + +params: + env: production + title: Mike Whiskey + description: "Fotblog aus der Nordheide und Hamburg" + keywords: [Blog, Fotblog, Lüneburger Heide, Hamburg, Fotografie] + author: Michael + images: [""] + DateFormat: "2006-01-02" + defaultTheme: dark # dark, light + disableThemeToggle: true + + ShowReadingTime: false + ShowShareButtons: false + ShowPostNavLinks: true + ShowBreadCrumbs: true + ShowCodeCopyButtons: false + ShowWordCount: true + ShowRssButtonInSectionTermList: false + UseHugoToc: true + disableSpecial1stPost: false + disableScrollToTop: false + comments: true + hidemeta: false + hideSummary: false + showtoc: false + tocopen: false + +# assets: +# # disableHLJS: true # to disable highlight.js +# # disableFingerprinting: true +# favicon: favicon/favicon.ico +# favicon16x16: favicon/favicon-16x16.png +# favicon32x32: favicon/favicon-32x32.png +# apple_touch_icon: favicon/apple-touch-icon.png +# safari_pinned_tab: favicon/android-chrome-512x512.png + + label: + text: "Mike Whiskey" + #icon: favicon/apple-touch-icon.png + iconHeight: 35 + + profileMode: + enabled: true # needs to be explicitly set + title: Moin! + subtitle: "Coffee, Blackmetal, Katzen, Selfhosting, Bandstuff, Achtsamkeit, Nachhaltigkeit oder kurz: Dinge die mich beschäftigen" + imageUrl: "IMG_5027.jpg" + imageWidth: 240 + imageHeight: 240 + imageTitle: Profilbild von Michael + Content: "Willkommen auf meinem Blog" + buttons: + - name: Posts + url: posts + - name: about + url: about + + socialIcons: + - name: mastodon + url: "https://norden.social/@logbuch35mm" + - name: email + url: "mailto:mike@logbuch35mm.de" + - name: rss + url: "https://logbuch35mm.de/feed/" + + + cover: + hidden: false # hide everywhere but not in structured data + hiddenInList: false # hide on list pages and home + hiddenInSingle: false # hide on single page + + + # for search + # https://fusejs.io/api/options.html + fuseOpts: + isCaseSensitive: false + shouldSort: true + location: 0 + distance: 1000 + threshold: 0.4 + minMatchCharLength: 0 + limit: 10 # refer: https://www.fusejs.io/api/methods.html#search + keys: ["title", "permalink", "summary", "content"] diff --git a/static/IMG_5027.jpg b/static/IMG_5027.jpg new file mode 100644 index 0000000..4bcec38 Binary files /dev/null and b/static/IMG_5027.jpg differ