Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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>