diff --git a/_includes/components/homepage-section.njk b/_includes/components/homepage-section.njk
index e61e715..e7b8ee0 100644
--- a/_includes/components/homepage-section.njk
+++ b/_includes/components/homepage-section.njk
@@ -49,6 +49,8 @@
{% include "components/sections/funkwhale.njk" ignore missing %}
{% elif section.type == "lastfm" %}
{% include "components/sections/lastfm.njk" ignore missing %}
+{% elif section.type == "posting-activity" %}
+ {% include "components/sections/posting-activity.njk" ignore missing %}
{% else %}
{% endif %}
diff --git a/_includes/components/sections/posting-activity.njk b/_includes/components/sections/posting-activity.njk
new file mode 100644
index 0000000..976dba5
--- /dev/null
+++ b/_includes/components/sections/posting-activity.njk
@@ -0,0 +1,24 @@
+{# Posting Activity Section — configurable post-graph contribution grid #}
+{% set sectionConfig = section.config or {} %}
+{% set graphTitle = sectionConfig.title or "Posting Activity" %}
+
+{% if collections.posts and collections.posts.length %}
+
+ {{ graphTitle }}
+
+ {% set graphOptions = {} %}
+ {% if sectionConfig.years and sectionConfig.years.length %}
+ {% set graphOptions = { only: sectionConfig.years } %}
+ {% elif sectionConfig.limit %}
+ {% set graphOptions = { limit: sectionConfig.limit } %}
+ {% endif %}
+ {% postGraph collections.posts, graphOptions %}
+
+ View full history
+
+
+Posting Activity
{% postGraph collections.posts %}
+
+ View full history
+
+
+ A contribution-style graph showing posting frequency across all years. +
+ +{% if collections.posts and collections.posts.length %} + {% postGraph collections.posts, { limit: 0 } %} +{% else %} +No posts found.
+{% endif %}