From 686bbe1b7916992afb7781d63b2117c347d4ed11 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 6 Jul 2025 18:40:46 +0000
Subject: [PATCH 1/3] Initial plan
From ba013950e1a363969c5a3e01b642fd2751980bca Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 6 Jul 2025 18:58:25 +0000
Subject: [PATCH 2/3] Implement RSS feed aggregation for external blogs -
homepage working
Co-authored-by: wesleycamargo <897126+wesleycamargo@users.noreply.github.com>
---
data/en/sections/posts.yaml | 1 +
data/external-blogs.yaml | 26 +++++
data/mock-external-posts.yaml | 62 ++++++++++++
layouts/blog/list.html | 96 +++++++++++++++++++
layouts/posts/list.html | 96 +++++++++++++++++++
.../assets/styles/application.template.scss | 1 +
.../styles/sections/external-posts.scss | 78 +++++++++++++++
.../layouts/partials/cards/external-post.html | 54 +++++++++++
.../partials/helpers/rss-aggregator.html | 33 +++++++
.../partials/sections/recent-posts.html | 45 ++++++++-
10 files changed, 490 insertions(+), 2 deletions(-)
create mode 100644 data/external-blogs.yaml
create mode 100644 data/mock-external-posts.yaml
create mode 100644 layouts/blog/list.html
create mode 100644 layouts/posts/list.html
create mode 100644 themes/toha/assets/styles/sections/external-posts.scss
create mode 100644 themes/toha/layouts/partials/cards/external-post.html
create mode 100644 themes/toha/layouts/partials/helpers/rss-aggregator.html
diff --git a/data/en/sections/posts.yaml b/data/en/sections/posts.yaml
index 421ffc2..b093f1f 100644
--- a/data/en/sections/posts.yaml
+++ b/data/en/sections/posts.yaml
@@ -5,6 +5,7 @@ section:
enable: true
weight: 6
showOnNavbar: true
+ numShow: 6
# Can optionally hide the title in sections
# hideTitle: true
diff --git a/data/external-blogs.yaml b/data/external-blogs.yaml
new file mode 100644
index 0000000..37a9aee
--- /dev/null
+++ b/data/external-blogs.yaml
@@ -0,0 +1,26 @@
+---
+# External blog RSS feeds configuration
+feeds:
+ - name: "DevJev.nl"
+ url: "https://www.devjev.nl/"
+ rss_url: "https://www.devjev.nl/feed.xml"
+ author: "DevJev"
+ favicon: ""
+
+ - name: "Bearman.nl"
+ url: "https://bearman.nl/"
+ rss_url: "https://bearman.nl/feed.xml"
+ author: "Bearman"
+ favicon: ""
+
+ - name: "Wesley Camargo"
+ url: "https://wesleycamargo.github.io/"
+ rss_url: "https://wesleycamargo.github.io/feed.xml"
+ author: "Wesley Camargo"
+ favicon: ""
+
+# Configuration for RSS aggregation
+config:
+ max_posts_per_feed: 5
+ cache_duration: "1h"
+ enable_aggregation: true
\ No newline at end of file
diff --git a/data/mock-external-posts.yaml b/data/mock-external-posts.yaml
new file mode 100644
index 0000000..9cf9516
--- /dev/null
+++ b/data/mock-external-posts.yaml
@@ -0,0 +1,62 @@
+# Mock external blog posts for testing
+# This file simulates RSS feed data when actual feeds are not available
+mock_posts:
+ - title: "Advanced Cloud Security Patterns"
+ url: "https://www.devjev.nl/posts/cloud-security-patterns"
+ description: "Exploring advanced security patterns for cloud-native applications, including zero-trust architecture and secure service mesh implementations."
+ date: "2024-01-15T10:30:00Z"
+ author: "DevJev"
+ source: "DevJev.nl"
+ source_url: "https://www.devjev.nl/"
+ image: "https://via.placeholder.com/400x200/0066cc/ffffff?text=Cloud+Security"
+ external: true
+
+ - title: "Kubernetes Networking Deep Dive"
+ url: "https://bearman.nl/posts/kubernetes-networking"
+ description: "A comprehensive guide to understanding Kubernetes networking, covering CNI plugins, service mesh, and network policies for enterprise deployments."
+ date: "2024-01-12T14:15:00Z"
+ author: "Bearman"
+ source: "Bearman.nl"
+ source_url: "https://bearman.nl/"
+ image: "https://via.placeholder.com/400x200/28a745/ffffff?text=K8s+Networking"
+ external: true
+
+ - title: "Infrastructure as Code Best Practices"
+ url: "https://wesleycamargo.github.io/posts/iac-best-practices"
+ description: "Essential best practices for Infrastructure as Code implementation, covering Terraform, Ansible, and GitOps workflows for scalable cloud infrastructure."
+ date: "2024-01-10T09:45:00Z"
+ author: "Wesley Camargo"
+ source: "Wesley Camargo"
+ source_url: "https://wesleycamargo.github.io/"
+ image: "https://via.placeholder.com/400x200/dc3545/ffffff?text=IaC+Best+Practices"
+ external: true
+
+ - title: "Serverless Architecture Patterns"
+ url: "https://www.devjev.nl/posts/serverless-patterns"
+ description: "Comprehensive overview of serverless architecture patterns using AWS Lambda, Azure Functions, and Google Cloud Functions for modern applications."
+ date: "2024-01-08T16:20:00Z"
+ author: "DevJev"
+ source: "DevJev.nl"
+ source_url: "https://www.devjev.nl/"
+ image: "https://via.placeholder.com/400x200/ffc107/000000?text=Serverless"
+ external: true
+
+ - title: "Container Security Fundamentals"
+ url: "https://bearman.nl/posts/container-security"
+ description: "Essential security practices for containerized applications, including image scanning, runtime protection, and compliance frameworks."
+ date: "2024-01-05T11:30:00Z"
+ author: "Bearman"
+ source: "Bearman.nl"
+ source_url: "https://bearman.nl/"
+ image: "https://via.placeholder.com/400x200/6f42c1/ffffff?text=Container+Security"
+ external: true
+
+ - title: "Multi-Cloud Strategy Implementation"
+ url: "https://wesleycamargo.github.io/posts/multi-cloud-strategy"
+ description: "Strategic approach to implementing multi-cloud architectures, covering vendor management, cost optimization, and operational complexity."
+ date: "2024-01-03T08:15:00Z"
+ author: "Wesley Camargo"
+ source: "Wesley Camargo"
+ source_url: "https://wesleycamargo.github.io/"
+ image: "https://via.placeholder.com/400x200/17a2b8/ffffff?text=Multi-Cloud"
+ external: true
\ No newline at end of file
diff --git a/layouts/blog/list.html b/layouts/blog/list.html
new file mode 100644
index 0000000..5c91932
--- /dev/null
+++ b/layouts/blog/list.html
@@ -0,0 +1,96 @@
+{{ define "navbar" }}
+ {{ partial "navigators/navbar.html" . }}
+{{ end }}
+
+{{ define "sidebar" }}
+ {{ $homePage:="#" }}
+ {{ if hugo.IsMultilingual }}
+ {{ $homePage = (path.Join (cond ( eq .Language.Lang "en") "" .Language.Lang) .Type) }}
+ {{ end }}
+
+
+{{ end }}
+
+{{ define "content" }}
+
{{ .description | plainify | truncate 150 }}
+ + {{/* External source info */}} +