diff --git a/website/README.md b/website/README.md
new file mode 100644
index 0000000000..2f6db3fc71
--- /dev/null
+++ b/website/README.md
@@ -0,0 +1,10 @@
+# Graphite Website
+
+Graphite's website uses the [Zola](https://www.getzola.org/) static site generator and [NPM](https://github.com/npm/cli) for dependency resolution. You will need to install both to build the site.
+
+## Building for Development
+
+1. Switch to this directory from the repo root: `cd website`
+2. Install the fonts: `npm run install-fonts`
+3. Run `zola serve`
+4. Open in your browser and start coding!
diff --git a/website/content/blog/2022-02-12-announcing-graphite-alpha.md b/website/content/blog/2022-02-12-announcing-graphite-alpha.md
index 8395644ed7..a2fd4844af 100644
--- a/website/content/blog/2022-02-12-announcing-graphite-alpha.md
+++ b/website/content/blog/2022-02-12-announcing-graphite-alpha.md
@@ -1,12 +1,12 @@
+++
title = "Announcing Graphite alpha"
date = 2022-02-12
+authors = ["Keavon Chambers"]
+description = "The Graphite open source team announces the alpha release of their next-generation graphics editor, a web-based SVG editor with vector-based tools. Future plans include a node-based procedural workflow, a raster graphics compositing engine, and a native desktop client."
[extra]
banner = "https://static.graphite.rs/content/blog/2022-02-12-announcing-graphite-alpha.avif"
banner_png = "https://static.graphite.rs/content/blog/2022-02-12-announcing-graphite-alpha.png"
-author = "Keavon Chambers"
-summary = "The Graphite open source team announces the alpha release of their next-generation graphics editor, a web-based SVG editor with vector-based tools. Future plans include a node-based procedural workflow, a raster graphics compositing engine, and a native desktop client."
reddit = "https://www.reddit.com/r/graphite/comments/unw3hi/blog_post_announcing_graphite_alpha/"
twitter = "https://twitter.com/GraphiteEditor/status/1524663930697568256"
+++
diff --git a/website/content/blog/2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.md b/website/content/blog/2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.md
index c3d7d77261..06d49aae4d 100644
--- a/website/content/blog/2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.md
+++ b/website/content/blog/2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.md
@@ -1,12 +1,12 @@
+++
title = "Graphite: a vision for the future of 2D content creation"
date = 2022-03-12
+authors = ["Keavon Chambers"]
+description = "Graphite is an open-source application for 2D graphics editing and digital content creation, offering a nondestructive, node-based workflow. It combines intuitive UI with powerful procedural image generators to revolutionize 2D content creation."
[extra]
banner = "https://static.graphite.rs/content/blog/2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.avif"
banner_png = "https://static.graphite.rs/content/blog/2022-03-12-graphite-a-vision-for-the-future-of-2d-content-creation.png"
-author = "Keavon Chambers"
-summary = "Graphite is an open-source application for 2D graphics editing and digital content creation, offering a nondestructive, node-based workflow. It combines intuitive UI with powerful procedural image generators to revolutionize 2D content creation."
reddit = "https://www.reddit.com/r/graphite/comments/unw3va/blog_post_graphite_a_vision_for_the_future_of_2d/"
twitter = "https://twitter.com/GraphiteEditor/status/1524664010091556864"
+++
diff --git a/website/content/blog/2022-05-12-distributed-computing-in-the-graphene-runtime.md b/website/content/blog/2022-05-12-distributed-computing-in-the-graphene-runtime.md
index 5a96b2b7b1..5a35c5a9a1 100644
--- a/website/content/blog/2022-05-12-distributed-computing-in-the-graphene-runtime.md
+++ b/website/content/blog/2022-05-12-distributed-computing-in-the-graphene-runtime.md
@@ -1,12 +1,12 @@
+++
title = "Distributed computing in the Graphene runtime"
date = 2022-05-12
+authors = ["Keavon Chambers"]
+description = "Graphite's 2D editor is built upon Graphene, a node-based editing system for nondestructive design across various data types designed to render artwork faster using multiple machines. The system optimizes execution paths, minimizes latency, and uses a distributed runtime for quick data processing."
[extra]
banner = "https://static.graphite.rs/content/blog/2022-05-12-distributed-computing-in-the-graphene-runtime__2.avif"
banner_png = "https://static.graphite.rs/content/blog/2022-05-12-distributed-computing-in-the-graphene-runtime__2.png"
-author = "Keavon Chambers"
-summary = "Graphite's 2D editor is built upon Graphene, a node-based editing system for nondestructive design across various data types designed to render artwork faster using multiple machines. The system optimizes execution paths, minimizes latency, and uses a distributed runtime for quick data processing."
reddit = "https://www.reddit.com/r/graphite/comments/unw45k/blog_post_distributed_computing_in_the_graphene/"
twitter = "https://twitter.com/GraphiteEditor/status/1524664083554791424"
+++
diff --git a/website/content/blog/2024-01-01-looking-back-on-2023-and-what's-next.md b/website/content/blog/2024-01-01-looking-back-on-2023-and-what's-next.md
index c430a2fc75..b3a1ca1986 100644
--- a/website/content/blog/2024-01-01-looking-back-on-2023-and-what's-next.md
+++ b/website/content/blog/2024-01-01-looking-back-on-2023-and-what's-next.md
@@ -1,12 +1,12 @@
+++
title = "Looking back on 2023 and what's next"
date = 2024-01-01
+authors = ["Keavon Chambers"]
+description = "Looking back on 2023, we reflect on our significant achievements and milestones. As we move forward, we're excited to share what's next, promising a year filled with innovation and progress."
[extra]
banner = "https://static.graphite.rs/content/blog/2024-01-01-looking-back-on-2023-and-what's-next.avif"
banner_png = "https://static.graphite.rs/content/blog/2024-01-01-looking-back-on-2023-and-what's-next.png"
-author = "Keavon Chambers"
-summary = "Looking back on 2023, we reflect on our significant achievements and milestones. As we move forward, we're excited to share what's next, promising a year filled with innovation and progress."
reddit = "https://www.reddit.com/r/graphite/comments/18xmoti/blog_post_looking_back_on_2023_and_whats_next/"
twitter = "https://twitter.com/GraphiteEditor/status/1742576805532577937"
diff --git a/website/content/blog/2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.md b/website/content/blog/2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.md
index f9fe300a5c..7e5107497f 100644
--- a/website/content/blog/2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.md
+++ b/website/content/blog/2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.md
@@ -1,11 +1,12 @@
+++
title = "Graphite internships: announcing participation in GSoC 2024"
date = 2024-02-22
+authors = ["Keavon Chambers"]
+description = "Join Graphite in Google Summer of Code 2024 for a unique opportunity to contribute to open-source software development in Rust and computer graphics. Get paid while learning, working on self-contained projects under experienced mentors, and help Graphite grow."
+
[extra]
banner = "https://static.graphite.rs/content/blog/2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.avif"
banner_png = "https://static.graphite.rs/content/blog/2024-02-22-graphite-internships-announcing-participation-in-gsoc-2024.png"
-author = "Keavon Chambers"
-summary = "Join Graphite in Google Summer of Code 2024 for a unique opportunity to contribute to open-source software development in Rust and computer graphics. Get paid while learning, working on self-contained projects under experienced mentors, and help Graphite grow."
reddit = "https://www.reddit.com/r/graphite/comments/1ax3l8z/blog_post_graphite_internships_announcing/"
twitter = "https://twitter.com/GraphiteEditor/status/1760619083396165703"
+++
diff --git a/website/content/blog/2024-05-09-graphite-progress-report-q1-2024.md b/website/content/blog/2024-05-09-graphite-progress-report-q1-2024.md
index bac4e44959..bc13adcd20 100644
--- a/website/content/blog/2024-05-09-graphite-progress-report-q1-2024.md
+++ b/website/content/blog/2024-05-09-graphite-progress-report-q1-2024.md
@@ -1,11 +1,13 @@
+++
title = "Graphite progress report (Q1 2024)"
date = 2024-05-09
+authors = ["Keavon Chambers", "Hypercube"]
+description = "Graphite's Q1 2024 update introduces a precise snapping system and a customizable grid for enhanced design control. The update also includes improved procedural scattering with the 'Copy to Points' node, demonstrated in new demo artwork."
+
+
[extra]
banner = "https://static.graphite.rs/content/blog/2024-05-09-graphite-progress-report-q1-2024__2.avif"
banner_png = "https://static.graphite.rs/content/blog/2024-05-09-graphite-progress-report-q1-2024__2.png"
-author = "Keavon Chambers & Hypercube"
-summary = "Graphite's Q1 2024 update introduces a precise snapping system and a customizable grid for enhanced design control. The update also includes improved procedural scattering with the 'Copy to Points' node, demonstrated in new demo artwork."
reddit = "https://www.reddit.com/r/graphite/comments/1coa0if/blog_post_graphite_progress_report_q1_2024/"
twitter = "https://twitter.com/GraphiteEditor/status/1788698448348266946"
css = ["/component/demo-artwork.css"]
diff --git a/website/content/blog/2024-07-31-graphite-progress-report-q2-2024.md b/website/content/blog/2024-07-31-graphite-progress-report-q2-2024.md
index 72b73f0db3..a3b269d0ba 100644
--- a/website/content/blog/2024-07-31-graphite-progress-report-q2-2024.md
+++ b/website/content/blog/2024-07-31-graphite-progress-report-q2-2024.md
@@ -1,11 +1,13 @@
+++
title = "Graphite progress report (Q2 2024)"
date = 2024-07-31
+authors = ["Keavon Chambers", "Hypercube"]
+description = "Graphite's Q2 2024 update introduces boolean path operations, a new gradient picker, layer locking, and more improvements."
+
+
[extra]
banner = "https://static.graphite.rs/content/blog/2024-07-31-graphite-progress-report-q2-2024.avif"
banner_png = "https://static.graphite.rs/content/blog/2024-07-31-graphite-progress-report-q2-2024.png"
-author = "Keavon Chambers & Hypercube"
-summary = "Graphite's Q2 2024 update introduces boolean path operations, a new gradient picker, layer locking, and more improvements."
reddit = "https://www.reddit.com/r/graphite/comments/1ei9ps2/blog_post_graphite_progress_report_q2_2024/"
twitter = "https://x.com/GraphiteEditor/status/1819360794028462569"
css = ["/component/demo-artwork.css"]
diff --git a/website/content/blog/2024-10-15-graphite-progress-report-q3-2024.md b/website/content/blog/2024-10-15-graphite-progress-report-q3-2024.md
index 149e0c3c6d..9febc5f64a 100644
--- a/website/content/blog/2024-10-15-graphite-progress-report-q3-2024.md
+++ b/website/content/blog/2024-10-15-graphite-progress-report-q3-2024.md
@@ -1,11 +1,13 @@
+++
title = "Graphite progress report (Q3 2024)"
date = 2024-10-15
+authors = ["Keavon Chambers", "Hypercube"]
+description = "Graphite's Q3 2024 update introduces improvements to performance, node graph organization, nondestructive path editing, a new render engine, and more helpful nodes."
+
+
[extra]
banner = "https://static.graphite.rs/content/blog/2024-10-15-graphite-progress-report-q3-2024.avif"
banner_png = "https://static.graphite.rs/content/blog/2024-10-15-graphite-progress-report-q3-2024.png"
-author = "Keavon Chambers & Hypercube"
-summary = "Graphite's Q3 2024 update introduces improvements to performance, node graph organization, nondestructive path editing, a new render engine, and more helpful nodes."
reddit = "https://www.reddit.com/r/graphite/comments/1g4h6ya/blog_post_graphite_progress_report_q3_2024/"
twitter = "https://x.com/GraphiteEditor/status/1846283664562573344"
css = ["/component/demo-artwork.css"]
diff --git a/website/content/blog/2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.md b/website/content/blog/2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.md
index 283b590853..bcf00fefa8 100644
--- a/website/content/blog/2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.md
+++ b/website/content/blog/2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.md
@@ -1,12 +1,13 @@
+++
title = "Year in review: 2024 highlights and a peek at 2025"
date = 2025-01-16
+authors = ["Keavon Chambers"]
+description = "Graphite has come a long way in 2024. Read about the progress made and the plans for the upcoming year."
+
[extra]
banner = "https://static.graphite.rs/content/blog/2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.avif"
banner_png = "https://static.graphite.rs/content/blog/2025-01-16-year-in-review-2024-highlights-and-a-peek-at-2025.png"
-author = "Keavon Chambers"
-summary = "Graphite has come a long way in 2024. Read about the progress made and the plans for the upcoming year."
reddit = "https://www.reddit.com/r/graphite/comments/1i3umnl/blog_post_year_in_review_2024_highlights_and_a/"
twitter = "https://x.com/GraphiteEditor/status/1880404337345851612"
bluesky = "https://bsky.app/profile/graphiteeditor.bsky.social/post/3lfxysayh622g"
diff --git a/website/content/blog/2025-03-31-graphite-progress-report-q4-2024.md b/website/content/blog/2025-03-31-graphite-progress-report-q4-2024.md
index 732ff42e6a..abebd46854 100644
--- a/website/content/blog/2025-03-31-graphite-progress-report-q4-2024.md
+++ b/website/content/blog/2025-03-31-graphite-progress-report-q4-2024.md
@@ -1,11 +1,13 @@
+++
title = "Graphite progress report (Q4 2024)"
date = 2025-03-31
+authors = ["Keavon Chambers", "Hypercube"]
+description = "Graphite's Q4 2024 update introduces quality of life features across drawing tools and procedural editing."
+
+
[extra]
banner = "https://static.graphite.rs/content/blog/2025-03-31-graphite-progress-report-q4-2024.avif"
banner_png = "https://static.graphite.rs/content/blog/2025-03-31-graphite-progress-report-q4-2024.png"
-author = "Keavon Chambers & Hypercube"
-summary = "Graphite's Q4 2024 update introduces quality of life features across drawing tools and procedural editing."
css = ["/component/demo-artwork.css"]
reddit = "https://www.reddit.com/r/graphite/comments/1jpjqcs/blog_post_graphite_progress_report_q4_2024/"
twitter = "https://x.com/GraphiteEditor/status/1907350199414206604"
diff --git a/website/content/blog/2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.md b/website/content/blog/2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.md
index 1c8a54a583..8b60cde570 100644
--- a/website/content/blog/2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.md
+++ b/website/content/blog/2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.md
@@ -1,11 +1,13 @@
+++
title = "Internships for a Rust graphics engine: GSoC 2025"
date = 2025-04-02
+authors = ["Keavon Chambers"]
+description = "Join Graphite in Google Summer of Code 2025 for a unique opportunity to contribute to open-source software development in Rust and computer graphics. Get paid while learning, working on self-contained projects under experienced mentors, and help Graphite grow."
+
+
[extra]
banner = "https://static.graphite.rs/content/blog/2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.avif"
banner_png = "https://static.graphite.rs/content/blog/2025-04-02-internships-for-a-rust-graphics-engine-gsoc-2025.png"
-author = "Keavon Chambers"
-summary = "Join Graphite in Google Summer of Code 2025 for a unique opportunity to contribute to open-source software development in Rust and computer graphics. Get paid while learning, working on self-contained projects under experienced mentors, and help Graphite grow."
reddit = "https://www.reddit.com/r/graphite/comments/1jplm6t/internships_for_a_rust_graphics_engine_gsoc_2025/"
twitter = "https://x.com/GraphiteEditor/status/1907384498389651663"
bluesky = "https://bsky.app/profile/graphiteeditor.bsky.social/post/3llt7lbmm4s24"
diff --git a/website/content/blog/2025-09-19-graphite-community-meetup-in-germany.md b/website/content/blog/2025-09-19-graphite-community-meetup-in-germany.md
index e672d60f42..452cf42378 100644
--- a/website/content/blog/2025-09-19-graphite-community-meetup-in-germany.md
+++ b/website/content/blog/2025-09-19-graphite-community-meetup-in-germany.md
@@ -1,11 +1,13 @@
+++
title = "Graphite community meetup in Germany"
date = 2025-09-19
+authors = ["Keavon Chambers"]
+description = "Join us for a Graphite community meetup on October 10th, 2025 in Karlsruhe, Germany. Meet the core team and connect with fellow enthusiasts."
+
+
[extra]
banner = "https://static.graphite.rs/content/blog/2025-09-19-graphite-community-meetup-in-germany.avif"
banner_png = "https://static.graphite.rs/content/blog/2025-09-19-graphite-community-meetup-in-germany.png"
-author = "Keavon Chambers"
-summary = "Join us for a Graphite community meetup on October 10th, 2025 in Karlsruhe, Germany. Meet the core team and connect with fellow enthusiasts."
reddit = "https://www.reddit.com/r/graphite/comments/1nlt64g/graphite_community_meetup_in_germany_october_10/"
twitter = "https://x.com/GraphiteEditor/status/1969324821205925934"
bluesky = "https://bsky.app/profile/graphiteeditor.bsky.social/post/3lzaz3uizkc2j"
diff --git a/website/templates/article.html b/website/templates/article.html
index 3e1f202c66..ad78a6df26 100644
--- a/website/templates/article.html
+++ b/website/templates/article.html
@@ -5,7 +5,7 @@
{%- set meta_title = page.title -%}
{%- set meta_image = page.extra.banner_png | safe -%}
{%- set meta_article_type = true -%}
-{%- set meta_description = page.extra.summary | default(value = page.content | striptags | safe | linebreaksbr | replace(from = " ", to = " ") | replace(from = " ", to = " ") | trim | truncate(length = 200)) -%}
+{%- set meta_description = page.description | default(value = page.content | striptags | safe | linebreaksbr | replace(from = " ", to = " ") | replace(from = " ", to = " ") | trim | truncate(length = 200)) -%}
{%- set css = ["/template/article.css", "/layout/reading-material.css"] -%}
{%- endblock head -%}
@@ -14,7 +14,12 @@
-{%- if not page.summary -%}
+{%- if not page.description -%}
{{ throw(message = "------------------------------------------------------------> ARTICLE HAS NO SUMMARY! After the first paragraph (or two short ones), a `` comment must be inserted in the markdown. Otherwise the blog page would be missing its preview text." | safe) }}
{%- endif -%}
{%- endblock content -%}
diff --git a/website/templates/blog.html b/website/templates/blog.html
index 4581be356e..a1637cbdf9 100644
--- a/website/templates/blog.html
+++ b/website/templates/blog.html
@@ -19,9 +19,14 @@