Skip to content
Open
10 changes: 10 additions & 0 deletions website/README.md
Original file line number Diff line number Diff line change
@@ -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 <http://localhost:1111/> in your browser and start coding!
4 changes: 2 additions & 2 deletions website/content/blog/2022-02-12-announcing-graphite-alpha.md
Original file line number Diff line number Diff line change
@@ -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"
+++
Expand Down
Original file line number Diff line number Diff line change
@@ -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"
+++
Expand Down
Original file line number Diff line number Diff line change
@@ -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"
+++
Expand Down
Original file line number Diff line number Diff line change
@@ -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"

Expand Down
Original file line number Diff line number Diff line change
@@ -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"
+++
Expand Down
Original file line number Diff line number Diff line change
@@ -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"]
Expand Down
Original file line number Diff line number Diff line change
@@ -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"]
Expand Down
Original file line number Diff line number Diff line change
@@ -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"]
Expand Down
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
Original file line number Diff line number Diff line change
@@ -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"
Expand Down
11 changes: 8 additions & 3 deletions website/templates/article.html
Original file line number Diff line number Diff line change
Expand Up @@ -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 = "<br>", to = " ") | replace(from = " ", to = " ") | trim | truncate(length = 200)) -%}
{%- set meta_description = page.description | default(value = page.content | striptags | safe | linebreaksbr | replace(from = "<br>", to = " ") | replace(from = " ", to = " ") | trim | truncate(length = 200)) -%}
{%- set css = ["/template/article.css", "/layout/reading-material.css"] -%}
{%- endblock head -%}

Expand All @@ -14,7 +14,12 @@
<div class="block">
<div class="details">
<h1 class="headline">{{ page.title }}</h1>
<span class="publication">By {{ page.extra.author }}. {{ page.date | date(format = "%B %d, %Y", timezone="America/Los_Angeles") }}.</span>
<span class="publication">
{% if page.authors %}
By {{ page.authors | join(sep=", ") }}.
{% endif %}
<time datetime="{{ page.date | date(format='%Y-%m-%d') }}"> {{ page.date | date(format="%B %d, %Y", timezone="America/Los_Angeles") }}</time>.
</span>
<img class="banner" src="{{ page.extra.banner | safe }}" onerror="this.onerror = null; this.src = this.src.replace('.avif', '.png')" />
</div>
<article>
Expand Down Expand Up @@ -42,7 +47,7 @@ <h1 class="headline">{{ page.title }}</h1>
{% endif %}
</div>
</section>
{%- if not page.summary -%}
{%- if not page.description -%}
{{ throw(message = "------------------------------------------------------------> ARTICLE HAS NO SUMMARY! After the first paragraph (or two short ones), a `<!-- more -->` comment must be inserted in the markdown. Otherwise the blog page would be missing its preview text." | safe) }}
{%- endif -%}
{%- endblock content -%}
Expand Down
9 changes: 7 additions & 2 deletions website/templates/blog.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,14 @@
<div class="headline">
<h2><a href="{{ page.path | safe }}">{{ page.title }}</a></h2>
</div>
<span class="publication">By {{ page.extra.author }}. {{ page.date | date(format = "%B %d, %Y", timezone = "America/Los_Angeles") }}.</span>
<span class="publication">
{% if page.authors %}
By {{ page.authors | join(sep=", ") }}.
{% endif %}
<time datetime="{{ page.date | date(format='%Y-%m-%d') }}"> {{ page.date | date(format="%B %d, %Y", timezone="America/Los_Angeles") }}</time>.
</span>
<div class="summary">
<p>{{ page.summary | striptags | safe }}</p>
<p>{{ page.description | striptags | safe }}</p>
</div>
<div class="keep-reading">
<a href="{{ page.path | safe }}" class="link arrow">Keep Reading</a>
Expand Down
2 changes: 1 addition & 1 deletion website/templates/book.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
{%- block head -%}{%- set page = page | default(value = section) -%}
{%- set title = page.title -%}
{%- set meta_article_type = true -%}
{%- set meta_description = page.extra.summary | default(value = page.content | striptags | safe | linebreaksbr | replace(from = "<br>", to = " ") | replace(from = " ", to = " ") | trim | truncate(length = 200)) -%}
{%- set meta_description = page.description | default(value = page.content | striptags | safe | linebreaksbr | replace(from = "<br>", to = " ") | replace(from = " ", to = " ") | trim | truncate(length = 200)) -%}
{%- set linked_css = ["/syntax-highlighting.css"] -%}
{%- set css = ["/template/book.css", "/layout/reading-material.css", "/component/code-snippet.css"] -%}
{%- set js = ["/js/book.js"] -%}
Expand Down
2 changes: 1 addition & 1 deletion website/templates/macros/replacements.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<a class="banner" href="{{ article.permalink | safe }}"><img loading="lazy" src="{{ article.extra.banner | safe }}" onerror="this.onerror = null; this.src = this.src.replace('.avif', '.png')" alt="Article cover image" /></a>
<h2 class="headline"><a href="{{ article.permalink | safe }}">{{ article.title }}</a></h2>
<div class="summary">
<p>{{ article.summary | striptags | safe }}</p>
<p>{{ article.description | striptags | safe }}</p>
</div>
<a href="{{ article.permalink | safe }}" class="link arrow">Keep reading</a>
</div>
Expand Down
37 changes: 37 additions & 0 deletions website/templates/rss.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>{{ config.title }} Blog</title>
<link href="{{ config.base_url | safe }}"/>
<updated>{{ now() | date(format="%Y-%m-%dT%H:%M:%S%:z") }}</updated>
<id>{{ config.base_url | safe }}</id>
<subtitle>Latest news and articles from the Graphite team.</subtitle>
<generator>Zola</generator>
<icon>/favicon-32x32.png</icon>
<rights>© 2025 Graphite Labs, LLC</rights>

{% for page in section.pages %}
<entry>
<title>{{ page.title }}</title>
<link href="{{ page.permalink | safe }}"/>
<id>{{ page.permalink | safe }}</id>
<updated>{{ page.updated | default(value=page.date) | date(format="%Y-%m-%dT%H:%M:%S%:z") }}</updated>
<published>{{ page.date | date(format="%Y-%m-%dT%H:%M:%S%:z") }}</published>

{% if page.authors %}
{% for author in page.authors %}
<author>
<name>{{ author }}</name>
</author>
{% endfor %}
{% endif %}

{% if page.description %}
<summary>{{ page.description }}</summary>
{% endif %}

<content type="html"><![CDATA[
{{ page.content | safe }}
]]></content>
</entry>
{% endfor %}
</feed>