Added new content card shortcode to help with creating cards in content.
#### How are donations used?
-The majority of donations cover the living costs of the project creator, Dan Brown, to allow them to focus on the project as much as possible. As of October 2021 Dan left his day-job to focus on the project; relying on savings, family-support and donations to cover living costs. Our [support plans](/support) were also launched to help support finances but, at the time of writing, donations remain as the largest income source.
+The majority of donations cover the living costs of the project creator, Dan Brown, to allow them to focus on the project as much as possible. As of October 2021 Dan left his day-job to focus on the project; relying on savings, family-support and donations to cover living costs. Our [support plans](/support) were also launched to help support finances.
-Some donations are effectively forwarded on to other open source projects, many of which are projects and people that BookStack depends upon itself.
+A portion of donations are effectively forwarded on to other open source projects, many of which are projects and people that BookStack depends upon itself.
+
+If interested, further details of our finances are often reported in our blogposts [as reflected in our 2024 review post here](https://www.bookstackapp.com/blog/bookstack-in-2024/#project-funding).
#### Do I need to donate?
--- /dev/null
+---
+title: "BookStack Links"
+url: "/links"
+layout: "single"
+type: "about"
+---
+
+#### Code
+
+<div class="content-card-grid">
+
+{{<content-card github GitHub "Used to manage the core project" "https://github.com/BookStackApp/BookStack">}}
+
+{{<content-card codeberg CodeBerg "Holds all our other code projects" "https://codeberg.org/bookstack">}}
+
+{{<content-card git Mirror "Simple BookStack-domain code mirror" "https://source.bookstackapp.com/">}}
+
+</div>
+
+#### Social
+
+<div class="content-card-grid">
+
+{{<content-card mastodon Mastodon "Follow updates on the Fediverse" "https://fosstodon.org/@bookstack">}}
+
+{{<content-card discord Discord "Join our community Discord server" "https://discord.gg/ztkBqR2">}}
+
+{{<content-card reddit Reddit "Be part of the BookStack subreddit" "https://www.reddit.com/r/BookStack/">}}
+
+</div>
+
+#### Videos
+
+<div class="content-card-grid">
+
+{{<content-card peertube foss.video "Watch video on our PeerTube channel" "https://foss.video/c/bookstack">}}
+
+{{<content-card youtube YouTube "Watch our updates and guides" "https://www.youtube.com/c/BookStackApp">}}
+
+</div>
+
+#### Website
+
+
+<div class="content-card-grid">
+
+{{<content-card book Documentation "Guidance for managing and using BookStack" "/docs">}}
+
+{{<content-card rss_feed Blog "Get the latest project news from our blog" "/blog">}}
+
+{{<content-card demo Demo "Test BookStack via the demo instance" "https://demo.bookstackapp.com">}}
+
+{{<content-card support Support "See our range of support plans for BookStack" "/support">}}
+
+{{<content-card donate Donate "Provide financial support to the project" "/donate">}}
+
+{{<content-card hacks Hacks "Find BookStack customizations to use" "/hacks">}}
+
+</div>
+
+
+
+<br>
+
+
+<br>
\ No newline at end of file
<svg fill="#FFFFFF" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
- <path d="M0 0h24v24H0z" fill="none"/>
<path d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zm4.24 16L12 15.45 7.77 18l1.12-4.81-3.73-3.23 4.92-.42L12 5l1.92 4.53 4.92.42-3.73 3.23L16.23 18z"/>
</svg>
\ No newline at end of file
--- /dev/null
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-git" viewBox="0 0 16 16">
+ <path d="M15.698 7.287 8.712.302a1.03 1.03 0 0 0-1.457 0l-1.45 1.45 1.84 1.84a1.223 1.223 0 0 1 1.55 1.56l1.773 1.774a1.224 1.224 0 0 1 1.267 2.025 1.226 1.226 0 0 1-2.002-1.334L8.58 5.963v4.353a1.226 1.226 0 1 1-1.008-.036V5.887a1.226 1.226 0 0 1-.666-1.608L5.093 2.465l-4.79 4.79a1.03 1.03 0 0 0 0 1.457l6.986 6.986a1.03 1.03 0 0 0 1.457 0l6.953-6.953a1.03 1.03 0 0 0 0-1.457"/>
+</svg>
\ No newline at end of file
--- /dev/null
+{{ $icon := .Get 0 }}
+{{ $title := .Get 1 }}
+{{ $text := .Get 2 }}
+{{ $uri := .Get 3 }}
+{{ $iconPath := printf "icon/%s.svg" $icon }}
+
+<a href="{{ $uri }}" class="content-card-item">
+<div class="content-card-item-icon" aria-hidden="true">{{ partial $iconPath }}</div>
+<div>
+ <div class="content-card-item-title">{{ $title }}</div>
+ <p>{{ $text }}</p>
+</div>
+</a>
\ No newline at end of file