From bbb91f3771bb9744ad69bde226ec7bdffc0dda9f Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Tue, 21 Apr 2026 10:42:55 +0100 Subject: [PATCH 01/37] update for 2026 --- website/src/pages/pricing.mdx | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/website/src/pages/pricing.mdx b/website/src/pages/pricing.mdx index ea55480b..e4e1528e 100644 --- a/website/src/pages/pricing.mdx +++ b/website/src/pages/pricing.mdx @@ -403,7 +403,7 @@ offer ends; saving you a minimum of $1300 over the regular price of $100 /month. - Sponsor's discount + Sponsor’s discount @@ -507,7 +507,10 @@ offer ends; saving you a minimum of $1300 over the regular price of $100 /month. From{" "} - $1,500/mo USD + + $1,500/mo + {" "} + $899/mo USD
@@ -577,7 +580,7 @@ contributions from the community, The Worker Pro preset enhances Graphile Worker with additional features and is located in a sponsors only GitHub repository. -Worker Pro is not open source, but is "source available". The source code +Worker Pro is not open source, but is “source available”. The source code license forbids publishing and redistribution, but is otherwise very flexible, allowing you to make your own modifications for internal usage should you need to. @@ -600,25 +603,25 @@ through our [Discord Server](https://discord.gg/graphile) where anyone can ask and answer questions about Worker and the Graphile suite of tools. Sponsors receive priority support from our maintainers within our Discord Server. -Sponsors on the "Private Advisor" tier or above can enter a complimentary +Sponsors on the “Private Advisor” tier or above can enter a complimentary Development Support contract and receive support through their company -Slack/GitHub organization. Prices start at $1,500 a month, with no minimum term. +Slack/GitHub organization. Prices start at $899 a month, with no minimum term. More information can be found at the [Development Support page](https://graphile.org/support/) or you can [get in touch via email](mailto:team@graphile.org?subject=Enterprise%20enquiry). -### I'm an enterprise user and need X, Y and Z +### I’m an enterprise user and need X, Y and Z Please [get in touch](mailto:team@graphile.org?subject=Enterprise%20enquiry) and -we'll be happy to help! +we’ll be happy to help! ### What is the Worker Pro license? The license forbids publishing and redistribution but otherwise allows you to -make your own modifcations for internal usage: +make your own modifications for internal usage: ``` -Copyright © 2024 Benjie Gillam +Copyright © 2026 Benjie Gillam Use and modification of this software and associated documentation files (the “Software”) is permitted, subject to the following conditions: @@ -636,5 +639,5 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` - Last reviewed: 20th September 2024 + Last reviewed: 21st April 2026 From 94208f5f2be78bd6c8b2fde340178e56b055ee31 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Tue, 21 Apr 2026 10:55:59 +0100 Subject: [PATCH 02/37] Add Pro access guideline --- website/src/pages/pricing.mdx | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/website/src/pages/pricing.mdx b/website/src/pages/pricing.mdx index e4e1528e..ade24cc4 100644 --- a/website/src/pages/pricing.mdx +++ b/website/src/pages/pricing.mdx @@ -567,7 +567,7 @@ offer ends; saving you a minimum of $1300 over the regular price of $100 /month. ### Graphile Worker is OSS under the MIT license -Graphile Worker is sufficient for many peoples needs; it's the only version that +Graphile Worker is sufficient for many peoples needs; it’s the only version that existed for the first 5 years of the project and many people are running it with great success in production. No features in Graphile Worker have been removed or obscured, and it continues to be developed and maintained, supported by @@ -595,6 +595,25 @@ code hosted on GitHub. Worker Pro can be installed using an authenticated `authToken`, see the [Worker Pro documentation](/docs/pro#getting-access) for the full details. +### Repository access policy + +To keep pricing fair and sustainable, access to the Graphile Sponsors repository +is intended for: + +- A limited number of individual users within your organization (e.g. evaluators + or team leads) +- Any necessary service or automation accounts + +As a guideline, access should be limited to those who actively need it and users +should be reasonably attributable to the sponsoring organization. Requests to +add users should be sent with their GitHub usernames and, where the user is not +publicly linked to the sponsoring profile, a brief explanation of their role or +relationship to the sponsor. + +We reserve the right to review and limit access where usage falls outside the +spirit of this model. If you require broader access across a team or +organization, please contact us to discuss options. + ### Does Worker Pro come with direct support? Access to Worker Pro grants access to its repository, where users can file From 13cea15e8cd70e04f27036b61d4dca062e26cee4 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Tue, 8 Jul 2025 16:39:34 +0100 Subject: [PATCH 03/37] initial commit --- website/src/components/Sponsor/index.js | 15 ++++-- .../src/components/Sponsor/styles.module.css | 24 ++++++--- website/src/pages/sponsors.mdx | 48 +++++++++++++----- website/static/img/avatar.svg | 49 +++++++++++++++++++ 4 files changed, 113 insertions(+), 23 deletions(-) create mode 100644 website/static/img/avatar.svg diff --git a/website/src/components/Sponsor/index.js b/website/src/components/Sponsor/index.js index 4efdb635..6058bb74 100644 --- a/website/src/components/Sponsor/index.js +++ b/website/src/components/Sponsor/index.js @@ -3,6 +3,7 @@ import styles from "@site/src/components/Sponsor/styles.module.css"; import clsx from "clsx"; import React, { useContext } from "react"; +import FallbackAvatar from "@site/static/img/avatar.svg"; import { SponsorContext } from "../../contexts/sponsor"; export default function Sponsor({ @@ -15,6 +16,15 @@ export default function Sponsor({ }) { const level = useContext(SponsorContext); const showAvatar = level === "featured" || level === "leaders"; + + function Avatar({ src }) { + return src ? ( + + ) : ( + + ); + } + return (
{showAvatar ? ( - + ) : null} + + + + + + + + + + + + + + + + - + diff --git a/website/static/img/avatar.svg b/website/static/img/avatar.svg new file mode 100644 index 00000000..a467fea3 --- /dev/null +++ b/website/static/img/avatar.svg @@ -0,0 +1,49 @@ + + + + + + + From b82ae1c2a9d6b09d2901cf58b6f293591101ad27 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Tue, 8 Jul 2025 16:51:31 +0100 Subject: [PATCH 04/37] lint fix --- website/src/components/Sponsor/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/src/components/Sponsor/index.js b/website/src/components/Sponsor/index.js index 6058bb74..74772d7f 100644 --- a/website/src/components/Sponsor/index.js +++ b/website/src/components/Sponsor/index.js @@ -1,9 +1,9 @@ import Link from "@docusaurus/Link"; import styles from "@site/src/components/Sponsor/styles.module.css"; +import FallbackAvatar from "@site/static/img/avatar.svg"; import clsx from "clsx"; import React, { useContext } from "react"; -import FallbackAvatar from "@site/static/img/avatar.svg"; import { SponsorContext } from "../../contexts/sponsor"; export default function Sponsor({ From 439730b20bbeff4bc5d184ac1fc2be9f02142ed2 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 9 Jul 2025 16:26:54 +0100 Subject: [PATCH 05/37] Finish initial styling to match crystal websites --- website/src/components/Sponsor/index.js | 17 +++++++---- .../src/components/Sponsor/styles.module.css | 30 +++++++++++++++++-- website/src/pages/sponsors.mdx | 7 +++-- 3 files changed, 42 insertions(+), 12 deletions(-) diff --git a/website/src/components/Sponsor/index.js b/website/src/components/Sponsor/index.js index 74772d7f..3103e5fe 100644 --- a/website/src/components/Sponsor/index.js +++ b/website/src/components/Sponsor/index.js @@ -25,6 +25,16 @@ export default function Sponsor({ ); } + function LinkTo({ href }) { + return href ? ( + + {name} + + ) : ( +
{name}
+ ); + } + return (
) : null} - - {name} - +
); } diff --git a/website/src/components/Sponsor/styles.module.css b/website/src/components/Sponsor/styles.module.css index 9ce3779f..19f98ae9 100644 --- a/website/src/components/Sponsor/styles.module.css +++ b/website/src/components/Sponsor/styles.module.css @@ -7,7 +7,11 @@ margin: 0.5rem; padding: 1rem; flex: 0 0 18rem; - font-size: 1.5rem; + font-size: 1.2rem; +} + +.leaders { + flex: 0 0 12rem; } .featured, @@ -23,8 +27,8 @@ } .leaders .name { - font-size: 1.24rem; - padding-top: 1rem; + font-size: 1.2rem; + padding-top: 0.8rem; } .name { color: var(--ifm-color-primary-darker); @@ -70,3 +74,23 @@ border-radius: inherit; border: inherit; } + +.backers:last-child { + display: none; +} + +.backers:first-child { + display: flex; +} + +@media screen and (max-width: 995px) { + .leaders { + display: none; + } + .backers:first-child { + display: none; + } + .backers:last-child { + display: flex; + } +} diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index f6226e8d..48a9e5aa 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -31,12 +31,12 @@ to fund ongoing development on Graphile Worker through sponsorship. THANK YOU! + - - + - + + From 338ddbbba89fa6d4de117aca22814282031bc5e3 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 23 Jul 2025 13:57:58 +0100 Subject: [PATCH 06/37] Migrate over tier components --- website/src/components/Tiers/index.js | 152 +++++++++++++++++ .../src/components/Tiers/styles.module.css | 121 +++++++++++++ website/src/components/TiersPlus/index.js | 122 ++++++++++++++ .../components/TiersPlus/styles.module.css | 159 ++++++++++++++++++ website/src/pages/sponsors.mdx | 29 ++++ 5 files changed, 583 insertions(+) create mode 100644 website/src/components/Tiers/index.js create mode 100644 website/src/components/Tiers/styles.module.css create mode 100644 website/src/components/TiersPlus/index.js create mode 100644 website/src/components/TiersPlus/styles.module.css diff --git a/website/src/components/Tiers/index.js b/website/src/components/Tiers/index.js new file mode 100644 index 00000000..083bdebb --- /dev/null +++ b/website/src/components/Tiers/index.js @@ -0,0 +1,152 @@ +import Link from "@docusaurus/Link"; +import styles from "@site/src/components/Tiers/styles.module.css"; +import clsx from "clsx"; +import React from "react"; + +const TierList = [ + { + title: "Supporter", + tagline: "Thank you!", + pricing: "$25", + link: "https://github.com/sponsors/benjie/sponsorships?tier_id=369", + buttonText: "", + description: ( + <> +
    +
  • + Your name on the{" "} + + Graphile Sponsors page + {" "} +
  • +
  • + Your name among those randomly featured in the PostGraphile CLI +
  • +
  • Post job opportunities to our Discord community
  • +
  • PostGraphile stickers
  • +
  • Access to the #supporter-lounge on Discord
  • +
  • + The warm feeling from knowing you’re supporting Open Source Software +
  • +
+ + ), + }, + { + title: "Production Sponsor", + tagline: "Support sustainability", + pricing: "$100", + link: "https://github.com/sponsors/benjie/sponsorships?tier_id=368", + buttonText: "", + description: ( + <> +
    +
  • The Supporter tier benefits and...
  • +
  • + Access to private security announcements +
  • +
  • + Free access to PostGraphile V4 Pro +
  • +
  • + Access to{" "} + + graphile-pro + +
  • +
  • + Your name and avatar/logo featured on our websites, + including this one +
  • +
  • + Your name more frequently featured in the + PostGraphile CLI +
  • +
  • + The warm feeling that comes from knowing you’re making a difference + to PostGraphile’s development and sustainability +
  • +
+ + ), + }, + { + title: "Featured Sponsor", + tagline: "Get featured in the project", + pricing: "$500", + link: "https://github.com/sponsors/benjie/sponsorships?tier_id=367", + buttonText: "", + description: ( + <> +
    +
  • The Production tier benefits and...
  • +
  • + Your name and avatar/logo{" "} + + featured in the READMEs of Graphile’s main OSS projects + {" "} + (shown on GitHub and npm) +
  • +
  • + Your name and avatar/logo prominently featured on + our websites +
  • +
  • + Your name even more frequently featured in the + PostGraphile CLI +
  • +
  • + Access to #vip-lounge on Discord +
  • +
  • + Free access to{" "} + + pgRITA + +
  • +
  • + The warm feeling that comes from knowing{" "} + + you’re making a significant difference to PostGraphile’s + development and sustainability + +
  • +
+ + ), + }, +]; + +function Tier({ title, tagline, link, buttonText, description, pricing }) { + return ( +
+

{title}

+

+ {pricing}  + /month +

+ + {buttonText} + +

{tagline}

+

{description}

+
+ ); +} + +export default function List() { + return ( +
+
+
+ {TierList.map((props, idx) => ( + + ))} +
+
+
+ ); +} diff --git a/website/src/components/Tiers/styles.module.css b/website/src/components/Tiers/styles.module.css new file mode 100644 index 00000000..327a832a --- /dev/null +++ b/website/src/components/Tiers/styles.module.css @@ -0,0 +1,121 @@ +.tiers { + display: flex; + width: 100%; + flex-direction: row; +} + +.tierRow { + justify-content: center; + gap: 2rem; + display: flex; +} + +.tier { + display: flex; + flex-direction: column; + flex: 0 0 30%; + justify-content: flex-start; + align-items: flex-start; + font-weight: normal; + font-size: 0.9rem; + margin: 0.5rem; + padding: 1rem; + border: 2px solid var(--ifm-color-primary-darker); + border-radius: 12px; +} + +.tier:nth-child(2) { + border: 3px solid var(--ifm-color-primary); +} + +[data-theme="dark"] .tier { + border: 3px solid var(--ifm-color-primary-light); +} + +[data-theme="dark"] .tier:nth-child(2) { + border: 3px solid var(--ifm-color-primary); +} + +.title, +.note { + color: var(--ifm-color-primary-darker); +} + +[data-theme="dark"] .title, +[data-theme="dark"] .note { + color: var(--ifm-color-primary-lighter); +} + +.tagline { + font-weight: var(--ifm-heading-font-weight); +} + +.price { + font-weight: bold; +} + +.note { + font-size: 0.8rem; + font-weight: var(--ifm-font-weight-base); +} + +.tier:nth-child(2) .title, +.tier:nth-child(2) .note { + color: var(--ifm-color-primary); +} + +[data-theme="dark"] .tier:nth-child(2) .title, +[data-theme="dark"] .tier:nth-child(2) .note { + color: var(--ifm-color-primary); +} + +.button { + width: 100%; + margin: 1rem 0 1rem 0; + background-color: var(--ifm-color-primary-darker); + border-color: var(--ifm-color-primary-darker); +} + +.button:before { + content: "Join on GitHub Sponsors"; +} + +.tier:nth-child(2) .button { + background-color: var(--ifm-color-primary); + border-color: var(--ifm-color-primary); +} + +.tier .button:hover { + background-color: var(--ifm-color-primary-darkest); + border-color: var(--ifm-color-primary-darkest); +} + +[data-theme="dark"] .button { + background-color: var(--ifm-color-primary-light); + border-color: var(--ifm-color-primary-light); +} + +[data-theme="dark"] .tier:nth-child(2) .button { + background-color: var(--ifm-color-primary); + border-color: var(--ifm-color-primary); +} + +[data-theme="dark"] .tier .button:hover { + background-color: var(--ifm-color-primary-lightest); + border-color: var(--ifm-color-primary-lightest); +} + +@media screen and (max-width: 1200px) { + .tierRow { + flex-direction: column; + gap: 0.5rem; + } + .tier { + flex: 0 0 auto; + font-size: 1rem; + margin: 0; + } + .button:before { + content: "GitHub Sponsors"; + } +} diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js new file mode 100644 index 00000000..1966bc1d --- /dev/null +++ b/website/src/components/TiersPlus/index.js @@ -0,0 +1,122 @@ +import Link from "@docusaurus/Link"; +import styles from "@site/src/components/TiersPlus/styles.module.css"; +import clsx from "clsx"; +import React from "react"; + +const TierList = [ + { + title: "Private Advisor Offer", + tagline: "Development support in your chat server & code repository", + pricing: "$999", + annual: "$9,999", + was: "$1,500", + link: "https://github.com/sponsors/benjie/sponsorships?tier_id=42012", + buttonText: "", + contact: "mailto:team@graphile.com?subject=Private%20Advisor%20enquiry", + contactText: "", + description: ( + <> +
+ Access development support for Graphile projects through the Private + Advisor tier, giving your organization access to the knowledge and + experience of the Graphile team for any issues you have with{" "} + PostGraphile, Grafast and the wider Graphile suite, and other tools in + the ecosystem such as TypeScript, SQL, Node.js, GraphQL and more. If + you’re running any of the Graphile tools, you won’t find anyone more + qualified to help. +
+
    +
  • All the benefits of a Featured Sponsor and...
  • +
  • One-to-one access to the Graphile team throughout the year
  • +
  • + Priority support straight from the maintainer +
  • +
  • + Add the Graphile team to your chat server for timely responses +
  • +
  • Add the Graphile team to your GitHub/GitLab organization
  • +
  • Reference your code verbatim
  • +
  • Calls arranged as required
  • +
  • NDA available
  • +
  • + Access to discounted consultancy packages +
  • +
  • + The warm feeling that comes from knowing{" "} + + you’re making a significant difference to PostGraphile’s + development and sustainability + +
  • +
+ + ), + }, +]; + +function Tier({ + title, + tagline, + link, + buttonText, + description, + pricing, + annual, + was, + contact, + contactText, +}) { + return ( +
+
+
+

{title}

+

+ {was}{" "} + {pricing}  + /month +

+

+ + or {annual} /year - + annual discount applied + +

+
+
+ + {buttonText} + + + {contactText} + +
+
+

{tagline}

+

{description}

+
+ ); +} + +export default function List() { + return ( +
+
+
+ {TierList.map((props, idx) => ( + + ))} +
+
+
+ ); +} diff --git a/website/src/components/TiersPlus/styles.module.css b/website/src/components/TiersPlus/styles.module.css new file mode 100644 index 00000000..15bad4c9 --- /dev/null +++ b/website/src/components/TiersPlus/styles.module.css @@ -0,0 +1,159 @@ +.tiers { + display: flex; + width: 100%; + flex-direction: column; +} + +.tierRow { + justify-content: center; + gap: 2rem; + display: flex; + flex-direction: column; +} + +.tier { + display: flex; + flex-direction: column; + flex: 0 0 75%; + justify-content: flex-start; + align-items: flex-start; + font-weight: normal; + font-size: 0.9rem; + margin: 0.5rem; + padding: 1rem; + border: 2px solid var(--ifm-color-primary-darker); + border-radius: 12px; +} + +[data-theme="dark"] .tier { + border: 2px solid var(--ifm-color-primary); +} + +.banner { + display: flex; + width: 100%; + flex: 0 0 33%; + justify-content: space-between; +} + +.info { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: flex-start; +} + +.title { + color: var(--ifm-color-primary-darker); +} + +.note { + font-size: 0.8rem; + color: var(--ifm-color-primary-darker); + font-weight: var(--ifm-font-weight-base); +} + +[data-theme="dark"] .title, +[data-theme="dark"] .note { + color: var(--ifm-color-primary); +} + +.tagline { + font-weight: var(--ifm-heading-font-weight); +} + +.price { + font-weight: bold; +} + +.was { + color: var(--ifm-color-gray-400); + text-decoration: line-through; +} + +[data-theme="dark"] .was { + color: var(--ifm-color-gray-700); +} + +.description { + font-size: 1rem; + padding: 0.5rem 0 0.5rem 0; +} + +.button { + width: 100%; + margin: 0 0 1rem 0; +} + +.tier .button { + background-color: var(--ifm-color-primary-darker); + border-color: var(--ifm-color-primary-darker); +} + +.tier .button:hover { + background-color: var(--ifm-color-primary-darkest); + border-color: var(--ifm-color-primary-darkest); +} + +[data-theme="dark"] .tier .button { + background-color: var(--ifm-color-primary); + border-color: var(--ifm-color-primary); +} + +[data-theme="dark"] .tier .button:hover { + border: 1px solid var(--ifm-color-primary-lightest); + background-color: var(--ifm-color-primary-lightest); +} + +.borderbutton { + composes: button; +} + +.tier:nth-child(n) .borderbutton { + background-color: transparent; + border: 1px solid var(--ifm-color-primary-darker); + color: var(--ifm-color-primary-darker); +} + +.tier:nth-child(n) .borderbutton:hover { + border: 1px solid var(--ifm-color-primary-darkest); + color: var(--ifm-color-primary-darkest); +} + +[data-theme="dark"] .tier:nth-child(n) .borderbutton { + border: 1px solid var(--ifm-color-primary-lightest); + color: var(--ifm-color-primary-lightest); +} + +[data-theme="dark"] .tier:nth-child(n) .borderbutton:hover { + border: 1px solid var(--ifm-color-primary); + color: var(--ifm-color-primary); + background-color: transparent; +} + +.button:before { + content: "Join on GitHub Sponsors"; +} + +.borderbutton:before { + content: "Contact for bespoke service"; +} + +@media screen and (max-width: 1200px) { + .tierRow { + flex-direction: column; + } + .tier { + font-size: 1rem; + margin: 0; + } + .banner { + flex-direction: column; + } + .button:before { + content: "GitHub Sponsors"; + } + .borderbutton:before { + content: "Contact"; + } +} diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index 48a9e5aa..5df81721 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -7,6 +7,8 @@ import Sponsor from "@site/src/components/Sponsor"; import Sponsors from "@site/src/components/Sponsors"; import SponsorButtons from "@site/src/components/SponsorButtons"; import Link from "@docusaurus/Link"; +import TierList from "@site/src/components/Tiers"; +import TierPlusList from "@site/src/components/TiersPlus"; ## Sponsor Graphile’s Open Source Software @@ -83,3 +85,30 @@ the rate of fixes, documentation improvements, and feature development on these and other projects. + +## Why are Graphile projects “crowd-funded open-source”? + +Many of our projects are open-source to give users great freedom in how they use +the software, and to enable the community to have influence over how the +projects progress to make it appropriate for a wide range of use-cases. To +ensure users can rely on these projects for years to come, they need to be well +directed and financially sustainable. + +**The best way to ensure that Graphile software is something you can depend on +for years to come is through monthly sponsorship.** Crowd-sourced funding +enables us to spend the most time directly working on improving the software, +which you and other users then benefit from. + +## Sponsor tiers & benefits + +As well as ensuring the sustainability and longevity of PostGraphile and the +wider Graphile suite of developer tooling, sponsorship also gives you or your +company some additional benefits such as access to security announcements and +being featured in the README files Graphile’s main open source projects. Choose +the tier which matches your funding goal, higher tiers come with more benefits. + + + +## Development Support + + From 4300bacecfaafd53440cf5fe4e9fd732d62052c5 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 23 Jul 2025 15:40:05 +0100 Subject: [PATCH 07/37] Tweak wording for Worker --- website/src/components/Tiers/index.js | 22 +++++++--------------- website/src/components/TiersPlus/index.js | 6 +++--- website/src/pages/sponsors.mdx | 7 ++++--- 3 files changed, 14 insertions(+), 21 deletions(-) diff --git a/website/src/components/Tiers/index.js b/website/src/components/Tiers/index.js index 083bdebb..dd6c1ec8 100644 --- a/website/src/components/Tiers/index.js +++ b/website/src/components/Tiers/index.js @@ -19,11 +19,8 @@ const TierList = [ Graphile Sponsors page {" "} -
  • - Your name among those randomly featured in the PostGraphile CLI -
  • Post job opportunities to our Discord community
  • -
  • PostGraphile stickers
  • +
  • Graphile Worker stickers
  • Access to the #supporter-lounge on Discord
  • The warm feeling from knowing you’re supporting Open Source Software @@ -46,7 +43,10 @@ const TierList = [ Access to private security announcements
  • - Free access to PostGraphile V4 Pro + Free access to{" "} + + Worker Pro +
  • Access to{" "} @@ -58,13 +58,9 @@ const TierList = [ Your name and avatar/logo featured on our websites, including this one
  • -
  • - Your name more frequently featured in the - PostGraphile CLI -
  • The warm feeling that comes from knowing you’re making a difference - to PostGraphile’s development and sustainability + to Graphile Worker’s development and sustainability
  • @@ -91,10 +87,6 @@ const TierList = [ Your name and avatar/logo prominently featured on our websites -
  • - Your name even more frequently featured in the - PostGraphile CLI -
  • Access to #vip-lounge on Discord
  • @@ -107,7 +99,7 @@ const TierList = [
  • The warm feeling that comes from knowing{" "} - you’re making a significant difference to PostGraphile’s + you’re making a significant difference to Graphile Worker’s development and sustainability
  • diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index 1966bc1d..efaab1f3 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -19,8 +19,8 @@ const TierList = [
    Access development support for Graphile projects through the Private Advisor tier, giving your organization access to the knowledge and - experience of the Graphile team for any issues you have with{" "} - PostGraphile, Grafast and the wider Graphile suite, and other tools in + experience of the Graphile team for any issues you have with Graphile + Worker, PostGraphile and the wider Graphile suite, and other tools in the ecosystem such as TypeScript, SQL, Node.js, GraphQL and more. If you’re running any of the Graphile tools, you won’t find anyone more qualified to help. @@ -44,7 +44,7 @@ const TierList = [
  • The warm feeling that comes from knowing{" "} - you’re making a significant difference to PostGraphile’s + you’re making a significant difference to Graphile Worker’s development and sustainability
  • diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index 5df81721..35b25e88 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -101,11 +101,12 @@ which you and other users then benefit from. ## Sponsor tiers & benefits -As well as ensuring the sustainability and longevity of PostGraphile and the +As well as ensuring the sustainability and longevity of Graphile Worker and the wider Graphile suite of developer tooling, sponsorship also gives you or your company some additional benefits such as access to security announcements and -being featured in the README files Graphile’s main open source projects. Choose -the tier which matches your funding goal, higher tiers come with more benefits. +being featured in the README files of Graphile’s main open source projects. +Choose the tier which matches your funding goal, higher tiers come with more +benefits. From 38aaf35d7a3cf77c4478c2ed5ae00fc668daf70d Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Thu, 24 Jul 2025 11:12:55 +0100 Subject: [PATCH 08/37] Update pricing --- website/src/pages/pricing.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/website/src/pages/pricing.mdx b/website/src/pages/pricing.mdx index ade24cc4..f12107df 100644 --- a/website/src/pages/pricing.mdx +++ b/website/src/pages/pricing.mdx @@ -658,5 +658,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` +<<<<<<< HEAD Last reviewed: 21st April 2026 +======= + Last reviewed: July 2025 +>>>>>>> Update pricing From 2a215803c6590753d5aa4974b0f38e128266d4fe Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Thu, 24 Jul 2025 11:21:49 +0100 Subject: [PATCH 09/37] Update pricing --- website/src/pages/pricing.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/src/pages/pricing.mdx b/website/src/pages/pricing.mdx index f12107df..f41f3d85 100644 --- a/website/src/pages/pricing.mdx +++ b/website/src/pages/pricing.mdx @@ -85,7 +85,7 @@ offer ends; saving you a minimum of $1300 over the regular price of $100 /month. Small businesses Small and medium businesses - Enterprises + Access development support From e0238685f145ae774099cf20329947237e537d3d Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Tue, 29 Jul 2025 16:55:23 +0100 Subject: [PATCH 10/37] Begin annual plan tier --- website/src/components/TiersPlus/index.js | 91 +++++++++++-------- .../components/TiersPlus/styles.module.css | 62 +++++-------- website/src/pages/sponsors.mdx | 7 ++ 3 files changed, 86 insertions(+), 74 deletions(-) diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index efaab1f3..80fe5fbc 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -5,26 +5,56 @@ import React from "react"; const TierList = [ { - title: "Private Advisor Offer", - tagline: "Development support in your chat server & code repository", + title: "Monthly Plan", + tagline: "Pay month-to-month with full flexibility", pricing: "$999", - annual: "$9,999", was: "$1,500", link: "https://github.com/sponsors/benjie/sponsorships?tier_id=42012", buttonText: "", - contact: "mailto:team@graphile.com?subject=Private%20Advisor%20enquiry", - contactText: "", + frequency: "per month", + comparison: "", + description: ( + <> +
      +
    • All the benefits of a Featured Sponsor and...
    • +
    • One-to-one access to the Graphile team throughout the year
    • +
    • + Priority support straight from the maintainer +
    • +
    • + Add the Graphile team to your chat server for timely responses +
    • +
    • Add the Graphile team to your GitHub/GitLab organization
    • +
    • Reference your code verbatim
    • +
    • Calls arranged as required
    • +
    • NDA available
    • +
    • + Access to discounted consultancy packages +
    • +
    • + The warm feeling that comes from knowing{" "} + + you’re making a significant difference to Graphile Worker’s + development and sustainability + +
    • +
    + + ), + }, + { + title: "Annual Plan", + tagline: "Maximum savings with full year commitment", + pricing: "$9,999", + was: "$11,988", + link: "mailto:team@graphile.com?subject=Private%20Advisor%20enquiry", + buttonText: "", + frequency: "per year", + comparison: "That's just $833.25/month", + badge: "Best Value - Save $1,999 ", + featured: true, description: ( <> -
    - Access development support for Graphile projects through the Private - Advisor tier, giving your organization access to the knowledge and - experience of the Graphile team for any issues you have with Graphile - Worker, PostGraphile and the wider Graphile suite, and other tools in - the ecosystem such as TypeScript, SQL, Node.js, GraphQL and more. If - you’re running any of the Graphile tools, you won’t find anyone more - qualified to help. -
    • All the benefits of a Featured Sponsor and...
    • One-to-one access to the Graphile team throughout the year
    • @@ -61,27 +91,26 @@ function Tier({ buttonText, description, pricing, - annual, was, - contact, - contactText, + frequency, + comparison, + badge, + featured, }) { return ( -
      +
      + {badge ?
      {badge}
      : null}

      {title}

      +

      {tagline}

      - {was}{" "} + {was} +
      {pricing}  - /month + {frequency} + {comparison}

      -

      - - or {annual} /year - - annual discount applied - -

      {buttonText} - - {contactText} -
      -

      {tagline}

      {description}

      ); diff --git a/website/src/components/TiersPlus/styles.module.css b/website/src/components/TiersPlus/styles.module.css index 15bad4c9..4ab2b5cd 100644 --- a/website/src/components/TiersPlus/styles.module.css +++ b/website/src/components/TiersPlus/styles.module.css @@ -1,20 +1,20 @@ .tiers { display: flex; width: 100%; - flex-direction: column; + flex-direction: row; } .tierRow { justify-content: center; gap: 2rem; display: flex; - flex-direction: column; } .tier { + position: relative; display: flex; flex-direction: column; - flex: 0 0 75%; + flex: 0 0 33%; justify-content: flex-start; align-items: flex-start; font-weight: normal; @@ -23,6 +23,25 @@ padding: 1rem; border: 2px solid var(--ifm-color-primary-darker); border-radius: 12px; + &.featured { + background-color: #fff4ec; + border: 3px solid var(--ifm-color-primary); + } +} + +.badge { + position: absolute; + left: 50%; + top: 0%; + transform: translate(-50%, -50%); + background-color: white; + border-radius: calc(infinity * 1px); + padding: 0.4rem; + .featured & { + background-color: var(--ifm-color-primary); + color: white; + font-weight: bold; + } } [data-theme="dark"] .tier { @@ -32,8 +51,8 @@ .banner { display: flex; width: 100%; - flex: 0 0 33%; justify-content: space-between; + flex-direction: column; } .info { @@ -105,38 +124,8 @@ background-color: var(--ifm-color-primary-lightest); } -.borderbutton { - composes: button; -} - -.tier:nth-child(n) .borderbutton { - background-color: transparent; - border: 1px solid var(--ifm-color-primary-darker); - color: var(--ifm-color-primary-darker); -} - -.tier:nth-child(n) .borderbutton:hover { - border: 1px solid var(--ifm-color-primary-darkest); - color: var(--ifm-color-primary-darkest); -} - -[data-theme="dark"] .tier:nth-child(n) .borderbutton { - border: 1px solid var(--ifm-color-primary-lightest); - color: var(--ifm-color-primary-lightest); -} - -[data-theme="dark"] .tier:nth-child(n) .borderbutton:hover { - border: 1px solid var(--ifm-color-primary); - color: var(--ifm-color-primary); - background-color: transparent; -} - .button:before { - content: "Join on GitHub Sponsors"; -} - -.borderbutton:before { - content: "Contact for bespoke service"; + content: "Start Plan"; } @media screen and (max-width: 1200px) { @@ -153,7 +142,4 @@ .button:before { content: "GitHub Sponsors"; } - .borderbutton:before { - content: "Contact"; - } } diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index 35b25e88..faf31ae4 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -112,4 +112,11 @@ benefits. ## Development Support +Access development support for Graphile projects through the Private Advisor +tier, giving your organization access to the knowledge and experience of the +Graphile team for any issues you have with Graphile Worker, PostGraphile and the +wider Graphile suite, and other tools in the ecosystem such as TypeScript, SQL, +Node.js, GraphQL and more. If you’re running any of the Graphile tools, you +won’t find anyone more qualified to help. + From fa647eea7194fe5ce38bdbda5ccf50429f2c8e4a Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 30 Jul 2025 17:57:10 +0100 Subject: [PATCH 11/37] Update TiersPlus to include annual plan --- website/src/components/TiersPlus/index.js | 80 +++++++++--------- .../components/TiersPlus/styles.module.css | 81 +++++++++++++++---- website/src/pages/sponsors.mdx | 23 ++++++ 3 files changed, 129 insertions(+), 55 deletions(-) diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index 80fe5fbc..f5b9801e 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -11,32 +11,28 @@ const TierList = [ was: "$1,500", link: "https://github.com/sponsors/benjie/sponsorships?tier_id=42012", buttonText: "", - frequency: "per month", - comparison: "", + frequency: "/mo", + comparison: "Cancel any time", + badge: "Updated August 2025", description: ( <>
        -
      • All the benefits of a Featured Sponsor and...
      • -
      • One-to-one access to the Graphile team throughout the year
      • - Priority support straight from the maintainer + Start today with payment through GitHub
      • - Add the Graphile team to your chat server for timely responses + Flexible +
      • +
      • New lower price for 2025
      • +
      • + Predictable monthly cost with no surprises
      • -
      • Add the Graphile team to your GitHub/GitLab organization
      • -
      • Reference your code verbatim
      • -
      • Calls arranged as required
      • -
      • NDA available
      • Access to discounted consultancy packages
      • - The warm feeling that comes from knowing{" "} - - you’re making a significant difference to Graphile Worker’s - development and sustainability - + Includes a formal contract for your procurement + process
      @@ -45,38 +41,35 @@ const TierList = [ { title: "Annual Plan", tagline: "Maximum savings with full year commitment", - pricing: "$9,999", - was: "$11,988", + pricing: "$899", + hint: "10% discount", + //was: "$11,988", link: "mailto:team@graphile.com?subject=Private%20Advisor%20enquiry", buttonText: "", - frequency: "per year", - comparison: "That's just $833.25/month", - badge: "Best Value - Save $1,999 ", + frequency: "/mo", + comparison: "Paid annually — $10,788/yr", + badge: "Best Value — Save $1,999", featured: true, description: ( <>
        -
      • All the benefits of a Featured Sponsor and...
      • -
      • One-to-one access to the Graphile team throughout the year
      • - Priority support straight from the maintainer + Lock in your rate for a full year +
      • + +
      • + Save money — pay once, enjoy the lowest rate
      • - Add the Graphile team to your chat server for timely responses + One invoice, one payment — no monthly admin + headaches
      • -
      • Add the Graphile team to your GitHub/GitLab organization
      • -
      • Reference your code verbatim
      • -
      • Calls arranged as required
      • -
      • NDA available
      • Access to discounted consultancy packages
      • - The warm feeling that comes from knowing{" "} - - you’re making a significant difference to Graphile Worker’s - development and sustainability - + Includes a formal contract for your procurement + process
      @@ -96,6 +89,7 @@ function Tier({ comparison, badge, featured, + hint, }) { return (
      @@ -103,14 +97,18 @@ function Tier({

      {title}

      -

      {tagline}

      -

      - {was} -
      - {pricing}  - {frequency} +
      {tagline}
      +
      + {was ? {was} : null}{" "} + + {pricing} + {frequency} + + {hint ? {hint} : null} +
      +
      {comparison} -

      +
      -

      {description}

      +
      {description}
      ); } diff --git a/website/src/components/TiersPlus/styles.module.css b/website/src/components/TiersPlus/styles.module.css index 4ab2b5cd..a9d6fdcb 100644 --- a/website/src/components/TiersPlus/styles.module.css +++ b/website/src/components/TiersPlus/styles.module.css @@ -1,7 +1,6 @@ .tiers { display: flex; - width: 100%; - flex-direction: row; + flex-direction: column; } .tierRow { @@ -14,7 +13,7 @@ position: relative; display: flex; flex-direction: column; - flex: 0 0 33%; + flex: 0 0 40%; justify-content: flex-start; align-items: flex-start; font-weight: normal; @@ -24,23 +23,37 @@ border: 2px solid var(--ifm-color-primary-darker); border-radius: 12px; &.featured { - background-color: #fff4ec; + background-color: #fff9f5; border: 3px solid var(--ifm-color-primary); } } +.hint { + background: rgb(230, 246, 230); + color: rgb(0, 49, 0); + padding: 0 0.8rem 0.1rem; + font-size: 0.8rem; + border-radius: calc(infinity * 1px); + margin-left: 1rem; + height: 1.5rem; +} + .badge { - position: absolute; + /* position: absolute; left: 50%; top: 0%; - transform: translate(-50%, -50%); + transform: translate(-50%, -50%); */ + margin: -1.8rem 0 0; background-color: white; border-radius: calc(infinity * 1px); - padding: 0.4rem; + border: 1px solid var(--ifm-color-primary-darker); + padding: 0rem 0.8rem 0.1rem; .featured & { background-color: var(--ifm-color-primary); + border: 1px solid var(--ifm-color-primary); color: white; font-weight: bold; + margin: -1.8rem auto 0; } } @@ -53,23 +66,35 @@ width: 100%; justify-content: space-between; flex-direction: column; + margin-top: 0.2rem; } .info { display: flex; flex-direction: column; justify-content: flex-start; - align-items: flex-start; + align-items: center; + > * { + text-align: center; + } } .title { color: var(--ifm-color-primary-darker); + font-size: 2rem; + font-weight: bold; + .featured & { + color: var(--ifm-color-primary); + } } .note { - font-size: 0.8rem; + font-size: 0.9rem; color: var(--ifm-color-primary-darker); font-weight: var(--ifm-font-weight-base); + .featured & { + color: var(--ifm-color-primary); + } } [data-theme="dark"] .title, @@ -78,16 +103,34 @@ } .tagline { + text-align: center; + font-size: 1rem; +} + +.priceline { font-weight: var(--ifm-heading-font-weight); + text-align: center; + font-size: 2rem; + display: flex; + align-items: center; } .price { font-weight: bold; } +.pricesub { + font-size: 1rem; + color: var(--ifm-color-primary-darker); + .featured & { + color: var(--ifm-color-primary); + } +} + .was { color: var(--ifm-color-gray-400); text-decoration: line-through; + margin-right: 1rem; } [data-theme="dark"] .was { @@ -99,27 +142,37 @@ padding: 0.5rem 0 0.5rem 0; } +.description li::marker { + font-size: 20px; + color: var(--ifm-color-primary-darker); + content: "✓ "; +} + .button { width: 100%; - margin: 0 0 1rem 0; + margin: 1rem 0 0 0; } -.tier .button { +.button { background-color: var(--ifm-color-primary-darker); border-color: var(--ifm-color-primary-darker); + .featured & { + background-color: var(--ifm-color-primary); + border-color: var(--ifm-color-primary); + } } -.tier .button:hover { +.button:hover { background-color: var(--ifm-color-primary-darkest); border-color: var(--ifm-color-primary-darkest); } -[data-theme="dark"] .tier .button { +[data-theme="dark"] .button { background-color: var(--ifm-color-primary); border-color: var(--ifm-color-primary); } -[data-theme="dark"] .tier .button:hover { +[data-theme="dark"] .button:hover { border: 1px solid var(--ifm-color-primary-lightest); background-color: var(--ifm-color-primary-lightest); } diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index faf31ae4..b8c1a990 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -119,4 +119,27 @@ wider Graphile suite, and other tools in the ecosystem such as TypeScript, SQL, Node.js, GraphQL and more. If you’re running any of the Graphile tools, you won’t find anyone more qualified to help. +
        +
      • All the benefits of a Featured Sponsor and...
      • +
      • One-to-one access to the Graphile team throughout the year
      • +
      • + Priority support straight from the maintainer +
      • +
      • Add the Graphile team to your chat server for timely responses
      • +
      • Add the Graphile team to your GitHub/GitLab organization
      • +
      • Reference your code verbatim
      • +
      • Calls arranged as required
      • +
      • NDA available
      • +
      • + Access to discounted consultancy packages +
      • +
      • + The warm feeling that comes from knowing{" "} + + you’re making a significant difference to Graphile Worker’s development + and sustainability + +
      • +
      + From b023dbedac91e69f139919c20ca9d0328eb90018 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 30 Jul 2025 18:07:14 +0100 Subject: [PATCH 12/37] copy tweak --- website/src/components/TiersPlus/index.js | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index f5b9801e..f7cfaf11 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -24,16 +24,9 @@ const TierList = [ Flexible
    • New lower price for 2025
    • -
    • - Predictable monthly cost with no surprises -
    • Access to discounted consultancy packages
    • -
    • - Includes a formal contract for your procurement - process -
    ), @@ -48,7 +41,7 @@ const TierList = [ buttonText: "", frequency: "/mo", comparison: "Paid annually — $10,788/yr", - badge: "Best Value — Save $1,999", + badge: "Best Value — Save $1,200", featured: true, description: ( <> @@ -68,8 +61,7 @@ const TierList = [ Access to discounted consultancy packages
  • - Includes a formal contract for your procurement - process + Formal contract for your procurement process
  • From 578eb8f1690a2c72d8b2275ddd7eabb2050a3438 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Thu, 31 Jul 2025 11:17:33 +0100 Subject: [PATCH 13/37] Tweak syles on TiersPlus --- website/src/components/Tiers/styles.module.css | 1 + website/src/components/TiersPlus/index.js | 6 +++--- website/src/components/TiersPlus/styles.module.css | 7 ------- website/src/pages/sponsors.mdx | 11 ++++------- 4 files changed, 8 insertions(+), 17 deletions(-) diff --git a/website/src/components/Tiers/styles.module.css b/website/src/components/Tiers/styles.module.css index 327a832a..453de46b 100644 --- a/website/src/components/Tiers/styles.module.css +++ b/website/src/components/Tiers/styles.module.css @@ -2,6 +2,7 @@ display: flex; width: 100%; flex-direction: row; + padding-bottom: 1rem; } .tierRow { diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index f7cfaf11..3c2cd331 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -10,7 +10,7 @@ const TierList = [ pricing: "$999", was: "$1,500", link: "https://github.com/sponsors/benjie/sponsorships?tier_id=42012", - buttonText: "", + buttonText: "Start Monthly Plan", frequency: "/mo", comparison: "Cancel any time", badge: "Updated August 2025", @@ -38,7 +38,7 @@ const TierList = [ hint: "10% discount", //was: "$11,988", link: "mailto:team@graphile.com?subject=Private%20Advisor%20enquiry", - buttonText: "", + buttonText: "Contact Graphile", frequency: "/mo", comparison: "Paid annually — $10,788/yr", badge: "Best Value — Save $1,200", @@ -118,7 +118,7 @@ function Tier({ export default function List() { return ( -
    +
    {TierList.map((props, idx) => ( diff --git a/website/src/components/TiersPlus/styles.module.css b/website/src/components/TiersPlus/styles.module.css index a9d6fdcb..5d4f1669 100644 --- a/website/src/components/TiersPlus/styles.module.css +++ b/website/src/components/TiersPlus/styles.module.css @@ -177,10 +177,6 @@ background-color: var(--ifm-color-primary-lightest); } -.button:before { - content: "Start Plan"; -} - @media screen and (max-width: 1200px) { .tierRow { flex-direction: column; @@ -192,7 +188,4 @@ .banner { flex-direction: column; } - .button:before { - content: "GitHub Sponsors"; - } } diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index b8c1a990..352766ae 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -113,10 +113,10 @@ benefits. ## Development Support Access development support for Graphile projects through the Private Advisor -tier, giving your organization access to the knowledge and experience of the -Graphile team for any issues you have with Graphile Worker, PostGraphile and the -wider Graphile suite, and other tools in the ecosystem such as TypeScript, SQL, -Node.js, GraphQL and more. If you’re running any of the Graphile tools, you +sponsor tier, giving your organization access to the knowledge and experience of +the Graphile team for any issues you have with Graphile Worker, PostGraphile and +the wider Graphile suite, and other tools in the ecosystem such as TypeScript, +SQL, Node.js, GraphQL and more. If you’re running any of the Graphile tools, you won’t find anyone more qualified to help.
      @@ -130,9 +130,6 @@ won’t find anyone more qualified to help.
    • Reference your code verbatim
    • Calls arranged as required
    • NDA available
    • -
    • - Access to discounted consultancy packages -
    • The warm feeling that comes from knowing{" "} From 9aade8cd7ce838ae91a5cee9606c72c0e5953b37 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:18:30 +0100 Subject: [PATCH 14/37] Reflect changes made in Crystal PR --- .../src/components/Sponsors/styles.module.css | 1 + .../src/components/TierPlusButtons/index.js | 25 +++++ .../TierPlusButtons/styles.module.css | 69 ++++++++++++++ website/src/components/Tiers/index.js | 14 ++- .../src/components/Tiers/styles.module.css | 5 +- website/src/components/TiersPlus/index.js | 14 ++- .../components/TiersPlus/styles.module.css | 48 ++++++++-- website/src/css/custom.css | 8 ++ website/src/pages/pricing.mdx | 41 +++++---- website/src/pages/pricing.module.css | 14 +-- website/src/pages/sponsors.mdx | 92 +++++++++---------- website/src/pages/support.mdx | 91 ++++++++++++++++++ 12 files changed, 320 insertions(+), 102 deletions(-) create mode 100644 website/src/components/TierPlusButtons/index.js create mode 100644 website/src/components/TierPlusButtons/styles.module.css create mode 100644 website/src/pages/support.mdx diff --git a/website/src/components/Sponsors/styles.module.css b/website/src/components/Sponsors/styles.module.css index 7d3d67ee..97eef7a2 100644 --- a/website/src/components/Sponsors/styles.module.css +++ b/website/src/components/Sponsors/styles.module.css @@ -1,4 +1,5 @@ .sponsorContainer { + composes: wide from global; display: flex; flex-wrap: wrap; align-items: space-around; diff --git a/website/src/components/TierPlusButtons/index.js b/website/src/components/TierPlusButtons/index.js new file mode 100644 index 00000000..4bd02c4c --- /dev/null +++ b/website/src/components/TierPlusButtons/index.js @@ -0,0 +1,25 @@ +import Link from "@docusaurus/Link"; +import styles from "@site/src/components/TierPlusButtons/styles.module.css"; +import clsx from "clsx"; +import React from "react"; + +export default function TierPlusButtons() { + return ( +
      + + +
      + ); +} diff --git a/website/src/components/TierPlusButtons/styles.module.css b/website/src/components/TierPlusButtons/styles.module.css new file mode 100644 index 00000000..0eaed0ef --- /dev/null +++ b/website/src/components/TierPlusButtons/styles.module.css @@ -0,0 +1,69 @@ +.sponsorbuttons { + display: flex; + justify-content: center; + margin-top: 2rem; + margin-bottom: 1.5rem; +} + +.borderbutton { + color: white; + text-transform: uppercase; + max-width: 100%; + margin-left: 1rem; + border: 1px solid var(--ifm-color-primary); +} + +.borderbutton:hover { + border-radius: 7px; + border: 1px solid var(--ifm-color-primary-darkest); + background-color: var(--ifm-color-primary-darkest); +} + +.sponsorbutton { + text-transform: uppercase; + max-width: 100%; + border: 1px solid var(--ifm-color-primary-darker); + background-color: var(--ifm-color-primary-darker); +} + +.sponsorbutton:before { + content: "Start Monthly Plan"; +} + +.borderbutton:before { + content: "Contact Graphile"; +} + +.sponsorbutton:hover { + background-color: var(--ifm-color-primary-darkest); + border: 1px solid var(--ifm-color-primary-darkest); +} + +[data-theme="dark"] .sponsorbutton { + border: 1px solid var(--ifm-color-primary); + background-color: var(--ifm-color-primary); +} + +[data-theme="dark"] .sponsorbutton:hover { + border: 1px solid var(--ifm-color-primary-lightest); + background-color: var(--ifm-color-primary-lightest); +} + +[data-theme="dark"] .borderbutton:hover { + border: 1px solid var(--ifm-color-primary-lightest); + color: var(--ifm-color-lightest); +} + +@media screen and (max-width: 995px) { + .sponsorbuttons { + display: flex; + flex-direction: column; + } + .borderbutton { + margin-top: 1rem; + margin-left: 0rem; + } + .borderbutton:before { + content: "Contact"; + } +} diff --git a/website/src/components/Tiers/index.js b/website/src/components/Tiers/index.js index dd6c1ec8..453943ba 100644 --- a/website/src/components/Tiers/index.js +++ b/website/src/components/Tiers/index.js @@ -131,14 +131,12 @@ function Tier({ title, tagline, link, buttonText, description, pricing }) { export default function List() { return ( -
      -
      -
      - {TierList.map((props, idx) => ( - - ))} -
      +
      +
      + {TierList.map((props, idx) => ( + + ))}
      -
      +
    ); } diff --git a/website/src/components/Tiers/styles.module.css b/website/src/components/Tiers/styles.module.css index 453de46b..d17577c3 100644 --- a/website/src/components/Tiers/styles.module.css +++ b/website/src/components/Tiers/styles.module.css @@ -1,8 +1,10 @@ .tiers { + composes: wide from global; display: flex; width: 100%; flex-direction: row; - padding-bottom: 1rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; } .tierRow { @@ -19,7 +21,6 @@ align-items: flex-start; font-weight: normal; font-size: 0.9rem; - margin: 0.5rem; padding: 1rem; border: 2px solid var(--ifm-color-primary-darker); border-radius: 12px; diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index 3c2cd331..1bf5857e 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -118,14 +118,12 @@ function Tier({ export default function List() { return ( -
    -
    -
    - {TierList.map((props, idx) => ( - - ))} -
    +
    +
    + {TierList.map((props, idx) => ( + + ))}
    -
    +
    ); } diff --git a/website/src/components/TiersPlus/styles.module.css b/website/src/components/TiersPlus/styles.module.css index 5d4f1669..95dd18d1 100644 --- a/website/src/components/TiersPlus/styles.module.css +++ b/website/src/components/TiersPlus/styles.module.css @@ -1,6 +1,9 @@ .tiers { + composes: wide from global; display: flex; flex-direction: column; + padding-top: 2rem; + padding-bottom: 2rem; } .tierRow { @@ -9,7 +12,8 @@ display: flex; } -.tier { +.tier, +.tierSupport { position: relative; display: flex; flex-direction: column; @@ -18,7 +22,6 @@ align-items: flex-start; font-weight: normal; font-size: 0.9rem; - margin: 0.5rem; padding: 1rem; border: 2px solid var(--ifm-color-primary-darker); border-radius: 12px; @@ -28,6 +31,28 @@ } } +[data-theme="dark"] .tier, +[data-theme="dark"] .tierSupport { + border: 2px solid var(--ifm-color-primary-light); + &.featured { + background-color: #000a15; + border: 3px solid var(--ifm-color-primary); + } +} + +.tierSupport { + flex: 0 0 100%; + &.featured { + background-color: transparent; + } +} + +[data-theme="dark"] .tierSupport { + &.featured { + background-color: transparent; + } +} + .hint { background: rgb(230, 246, 230); color: rgb(0, 49, 0); @@ -39,10 +64,6 @@ } .badge { - /* position: absolute; - left: 50%; - top: 0%; - transform: translate(-50%, -50%); */ margin: -1.8rem 0 0; background-color: white; border-radius: calc(infinity * 1px); @@ -107,7 +128,8 @@ font-size: 1rem; } -.priceline { +.priceline, +.pricelineSupport { font-weight: var(--ifm-heading-font-weight); text-align: center; font-size: 2rem; @@ -115,6 +137,10 @@ align-items: center; } +.pricelineSupport { + align-items: baseline; +} + .price { font-weight: bold; } @@ -127,6 +153,14 @@ } } +[data-theme="dark"] .pricesub { + color: var(--ifm-color-primary-lighter); +} + +[data-theme="dark"] .featured .pricesub { + color: var(--ifm-color-primary); +} + .was { color: var(--ifm-color-gray-400); text-decoration: line-through; diff --git a/website/src/css/custom.css b/website/src/css/custom.css index 83ee6a15..92b792fb 100644 --- a/website/src/css/custom.css +++ b/website/src/css/custom.css @@ -59,3 +59,11 @@ figcaption { .prettyDivide path { fill: var(--ifm-color-primary); } + +.mdx-wrapper { + article > :not(.wide) { + max-width: 49rem; + margin-left: auto; + margin-right: auto; + } +} diff --git a/website/src/pages/pricing.mdx b/website/src/pages/pricing.mdx index f41f3d85..93d7412e 100644 --- a/website/src/pages/pricing.mdx +++ b/website/src/pages/pricing.mdx @@ -16,12 +16,12 @@ and “quality of life” features which can help your team to save development costs and removes the need to scale to zero while upgrading Worker versions. -Worker Pro is available as a perk for -[Graphile sponsors](https://graphile.org/sponsor/). Businesses which use -Graphile Worker should explore sponsorship as the first option to obtain Worker -Pro, as sponsorship also helps to fund development and maintenance of the entire -Graphile suite, as well as enabling us to advance the software they rely on. At -the time of writing, there are no other ways to obtain Worker Pro. +Worker Pro is available as a perk for [Graphile sponsors](/sponsor). +**Businesses which use Graphile Worker should explore sponsorship as the first +option to obtain Worker Pro, as sponsorship also helps to fund development and +maintenance of the entire Graphile suite, as well as enabling us to advance the +software they rely on**. At the time of writing, there are no other ways to +obtain Worker Pro. :::tip Launch Offer @@ -39,9 +39,9 @@ offer ends; saving you a minimum of $1300 over the regular price of $100 /month. Sponsor” tier (Sponsor+) is suitable for many small and medium businesses while the “Private Advisor Tier” ( Enterprise) gives access to a complimentary{" "} - Development Support contract - and discounted consultancy packages, perfect for enterprises and those who - need bespoke advice and support on their project. + Development Support contract and discounted + consultancy packages, perfect for enterprises and those who need bespoke + advice and support on their project.

    @@ -51,9 +51,9 @@ offer ends; saving you a minimum of $1300 over the regular price of $100 /month. businesses with some perks such as free access to the database tool{" "} pgRITA and discounted consultancy calls. The “Private Advisor Tier” gives access to a complimentary{" "} - Development Support contract - and discounted consultancy packages, perfect for enterprises and those who - need bespoke advice and support on their project. + Development Support contract and discounted + consultancy packages, perfect for enterprises and those who need bespoke + advice and support on their project.

    @@ -507,9 +507,12 @@ offer ends; saving you a minimum of $1300 over the regular price of $100 /month. @@ -624,9 +627,9 @@ receive priority support from our maintainers within our Discord Server. Sponsors on the “Private Advisor” tier or above can enter a complimentary Development Support contract and receive support through their company -Slack/GitHub organization. Prices start at $899 a month, with no minimum term. -More information can be found at the -[Development Support page](https://graphile.org/support/) or you can +Slack/GitHub organization. Priced at $999 a month, with no minimum term, or +receive a discount with an annual contract. More information can be found at the +[Development Support page](/support) or you can [get in touch via email](mailto:team@graphile.org?subject=Enterprise%20enquiry). ### I’m an enterprise user and need X, Y and Z @@ -658,9 +661,13 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` +<<<<<<< HEAD <<<<<<< HEAD Last reviewed: 21st April 2026 ======= Last reviewed: July 2025 >>>>>>> Update pricing +======= + Last reviewed: August 2025 +>>>>>>> Reflect changes made in Crystal PR diff --git a/website/src/pages/pricing.module.css b/website/src/pages/pricing.module.css index 4926790c..e65c5333 100644 --- a/website/src/pages/pricing.module.css +++ b/website/src/pages/pricing.module.css @@ -27,6 +27,7 @@ } .pricingTable { + composes: wide from global; overflow-x: visible; overflow-y: visible; } @@ -126,12 +127,10 @@ border-top: 1px solid var(--ifm-color-primary-darker); } -.showFull { - display: contents; -} - -.showMobile { - display: none; +@media screen and (min-width: 927px) { + .showMobile { + display: none; + } } @media screen and (max-width: 926px) { @@ -205,7 +204,4 @@ .showFull { display: none; } - .showMobile { - display: contents; - } } diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index 352766ae..bd4840c8 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -3,9 +3,12 @@ title: "Sponsor Graphile Open Source Software" hide_table_of_contents: true --- +import clsx from "clsx"; + import Sponsor from "@site/src/components/Sponsor"; import Sponsors from "@site/src/components/Sponsors"; import SponsorButtons from "@site/src/components/SponsorButtons"; +import sponsorStyles from "@site/src/components/TiersPlus/styles.module.css"; import Link from "@docusaurus/Link"; import TierList from "@site/src/components/Tiers"; import TierPlusList from "@site/src/components/TiersPlus"; @@ -78,65 +81,52 @@ to fund ongoing development on Graphile Worker through sponsorship. THANK YOU! -Graphile has a number of crowd-funded open-source projects, licensed under the -permissive MIT license, including Graphile Worker, PostGraphile, -Grafast, Graphile Migrate and Graphile Starter. Sponsorship increases -the rate of fixes, documentation improvements, and feature development on these -and other projects. - - - -## Why are Graphile projects “crowd-funded open-source”? - -Many of our projects are open-source to give users great freedom in how they use -the software, and to enable the community to have influence over how the -projects progress to make it appropriate for a wide range of use-cases. To -ensure users can rely on these projects for years to come, they need to be well -directed and financially sustainable. +## Sponsor tiers & benefits -**The best way to ensure that Graphile software is something you can depend on -for years to come is through monthly sponsorship.** Crowd-sourced funding -enables us to spend the most time directly working on improving the software, -which you and other users then benefit from. + -## Sponsor tiers & benefits +
    +
    +
    +
    +
    +
    Development Support
    +
    + From  + $899 + /mo +
    +
    + + Find out more + +
    +
    +
    +
    As well as ensuring the sustainability and longevity of Graphile Worker and the wider Graphile suite of developer tooling, sponsorship also gives you or your company some additional benefits such as access to security announcements and being featured in the README files of Graphile’s main open source projects. -Choose the tier which matches your funding goal, higher tiers come with more -benefits. - - -## Development Support + -Access development support for Graphile projects through the Private Advisor -sponsor tier, giving your organization access to the knowledge and experience of -the Graphile team for any issues you have with Graphile Worker, PostGraphile and -the wider Graphile suite, and other tools in the ecosystem such as TypeScript, -SQL, Node.js, GraphQL and more. If you’re running any of the Graphile tools, you -won’t find anyone more qualified to help. +## Why are Graphile projects “crowd-funded open-source”? -
      -
    • All the benefits of a Featured Sponsor and...
    • -
    • One-to-one access to the Graphile team throughout the year
    • -
    • - Priority support straight from the maintainer -
    • -
    • Add the Graphile team to your chat server for timely responses
    • -
    • Add the Graphile team to your GitHub/GitLab organization
    • -
    • Reference your code verbatim
    • -
    • Calls arranged as required
    • -
    • NDA available
    • -
    • - The warm feeling that comes from knowing{" "} - - you’re making a significant difference to Graphile Worker’s development - and sustainability - -
    • -
    +Many of our projects are open-source under the permissive MIT license to give +users great freedom in how they use the software, and to enable the community to +have influence over how the projects progress to make it appropriate for a wide +range of use-cases. To ensure users can rely on these projects for years to +come, they need to be well directed and financially sustainable. - +**The best way to ensure that Graphile software is something you can depend on +for years to come is through monthly sponsorship.** Crowd-sourced funding +enables us to spend the most time directly working on improving the software, +which you and other users then benefit from. diff --git a/website/src/pages/support.mdx b/website/src/pages/support.mdx new file mode 100644 index 00000000..89e36064 --- /dev/null +++ b/website/src/pages/support.mdx @@ -0,0 +1,91 @@ +--- +title: "Sponsor Graphile Open Source Software" +hide_table_of_contents: true +--- + +import clsx from "clsx"; + +import Link from "@docusaurus/Link"; +import styles from "@site/src/css/common.module.css"; +import TierList from "@site/src/components/Tiers"; +import TierPlusList from "@site/src/components/TiersPlus"; +import TierPlusButtons from "@site/src/components/TierPlusButtons"; + +## Development Support + +Give your organization access to the knowledge and experience of the Graphile +team for any issues you have with PostGraphile, Graphile Worker and the wider +Graphile suite, and other tools in the ecosystem such as TypeScript, SQL, +Node.js, GraphQL and more. If you’re running any of the Graphile tools, +you won’t find anyone more qualified to help. + + + +## Benefits of Development Support + +
      +
    • One-to-one access to the Graphile team throughout the year
    • +
    • + Priority support straight from the maintainer +
    • +
    • Add the Graphile team to your chat server for timely responses
    • +
    • Add the Graphile team to your GitHub/GitLab organization
    • +
    • Reference your code verbatim
    • +
    • Calls arranged as required
    • +
    • NDA available
    • +
    + +Plus, receive recognition as a Featured Sponsor: + +
      +
    • + Access to private security announcements +
    • +
    • + Name and logo{" "} + featured in the READMEs of Graphile’s main OSS projects{" "} + (shown on GitHub and npm) +
    • +
    • + Name and logo prominently featured on our + websites +
    • +
    • + Access to #vip-lounge on Graphile’s Discord +
    • +
    • + Free access to{" "} + + pgRITA + +
    • + +
    • + Access to PostGraphile V4 Pro and{" "} + + graphile-pro sponsors only project repository + +
    • +
    • + The warm feeling that comes from knowing{" "} + + you’re making a significant difference to Graphile Worker’s development + and sustainability + +
    • +
    + + + +## Graphile projects are “crowd-funded open-source” + +Many of our projects are open-source to give users great freedom in how they use +the software, and to enable the community to have influence over how the +projects progress to make it appropriate for a wide range of use-cases. To +ensure users can rely on these projects for years to come, they need to be well +directed and financially sustainable. + +**The best way to ensure that Graphile software is something you can depend on +for years to come is through monthly sponsorship.** Crowd-sourced funding +enables us to spend the most time directly working on improving the software, +which you and other users then benefit from. From 19f85b21bd8234b60f684392c4955ed39f9d2497 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:19:57 +0100 Subject: [PATCH 15/37] Add support to navbar --- website/docusaurus.config.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index b5d219f2..81cb1c5e 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -171,6 +171,11 @@ const config = { label: "Sponsor", position: "right", }, + { + to: "support", + label: "Support", + position: "right", + }, { to: "pricing", label: "Go Pro", From dcb887616eb304b96ca52a3d9f3210b3c83bc6da Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:37:09 +0100 Subject: [PATCH 16/37] tweak dark styles --- .../TierPlusButtons/styles.module.css | 10 +++++-- .../components/TiersPlus/styles.module.css | 30 ++++++++++++++++--- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/website/src/components/TierPlusButtons/styles.module.css b/website/src/components/TierPlusButtons/styles.module.css index 0eaed0ef..b1da2c5f 100644 --- a/website/src/components/TierPlusButtons/styles.module.css +++ b/website/src/components/TierPlusButtons/styles.module.css @@ -40,8 +40,12 @@ } [data-theme="dark"] .sponsorbutton { - border: 1px solid var(--ifm-color-primary); - background-color: var(--ifm-color-primary); + border: 1px solid var(--ifm-color-primary-light); + background-color: var(--ifm-color-primary-light); +} + +[data-theme="dark"] .borderbutton { + color: black; } [data-theme="dark"] .sponsorbutton:hover { @@ -51,7 +55,7 @@ [data-theme="dark"] .borderbutton:hover { border: 1px solid var(--ifm-color-primary-lightest); - color: var(--ifm-color-lightest); + background-color: var(--ifm-color-primary-lightest); } @media screen and (max-width: 995px) { diff --git a/website/src/components/TiersPlus/styles.module.css b/website/src/components/TiersPlus/styles.module.css index 95dd18d1..8f0e27d2 100644 --- a/website/src/components/TiersPlus/styles.module.css +++ b/website/src/components/TiersPlus/styles.module.css @@ -54,8 +54,8 @@ } .hint { - background: rgb(230, 246, 230); - color: rgb(0, 49, 0); + background: rgb(221, 245, 221); + color: #059669; padding: 0 0.8rem 0.1rem; font-size: 0.8rem; border-radius: calc(infinity * 1px); @@ -63,6 +63,11 @@ height: 1.5rem; } +[data-theme="dark"] .hint { + background: #059669; + color: rgb(230, 246, 230); +} + .badge { margin: -1.8rem 0 0; background-color: white; @@ -78,8 +83,15 @@ } } -[data-theme="dark"] .tier { - border: 2px solid var(--ifm-color-primary); +[data-theme="dark"] .badge { + background-color: var(--ifm-color-primary-light); + border-color: var(--ifm-color-primary-light); + color: black; +} + +[data-theme="dark"] .featured .badge { + background-color: var(--ifm-color-primary); + border-color: var(--ifm-color-primary); } .banner { @@ -120,6 +132,11 @@ [data-theme="dark"] .title, [data-theme="dark"] .note { + color: var(--ifm-color-primary-light); +} + +[data-theme="dark"] .featured .title, +[data-theme="dark"] .featured .note { color: var(--ifm-color-primary); } @@ -202,6 +219,11 @@ } [data-theme="dark"] .button { + background-color: var(--ifm-color-primary-light); + border-color: var(--ifm-color-primary-light); +} + +[data-theme="dark"] .featured .button { background-color: var(--ifm-color-primary); border-color: var(--ifm-color-primary); } From 135e862cd0825875a5416ba306dacb7b751d9bfd Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Thu, 18 Sep 2025 11:07:17 +0100 Subject: [PATCH 17/37] Update date and color contrast of dev support boxes --- website/src/components/Sponsor/index.js | 38 +++++++++++------------ website/src/components/TiersPlus/index.js | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/website/src/components/Sponsor/index.js b/website/src/components/Sponsor/index.js index 3103e5fe..17392703 100644 --- a/website/src/components/Sponsor/index.js +++ b/website/src/components/Sponsor/index.js @@ -6,6 +6,24 @@ import React, { useContext } from "react"; import { SponsorContext } from "../../contexts/sponsor"; +function Avatar({ src }) { + return src ? ( + + ) : ( + + ); +} + +function LinkTo({ href, name }) { + return href ? ( + + {name} + + ) : ( +
    {name}
    + ); +} + export default function Sponsor({ name, avatar, @@ -17,24 +35,6 @@ export default function Sponsor({ const level = useContext(SponsorContext); const showAvatar = level === "featured" || level === "leaders"; - function Avatar({ src }) { - return src ? ( - - ) : ( - - ); - } - - function LinkTo({ href }) { - return href ? ( - - {name} - - ) : ( -
    {name}
    - ); - } - return (
    ) : null} - +
    ); } diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index 1bf5857e..c20ad426 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -13,7 +13,7 @@ const TierList = [ buttonText: "Start Monthly Plan", frequency: "/mo", comparison: "Cancel any time", - badge: "Updated August 2025", + badge: "Updated September 2025", description: ( <>
      From 422daa88444691d40e5db3789ee2ba0988006e1b Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Tue, 8 Jul 2025 16:39:34 +0100 Subject: [PATCH 18/37] initial commit --- website/src/components/Sponsor/index.js | 1 + .../src/components/Sponsor/styles.module.css | 8 ++---- website/src/pages/sponsors.mdx | 27 +++++++++++++++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/website/src/components/Sponsor/index.js b/website/src/components/Sponsor/index.js index 17392703..7a019ead 100644 --- a/website/src/components/Sponsor/index.js +++ b/website/src/components/Sponsor/index.js @@ -4,6 +4,7 @@ import FallbackAvatar from "@site/static/img/avatar.svg"; import clsx from "clsx"; import React, { useContext } from "react"; +import FallbackAvatar from "@site/static/img/avatar.svg"; import { SponsorContext } from "../../contexts/sponsor"; function Avatar({ src }) { diff --git a/website/src/components/Sponsor/styles.module.css b/website/src/components/Sponsor/styles.module.css index 19f98ae9..e5a053a4 100644 --- a/website/src/components/Sponsor/styles.module.css +++ b/website/src/components/Sponsor/styles.module.css @@ -10,10 +10,6 @@ font-size: 1.2rem; } -.leaders { - flex: 0 0 12rem; -} - .featured, .leaders { border: 3px solid var(--ifm-color-primary-dark); @@ -27,8 +23,8 @@ } .leaders .name { - font-size: 1.2rem; - padding-top: 0.8rem; + font-size: 1.24rem; + padding-top: 1rem; } .name { color: var(--ifm-color-primary-darker); diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index bd4840c8..393ece3f 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -36,12 +36,16 @@ to fund ongoing development on Graphile Worker through sponsorship. THANK YOU! +<<<<<<< HEAD +======= +>>>>>>> initial commit + + >>>>>> initial commit + business + /> + + + + + @@ -70,13 +88,22 @@ to fund ongoing development on Graphile Worker through sponsorship. THANK YOU! avatar="/images/sponsors/deliverdotmedia.jpg" business /> +======= + name="deliver.media" + avatar="/images/sponsors/deliverdotmedia.jpg" + business + /> +>>>>>>> initial commit +<<<<<<< HEAD +======= +>>>>>>> initial commit From 0b7993bab2e0fa320461229e47c4041e9d4a1acb Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Tue, 8 Jul 2025 16:51:31 +0100 Subject: [PATCH 19/37] lint fix --- website/src/components/Sponsor/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/website/src/components/Sponsor/index.js b/website/src/components/Sponsor/index.js index 7a019ead..17392703 100644 --- a/website/src/components/Sponsor/index.js +++ b/website/src/components/Sponsor/index.js @@ -4,7 +4,6 @@ import FallbackAvatar from "@site/static/img/avatar.svg"; import clsx from "clsx"; import React, { useContext } from "react"; -import FallbackAvatar from "@site/static/img/avatar.svg"; import { SponsorContext } from "../../contexts/sponsor"; function Avatar({ src }) { From 62f8654bfee417e0b3e56db973fbe3873a184ef0 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 9 Jul 2025 16:26:54 +0100 Subject: [PATCH 20/37] Finish initial styling to match crystal websites --- website/src/components/Sponsor/index.js | 20 ++++++++++++++++++- .../src/components/Sponsor/styles.module.css | 11 ++++++++-- website/src/pages/sponsors.mdx | 13 +++++++++--- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/website/src/components/Sponsor/index.js b/website/src/components/Sponsor/index.js index 17392703..38c8d2b8 100644 --- a/website/src/components/Sponsor/index.js +++ b/website/src/components/Sponsor/index.js @@ -35,6 +35,24 @@ export default function Sponsor({ const level = useContext(SponsorContext); const showAvatar = level === "featured" || level === "leaders"; + function Avatar({ src }) { + return src ? ( + + ) : ( + + ); + } + + function LinkTo({ href }) { + return href ? ( + + {name} + + ) : ( +
      {name}
      + ); + } + return (
      ) : null} - +
      ); } diff --git a/website/src/components/Sponsor/styles.module.css b/website/src/components/Sponsor/styles.module.css index e5a053a4..2f2c5f29 100644 --- a/website/src/components/Sponsor/styles.module.css +++ b/website/src/components/Sponsor/styles.module.css @@ -8,6 +8,13 @@ padding: 1rem; flex: 0 0 18rem; font-size: 1.2rem; +<<<<<<< HEAD +======= +} + +.leaders { + flex: 0 0 12rem; +>>>>>>> Finish initial styling to match crystal websites } .featured, @@ -23,8 +30,8 @@ } .leaders .name { - font-size: 1.24rem; - padding-top: 1rem; + font-size: 1.2rem; + padding-top: 0.8rem; } .name { color: var(--ifm-color-primary-darker); diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index 393ece3f..9f0b87a5 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -36,16 +36,19 @@ to fund ongoing development on Graphile Worker through sponsorship. THANK YOU! +<<<<<<< HEAD <<<<<<< HEAD ======= >>>>>>> initial commit +======= + +>>>>>>> Finish initial styling to match crystal websites - - >>>>>> initial commit business /> + - + +<<<<<<< HEAD <<<<<<< HEAD ======= >>>>>>> initial commit +======= + +>>>>>>> Finish initial styling to match crystal websites From b81cf49321d397cac92f918457fda8e237cea571 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 23 Jul 2025 13:57:58 +0100 Subject: [PATCH 21/37] Migrate over tier components --- website/src/components/Tiers/index.js | 36 ++-- .../src/components/Tiers/styles.module.css | 4 +- website/src/components/TiersPlus/index.js | 129 ++++++------ .../components/TiersPlus/styles.module.css | 198 +++++------------- website/src/pages/sponsors.mdx | 31 +-- website/yarn.lock | 4 + 6 files changed, 148 insertions(+), 254 deletions(-) create mode 100644 website/yarn.lock diff --git a/website/src/components/Tiers/index.js b/website/src/components/Tiers/index.js index 453943ba..083bdebb 100644 --- a/website/src/components/Tiers/index.js +++ b/website/src/components/Tiers/index.js @@ -19,8 +19,11 @@ const TierList = [ Graphile Sponsors page {" "} +
    • + Your name among those randomly featured in the PostGraphile CLI +
    • Post job opportunities to our Discord community
    • -
    • Graphile Worker stickers
    • +
    • PostGraphile stickers
    • Access to the #supporter-lounge on Discord
    • The warm feeling from knowing you’re supporting Open Source Software @@ -43,10 +46,7 @@ const TierList = [ Access to private security announcements
    • - Free access to{" "} - - Worker Pro - + Free access to PostGraphile V4 Pro
    • Access to{" "} @@ -58,9 +58,13 @@ const TierList = [ Your name and avatar/logo featured on our websites, including this one
    • +
    • + Your name more frequently featured in the + PostGraphile CLI +
    • The warm feeling that comes from knowing you’re making a difference - to Graphile Worker’s development and sustainability + to PostGraphile’s development and sustainability
    @@ -87,6 +91,10 @@ const TierList = [ Your name and avatar/logo prominently featured on our websites +
  • + Your name even more frequently featured in the + PostGraphile CLI +
  • Access to #vip-lounge on Discord
  • @@ -99,7 +107,7 @@ const TierList = [
  • The warm feeling that comes from knowing{" "} - you’re making a significant difference to Graphile Worker’s + you’re making a significant difference to PostGraphile’s development and sustainability
  • @@ -131,12 +139,14 @@ function Tier({ title, tagline, link, buttonText, description, pricing }) { export default function List() { return ( -
    -
    - {TierList.map((props, idx) => ( - - ))} +
    +
    +
    + {TierList.map((props, idx) => ( + + ))} +
    -
    + ); } diff --git a/website/src/components/Tiers/styles.module.css b/website/src/components/Tiers/styles.module.css index d17577c3..327a832a 100644 --- a/website/src/components/Tiers/styles.module.css +++ b/website/src/components/Tiers/styles.module.css @@ -1,10 +1,7 @@ .tiers { - composes: wide from global; display: flex; width: 100%; flex-direction: row; - padding-top: 0.5rem; - padding-bottom: 0.5rem; } .tierRow { @@ -21,6 +18,7 @@ align-items: flex-start; font-weight: normal; font-size: 0.9rem; + margin: 0.5rem; padding: 1rem; border: 2px solid var(--ifm-color-primary-darker); border-radius: 12px; diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index c20ad426..1966bc1d 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -5,63 +5,48 @@ import React from "react"; const TierList = [ { - title: "Monthly Plan", - tagline: "Pay month-to-month with full flexibility", + title: "Private Advisor Offer", + tagline: "Development support in your chat server & code repository", pricing: "$999", + annual: "$9,999", was: "$1,500", link: "https://github.com/sponsors/benjie/sponsorships?tier_id=42012", - buttonText: "Start Monthly Plan", - frequency: "/mo", - comparison: "Cancel any time", - badge: "Updated September 2025", - description: ( - <> -
      -
    • - Start today with payment through GitHub -
    • -
    • - Flexible -
    • -
    • New lower price for 2025
    • -
    • - Access to discounted consultancy packages -
    • -
    - - ), - }, - { - title: "Annual Plan", - tagline: "Maximum savings with full year commitment", - pricing: "$899", - hint: "10% discount", - //was: "$11,988", - link: "mailto:team@graphile.com?subject=Private%20Advisor%20enquiry", - buttonText: "Contact Graphile", - frequency: "/mo", - comparison: "Paid annually — $10,788/yr", - badge: "Best Value — Save $1,200", - featured: true, + buttonText: "", + contact: "mailto:team@graphile.com?subject=Private%20Advisor%20enquiry", + contactText: "", description: ( <> +
    + Access development support for Graphile projects through the Private + Advisor tier, giving your organization access to the knowledge and + experience of the Graphile team for any issues you have with{" "} + PostGraphile, Grafast and the wider Graphile suite, and other tools in + the ecosystem such as TypeScript, SQL, Node.js, GraphQL and more. If + you’re running any of the Graphile tools, you won’t find anyone more + qualified to help. +
      +
    • All the benefits of a Featured Sponsor and...
    • +
    • One-to-one access to the Graphile team throughout the year
    • - Lock in your rate for a full year -
    • - -
    • - Save money — pay once, enjoy the lowest rate + Priority support straight from the maintainer
    • - One invoice, one payment — no monthly admin - headaches + Add the Graphile team to your chat server for timely responses
    • +
    • Add the Graphile team to your GitHub/GitLab organization
    • +
    • Reference your code verbatim
    • +
    • Calls arranged as required
    • +
    • NDA available
    • Access to discounted consultancy packages
    • - Formal contract for your procurement process + The warm feeling that comes from knowing{" "} + + you’re making a significant difference to PostGraphile’s + development and sustainability +
    @@ -76,31 +61,27 @@ function Tier({ buttonText, description, pricing, + annual, was, - frequency, - comparison, - badge, - featured, - hint, + contact, + contactText, }) { return ( -
    - {badge ?
    {badge}
    : null} +

    {title}

    -
    {tagline}
    -
    - {was ? {was} : null}{" "} - - {pricing} - {frequency} +

    + {was}{" "} + {pricing}  + /month +

    +

    + + or {annual} /year - + annual discount applied - {hint ? {hint} : null} -

    -
    - {comparison} -
    +
    {buttonText} + + {contactText} +
    -
    {description}
    +

    {tagline}

    +

    {description}

    ); } export default function List() { return ( -
    -
    - {TierList.map((props, idx) => ( - - ))} +
    +
    +
    + {TierList.map((props, idx) => ( + + ))} +
    -
    + ); } diff --git a/website/src/components/TiersPlus/styles.module.css b/website/src/components/TiersPlus/styles.module.css index 8f0e27d2..15bad4c9 100644 --- a/website/src/components/TiersPlus/styles.module.css +++ b/website/src/components/TiersPlus/styles.module.css @@ -1,187 +1,74 @@ .tiers { - composes: wide from global; display: flex; + width: 100%; flex-direction: column; - padding-top: 2rem; - padding-bottom: 2rem; } .tierRow { justify-content: center; gap: 2rem; display: flex; + flex-direction: column; } -.tier, -.tierSupport { - position: relative; +.tier { display: flex; flex-direction: column; - flex: 0 0 40%; + flex: 0 0 75%; justify-content: flex-start; align-items: flex-start; font-weight: normal; font-size: 0.9rem; + margin: 0.5rem; padding: 1rem; border: 2px solid var(--ifm-color-primary-darker); border-radius: 12px; - &.featured { - background-color: #fff9f5; - border: 3px solid var(--ifm-color-primary); - } -} - -[data-theme="dark"] .tier, -[data-theme="dark"] .tierSupport { - border: 2px solid var(--ifm-color-primary-light); - &.featured { - background-color: #000a15; - border: 3px solid var(--ifm-color-primary); - } -} - -.tierSupport { - flex: 0 0 100%; - &.featured { - background-color: transparent; - } -} - -[data-theme="dark"] .tierSupport { - &.featured { - background-color: transparent; - } -} - -.hint { - background: rgb(221, 245, 221); - color: #059669; - padding: 0 0.8rem 0.1rem; - font-size: 0.8rem; - border-radius: calc(infinity * 1px); - margin-left: 1rem; - height: 1.5rem; } -[data-theme="dark"] .hint { - background: #059669; - color: rgb(230, 246, 230); -} - -.badge { - margin: -1.8rem 0 0; - background-color: white; - border-radius: calc(infinity * 1px); - border: 1px solid var(--ifm-color-primary-darker); - padding: 0rem 0.8rem 0.1rem; - .featured & { - background-color: var(--ifm-color-primary); - border: 1px solid var(--ifm-color-primary); - color: white; - font-weight: bold; - margin: -1.8rem auto 0; - } -} - -[data-theme="dark"] .badge { - background-color: var(--ifm-color-primary-light); - border-color: var(--ifm-color-primary-light); - color: black; -} - -[data-theme="dark"] .featured .badge { - background-color: var(--ifm-color-primary); - border-color: var(--ifm-color-primary); +[data-theme="dark"] .tier { + border: 2px solid var(--ifm-color-primary); } .banner { display: flex; width: 100%; + flex: 0 0 33%; justify-content: space-between; - flex-direction: column; - margin-top: 0.2rem; } .info { display: flex; flex-direction: column; justify-content: flex-start; - align-items: center; - > * { - text-align: center; - } + align-items: flex-start; } .title { color: var(--ifm-color-primary-darker); - font-size: 2rem; - font-weight: bold; - .featured & { - color: var(--ifm-color-primary); - } } .note { - font-size: 0.9rem; + font-size: 0.8rem; color: var(--ifm-color-primary-darker); font-weight: var(--ifm-font-weight-base); - .featured & { - color: var(--ifm-color-primary); - } } [data-theme="dark"] .title, [data-theme="dark"] .note { - color: var(--ifm-color-primary-light); -} - -[data-theme="dark"] .featured .title, -[data-theme="dark"] .featured .note { color: var(--ifm-color-primary); } .tagline { - text-align: center; - font-size: 1rem; -} - -.priceline, -.pricelineSupport { font-weight: var(--ifm-heading-font-weight); - text-align: center; - font-size: 2rem; - display: flex; - align-items: center; -} - -.pricelineSupport { - align-items: baseline; } .price { font-weight: bold; } -.pricesub { - font-size: 1rem; - color: var(--ifm-color-primary-darker); - .featured & { - color: var(--ifm-color-primary); - } -} - -[data-theme="dark"] .pricesub { - color: var(--ifm-color-primary-lighter); -} - -[data-theme="dark"] .featured .pricesub { - color: var(--ifm-color-primary); -} - .was { color: var(--ifm-color-gray-400); text-decoration: line-through; - margin-right: 1rem; } [data-theme="dark"] .was { @@ -193,46 +80,65 @@ padding: 0.5rem 0 0.5rem 0; } -.description li::marker { - font-size: 20px; - color: var(--ifm-color-primary-darker); - content: "✓ "; -} - .button { width: 100%; - margin: 1rem 0 0 0; + margin: 0 0 1rem 0; } -.button { +.tier .button { background-color: var(--ifm-color-primary-darker); border-color: var(--ifm-color-primary-darker); - .featured & { - background-color: var(--ifm-color-primary); - border-color: var(--ifm-color-primary); - } } -.button:hover { +.tier .button:hover { background-color: var(--ifm-color-primary-darkest); border-color: var(--ifm-color-primary-darkest); } -[data-theme="dark"] .button { - background-color: var(--ifm-color-primary-light); - border-color: var(--ifm-color-primary-light); -} - -[data-theme="dark"] .featured .button { +[data-theme="dark"] .tier .button { background-color: var(--ifm-color-primary); border-color: var(--ifm-color-primary); } -[data-theme="dark"] .button:hover { +[data-theme="dark"] .tier .button:hover { border: 1px solid var(--ifm-color-primary-lightest); background-color: var(--ifm-color-primary-lightest); } +.borderbutton { + composes: button; +} + +.tier:nth-child(n) .borderbutton { + background-color: transparent; + border: 1px solid var(--ifm-color-primary-darker); + color: var(--ifm-color-primary-darker); +} + +.tier:nth-child(n) .borderbutton:hover { + border: 1px solid var(--ifm-color-primary-darkest); + color: var(--ifm-color-primary-darkest); +} + +[data-theme="dark"] .tier:nth-child(n) .borderbutton { + border: 1px solid var(--ifm-color-primary-lightest); + color: var(--ifm-color-primary-lightest); +} + +[data-theme="dark"] .tier:nth-child(n) .borderbutton:hover { + border: 1px solid var(--ifm-color-primary); + color: var(--ifm-color-primary); + background-color: transparent; +} + +.button:before { + content: "Join on GitHub Sponsors"; +} + +.borderbutton:before { + content: "Contact for bespoke service"; +} + @media screen and (max-width: 1200px) { .tierRow { flex-direction: column; @@ -244,4 +150,10 @@ .banner { flex-direction: column; } + .button:before { + content: "GitHub Sponsors"; + } + .borderbutton:before { + content: "Contact"; + } } diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index 9f0b87a5..fdcdf527 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -36,19 +36,13 @@ to fund ongoing development on Graphile Worker through sponsorship. THANK YOU! -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> initial commit -======= - ->>>>>>> Finish initial styling to match crystal websites + + >>>>>> initial commit business /> - - + -======= - name="deliver.media" - avatar="/images/sponsors/deliverdotmedia.jpg" - business - /> ->>>>>>> initial commit + name="deliver.media" avatar="/images/sponsors/deliverdotmedia.jpg" business /> -<<<<<<< HEAD -<<<<<<< HEAD - -======= ->>>>>>> initial commit -======= - ->>>>>>> Finish initial styling to match crystal websites diff --git a/website/yarn.lock b/website/yarn.lock new file mode 100644 index 00000000..fb57ccd1 --- /dev/null +++ b/website/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + From 1f9e0693496fc55b9832bb6cc0734670e4e52ca2 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 23 Jul 2025 15:40:05 +0100 Subject: [PATCH 22/37] Tweak wording for Worker --- website/src/components/Tiers/index.js | 22 +++++++--------------- website/src/components/TiersPlus/index.js | 6 +++--- website/src/pages/sponsors.mdx | 15 +++++++++++++++ 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/website/src/components/Tiers/index.js b/website/src/components/Tiers/index.js index 083bdebb..dd6c1ec8 100644 --- a/website/src/components/Tiers/index.js +++ b/website/src/components/Tiers/index.js @@ -19,11 +19,8 @@ const TierList = [ Graphile Sponsors page {" "} -
  • - Your name among those randomly featured in the PostGraphile CLI -
  • Post job opportunities to our Discord community
  • -
  • PostGraphile stickers
  • +
  • Graphile Worker stickers
  • Access to the #supporter-lounge on Discord
  • The warm feeling from knowing you’re supporting Open Source Software @@ -46,7 +43,10 @@ const TierList = [ Access to private security announcements
  • - Free access to PostGraphile V4 Pro + Free access to{" "} + + Worker Pro +
  • Access to{" "} @@ -58,13 +58,9 @@ const TierList = [ Your name and avatar/logo featured on our websites, including this one
  • -
  • - Your name more frequently featured in the - PostGraphile CLI -
  • The warm feeling that comes from knowing you’re making a difference - to PostGraphile’s development and sustainability + to Graphile Worker’s development and sustainability
  • @@ -91,10 +87,6 @@ const TierList = [ Your name and avatar/logo prominently featured on our websites -
  • - Your name even more frequently featured in the - PostGraphile CLI -
  • Access to #vip-lounge on Discord
  • @@ -107,7 +99,7 @@ const TierList = [
  • The warm feeling that comes from knowing{" "} - you’re making a significant difference to PostGraphile’s + you’re making a significant difference to Graphile Worker’s development and sustainability
  • diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index 1966bc1d..efaab1f3 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -19,8 +19,8 @@ const TierList = [
    Access development support for Graphile projects through the Private Advisor tier, giving your organization access to the knowledge and - experience of the Graphile team for any issues you have with{" "} - PostGraphile, Grafast and the wider Graphile suite, and other tools in + experience of the Graphile team for any issues you have with Graphile + Worker, PostGraphile and the wider Graphile suite, and other tools in the ecosystem such as TypeScript, SQL, Node.js, GraphQL and more. If you’re running any of the Graphile tools, you won’t find anyone more qualified to help. @@ -44,7 +44,7 @@ const TierList = [
  • The warm feeling that comes from knowing{" "} - you’re making a significant difference to PostGraphile’s + you’re making a significant difference to Graphile Worker’s development and sustainability
  • diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index fdcdf527..462ba439 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -141,3 +141,18 @@ come, they need to be well directed and financially sustainable. for years to come is through monthly sponsorship.** Crowd-sourced funding enables us to spend the most time directly working on improving the software, which you and other users then benefit from. + +## Sponsor tiers & benefits + +As well as ensuring the sustainability and longevity of Graphile Worker and the +wider Graphile suite of developer tooling, sponsorship also gives you or your +company some additional benefits such as access to security announcements and +being featured in the README files of Graphile’s main open source projects. +Choose the tier which matches your funding goal, higher tiers come with more +benefits. + + + +## Development Support + + From 39f1421c06980e1cf3a9fbb583ffa2b17c38bcd5 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Thu, 24 Jul 2025 11:12:55 +0100 Subject: [PATCH 23/37] Update pricing --- website/src/pages/pricing.mdx | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/website/src/pages/pricing.mdx b/website/src/pages/pricing.mdx index 93d7412e..e1ebc93b 100644 --- a/website/src/pages/pricing.mdx +++ b/website/src/pages/pricing.mdx @@ -507,12 +507,9 @@ offer ends; saving you a minimum of $1300 over the regular price of $100 /month.
    From{" "} +<<<<<<< HEAD $1,500/mo {" "} +======= +>>>>>>> Reflect changes made in Crystal PR $899/mo USD
    @@ -545,9 +548,9 @@ offer ends; saving you a minimum of $1300 over the regular price of $100 /month.
    - Get in contact + Find out more
    From{" "} -<<<<<<< HEAD $1,500/mo {" "} -======= ->>>>>>> Reflect changes made in Crystal PR $899/mo USD
    @@ -661,13 +658,5 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -<<<<<<< HEAD -<<<<<<< HEAD Last reviewed: 21st April 2026 -======= - Last reviewed: July 2025 ->>>>>>> Update pricing -======= - Last reviewed: August 2025 ->>>>>>> Reflect changes made in Crystal PR From b6ca71efa4ce90b6f3b1e25944717344f539c02c Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Tue, 29 Jul 2025 16:55:23 +0100 Subject: [PATCH 24/37] Begin annual plan tier --- website/src/components/TiersPlus/index.js | 91 +++++++++++-------- .../components/TiersPlus/styles.module.css | 62 +++++-------- website/src/pages/sponsors.mdx | 7 ++ 3 files changed, 86 insertions(+), 74 deletions(-) diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index efaab1f3..80fe5fbc 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -5,26 +5,56 @@ import React from "react"; const TierList = [ { - title: "Private Advisor Offer", - tagline: "Development support in your chat server & code repository", + title: "Monthly Plan", + tagline: "Pay month-to-month with full flexibility", pricing: "$999", - annual: "$9,999", was: "$1,500", link: "https://github.com/sponsors/benjie/sponsorships?tier_id=42012", buttonText: "", - contact: "mailto:team@graphile.com?subject=Private%20Advisor%20enquiry", - contactText: "", + frequency: "per month", + comparison: "", + description: ( + <> +
      +
    • All the benefits of a Featured Sponsor and...
    • +
    • One-to-one access to the Graphile team throughout the year
    • +
    • + Priority support straight from the maintainer +
    • +
    • + Add the Graphile team to your chat server for timely responses +
    • +
    • Add the Graphile team to your GitHub/GitLab organization
    • +
    • Reference your code verbatim
    • +
    • Calls arranged as required
    • +
    • NDA available
    • +
    • + Access to discounted consultancy packages +
    • +
    • + The warm feeling that comes from knowing{" "} + + you’re making a significant difference to Graphile Worker’s + development and sustainability + +
    • +
    + + ), + }, + { + title: "Annual Plan", + tagline: "Maximum savings with full year commitment", + pricing: "$9,999", + was: "$11,988", + link: "mailto:team@graphile.com?subject=Private%20Advisor%20enquiry", + buttonText: "", + frequency: "per year", + comparison: "That's just $833.25/month", + badge: "Best Value - Save $1,999 ", + featured: true, description: ( <> -
    - Access development support for Graphile projects through the Private - Advisor tier, giving your organization access to the knowledge and - experience of the Graphile team for any issues you have with Graphile - Worker, PostGraphile and the wider Graphile suite, and other tools in - the ecosystem such as TypeScript, SQL, Node.js, GraphQL and more. If - you’re running any of the Graphile tools, you won’t find anyone more - qualified to help. -
    • All the benefits of a Featured Sponsor and...
    • One-to-one access to the Graphile team throughout the year
    • @@ -61,27 +91,26 @@ function Tier({ buttonText, description, pricing, - annual, was, - contact, - contactText, + frequency, + comparison, + badge, + featured, }) { return ( -
      +
      + {badge ?
      {badge}
      : null}

      {title}

      +

      {tagline}

      - {was}{" "} + {was} +
      {pricing}  - /month + {frequency} + {comparison}

      -

      - - or {annual} /year - - annual discount applied - -

      {buttonText} - - {contactText} -
      -

      {tagline}

      {description}

      ); diff --git a/website/src/components/TiersPlus/styles.module.css b/website/src/components/TiersPlus/styles.module.css index 15bad4c9..4ab2b5cd 100644 --- a/website/src/components/TiersPlus/styles.module.css +++ b/website/src/components/TiersPlus/styles.module.css @@ -1,20 +1,20 @@ .tiers { display: flex; width: 100%; - flex-direction: column; + flex-direction: row; } .tierRow { justify-content: center; gap: 2rem; display: flex; - flex-direction: column; } .tier { + position: relative; display: flex; flex-direction: column; - flex: 0 0 75%; + flex: 0 0 33%; justify-content: flex-start; align-items: flex-start; font-weight: normal; @@ -23,6 +23,25 @@ padding: 1rem; border: 2px solid var(--ifm-color-primary-darker); border-radius: 12px; + &.featured { + background-color: #fff4ec; + border: 3px solid var(--ifm-color-primary); + } +} + +.badge { + position: absolute; + left: 50%; + top: 0%; + transform: translate(-50%, -50%); + background-color: white; + border-radius: calc(infinity * 1px); + padding: 0.4rem; + .featured & { + background-color: var(--ifm-color-primary); + color: white; + font-weight: bold; + } } [data-theme="dark"] .tier { @@ -32,8 +51,8 @@ .banner { display: flex; width: 100%; - flex: 0 0 33%; justify-content: space-between; + flex-direction: column; } .info { @@ -105,38 +124,8 @@ background-color: var(--ifm-color-primary-lightest); } -.borderbutton { - composes: button; -} - -.tier:nth-child(n) .borderbutton { - background-color: transparent; - border: 1px solid var(--ifm-color-primary-darker); - color: var(--ifm-color-primary-darker); -} - -.tier:nth-child(n) .borderbutton:hover { - border: 1px solid var(--ifm-color-primary-darkest); - color: var(--ifm-color-primary-darkest); -} - -[data-theme="dark"] .tier:nth-child(n) .borderbutton { - border: 1px solid var(--ifm-color-primary-lightest); - color: var(--ifm-color-primary-lightest); -} - -[data-theme="dark"] .tier:nth-child(n) .borderbutton:hover { - border: 1px solid var(--ifm-color-primary); - color: var(--ifm-color-primary); - background-color: transparent; -} - .button:before { - content: "Join on GitHub Sponsors"; -} - -.borderbutton:before { - content: "Contact for bespoke service"; + content: "Start Plan"; } @media screen and (max-width: 1200px) { @@ -153,7 +142,4 @@ .button:before { content: "GitHub Sponsors"; } - .borderbutton:before { - content: "Contact"; - } } diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index 462ba439..66755371 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -155,4 +155,11 @@ benefits. ## Development Support +Access development support for Graphile projects through the Private Advisor +tier, giving your organization access to the knowledge and experience of the +Graphile team for any issues you have with Graphile Worker, PostGraphile and the +wider Graphile suite, and other tools in the ecosystem such as TypeScript, SQL, +Node.js, GraphQL and more. If you’re running any of the Graphile tools, you +won’t find anyone more qualified to help. + From ecbef4af92cd23afa769278d220f403a01a6273f Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 30 Jul 2025 17:57:10 +0100 Subject: [PATCH 25/37] Update TiersPlus to include annual plan --- website/src/components/TiersPlus/index.js | 80 +++++++++--------- .../components/TiersPlus/styles.module.css | 81 +++++++++++++++---- website/src/pages/sponsors.mdx | 23 ++++++ 3 files changed, 129 insertions(+), 55 deletions(-) diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index 80fe5fbc..f5b9801e 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -11,32 +11,28 @@ const TierList = [ was: "$1,500", link: "https://github.com/sponsors/benjie/sponsorships?tier_id=42012", buttonText: "", - frequency: "per month", - comparison: "", + frequency: "/mo", + comparison: "Cancel any time", + badge: "Updated August 2025", description: ( <>
        -
      • All the benefits of a Featured Sponsor and...
      • -
      • One-to-one access to the Graphile team throughout the year
      • - Priority support straight from the maintainer + Start today with payment through GitHub
      • - Add the Graphile team to your chat server for timely responses + Flexible +
      • +
      • New lower price for 2025
      • +
      • + Predictable monthly cost with no surprises
      • -
      • Add the Graphile team to your GitHub/GitLab organization
      • -
      • Reference your code verbatim
      • -
      • Calls arranged as required
      • -
      • NDA available
      • Access to discounted consultancy packages
      • - The warm feeling that comes from knowing{" "} - - you’re making a significant difference to Graphile Worker’s - development and sustainability - + Includes a formal contract for your procurement + process
      @@ -45,38 +41,35 @@ const TierList = [ { title: "Annual Plan", tagline: "Maximum savings with full year commitment", - pricing: "$9,999", - was: "$11,988", + pricing: "$899", + hint: "10% discount", + //was: "$11,988", link: "mailto:team@graphile.com?subject=Private%20Advisor%20enquiry", buttonText: "", - frequency: "per year", - comparison: "That's just $833.25/month", - badge: "Best Value - Save $1,999 ", + frequency: "/mo", + comparison: "Paid annually — $10,788/yr", + badge: "Best Value — Save $1,999", featured: true, description: ( <>
        -
      • All the benefits of a Featured Sponsor and...
      • -
      • One-to-one access to the Graphile team throughout the year
      • - Priority support straight from the maintainer + Lock in your rate for a full year +
      • + +
      • + Save money — pay once, enjoy the lowest rate
      • - Add the Graphile team to your chat server for timely responses + One invoice, one payment — no monthly admin + headaches
      • -
      • Add the Graphile team to your GitHub/GitLab organization
      • -
      • Reference your code verbatim
      • -
      • Calls arranged as required
      • -
      • NDA available
      • Access to discounted consultancy packages
      • - The warm feeling that comes from knowing{" "} - - you’re making a significant difference to Graphile Worker’s - development and sustainability - + Includes a formal contract for your procurement + process
      @@ -96,6 +89,7 @@ function Tier({ comparison, badge, featured, + hint, }) { return (
      @@ -103,14 +97,18 @@ function Tier({

      {title}

      -

      {tagline}

      -

      - {was} -
      - {pricing}  - {frequency} +
      {tagline}
      +
      + {was ? {was} : null}{" "} + + {pricing} + {frequency} + + {hint ? {hint} : null} +
      +
      {comparison} -

      +
      -

      {description}

      +
      {description}
      ); } diff --git a/website/src/components/TiersPlus/styles.module.css b/website/src/components/TiersPlus/styles.module.css index 4ab2b5cd..a9d6fdcb 100644 --- a/website/src/components/TiersPlus/styles.module.css +++ b/website/src/components/TiersPlus/styles.module.css @@ -1,7 +1,6 @@ .tiers { display: flex; - width: 100%; - flex-direction: row; + flex-direction: column; } .tierRow { @@ -14,7 +13,7 @@ position: relative; display: flex; flex-direction: column; - flex: 0 0 33%; + flex: 0 0 40%; justify-content: flex-start; align-items: flex-start; font-weight: normal; @@ -24,23 +23,37 @@ border: 2px solid var(--ifm-color-primary-darker); border-radius: 12px; &.featured { - background-color: #fff4ec; + background-color: #fff9f5; border: 3px solid var(--ifm-color-primary); } } +.hint { + background: rgb(230, 246, 230); + color: rgb(0, 49, 0); + padding: 0 0.8rem 0.1rem; + font-size: 0.8rem; + border-radius: calc(infinity * 1px); + margin-left: 1rem; + height: 1.5rem; +} + .badge { - position: absolute; + /* position: absolute; left: 50%; top: 0%; - transform: translate(-50%, -50%); + transform: translate(-50%, -50%); */ + margin: -1.8rem 0 0; background-color: white; border-radius: calc(infinity * 1px); - padding: 0.4rem; + border: 1px solid var(--ifm-color-primary-darker); + padding: 0rem 0.8rem 0.1rem; .featured & { background-color: var(--ifm-color-primary); + border: 1px solid var(--ifm-color-primary); color: white; font-weight: bold; + margin: -1.8rem auto 0; } } @@ -53,23 +66,35 @@ width: 100%; justify-content: space-between; flex-direction: column; + margin-top: 0.2rem; } .info { display: flex; flex-direction: column; justify-content: flex-start; - align-items: flex-start; + align-items: center; + > * { + text-align: center; + } } .title { color: var(--ifm-color-primary-darker); + font-size: 2rem; + font-weight: bold; + .featured & { + color: var(--ifm-color-primary); + } } .note { - font-size: 0.8rem; + font-size: 0.9rem; color: var(--ifm-color-primary-darker); font-weight: var(--ifm-font-weight-base); + .featured & { + color: var(--ifm-color-primary); + } } [data-theme="dark"] .title, @@ -78,16 +103,34 @@ } .tagline { + text-align: center; + font-size: 1rem; +} + +.priceline { font-weight: var(--ifm-heading-font-weight); + text-align: center; + font-size: 2rem; + display: flex; + align-items: center; } .price { font-weight: bold; } +.pricesub { + font-size: 1rem; + color: var(--ifm-color-primary-darker); + .featured & { + color: var(--ifm-color-primary); + } +} + .was { color: var(--ifm-color-gray-400); text-decoration: line-through; + margin-right: 1rem; } [data-theme="dark"] .was { @@ -99,27 +142,37 @@ padding: 0.5rem 0 0.5rem 0; } +.description li::marker { + font-size: 20px; + color: var(--ifm-color-primary-darker); + content: "✓ "; +} + .button { width: 100%; - margin: 0 0 1rem 0; + margin: 1rem 0 0 0; } -.tier .button { +.button { background-color: var(--ifm-color-primary-darker); border-color: var(--ifm-color-primary-darker); + .featured & { + background-color: var(--ifm-color-primary); + border-color: var(--ifm-color-primary); + } } -.tier .button:hover { +.button:hover { background-color: var(--ifm-color-primary-darkest); border-color: var(--ifm-color-primary-darkest); } -[data-theme="dark"] .tier .button { +[data-theme="dark"] .button { background-color: var(--ifm-color-primary); border-color: var(--ifm-color-primary); } -[data-theme="dark"] .tier .button:hover { +[data-theme="dark"] .button:hover { border: 1px solid var(--ifm-color-primary-lightest); background-color: var(--ifm-color-primary-lightest); } diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index 66755371..1b4c0123 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -162,4 +162,27 @@ wider Graphile suite, and other tools in the ecosystem such as TypeScript, SQL, Node.js, GraphQL and more. If you’re running any of the Graphile tools, you won’t find anyone more qualified to help. +
        +
      • All the benefits of a Featured Sponsor and...
      • +
      • One-to-one access to the Graphile team throughout the year
      • +
      • + Priority support straight from the maintainer +
      • +
      • Add the Graphile team to your chat server for timely responses
      • +
      • Add the Graphile team to your GitHub/GitLab organization
      • +
      • Reference your code verbatim
      • +
      • Calls arranged as required
      • +
      • NDA available
      • +
      • + Access to discounted consultancy packages +
      • +
      • + The warm feeling that comes from knowing{" "} + + you’re making a significant difference to Graphile Worker’s development + and sustainability + +
      • +
      + From 95dcf7852c2da7ef70f2c88228dad7599b8a5bfb Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 30 Jul 2025 18:07:14 +0100 Subject: [PATCH 26/37] copy tweak --- website/src/components/TiersPlus/index.js | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index f5b9801e..f7cfaf11 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -24,16 +24,9 @@ const TierList = [ Flexible
    • New lower price for 2025
    • -
    • - Predictable monthly cost with no surprises -
    • Access to discounted consultancy packages
    • -
    • - Includes a formal contract for your procurement - process -
    ), @@ -48,7 +41,7 @@ const TierList = [ buttonText: "", frequency: "/mo", comparison: "Paid annually — $10,788/yr", - badge: "Best Value — Save $1,999", + badge: "Best Value — Save $1,200", featured: true, description: ( <> @@ -68,8 +61,7 @@ const TierList = [ Access to discounted consultancy packages
  • - Includes a formal contract for your procurement - process + Formal contract for your procurement process
  • From 9ffe6c634993444bddc387b972dba5e9bdfe7b9c Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Thu, 31 Jul 2025 11:17:33 +0100 Subject: [PATCH 27/37] Tweak syles on TiersPlus --- website/src/components/Tiers/styles.module.css | 1 + website/src/components/TiersPlus/index.js | 6 +++--- website/src/components/TiersPlus/styles.module.css | 7 ------- website/src/pages/sponsors.mdx | 11 ++++------- 4 files changed, 8 insertions(+), 17 deletions(-) diff --git a/website/src/components/Tiers/styles.module.css b/website/src/components/Tiers/styles.module.css index 327a832a..453de46b 100644 --- a/website/src/components/Tiers/styles.module.css +++ b/website/src/components/Tiers/styles.module.css @@ -2,6 +2,7 @@ display: flex; width: 100%; flex-direction: row; + padding-bottom: 1rem; } .tierRow { diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index f7cfaf11..3c2cd331 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -10,7 +10,7 @@ const TierList = [ pricing: "$999", was: "$1,500", link: "https://github.com/sponsors/benjie/sponsorships?tier_id=42012", - buttonText: "", + buttonText: "Start Monthly Plan", frequency: "/mo", comparison: "Cancel any time", badge: "Updated August 2025", @@ -38,7 +38,7 @@ const TierList = [ hint: "10% discount", //was: "$11,988", link: "mailto:team@graphile.com?subject=Private%20Advisor%20enquiry", - buttonText: "", + buttonText: "Contact Graphile", frequency: "/mo", comparison: "Paid annually — $10,788/yr", badge: "Best Value — Save $1,200", @@ -118,7 +118,7 @@ function Tier({ export default function List() { return ( -
    +
    {TierList.map((props, idx) => ( diff --git a/website/src/components/TiersPlus/styles.module.css b/website/src/components/TiersPlus/styles.module.css index a9d6fdcb..5d4f1669 100644 --- a/website/src/components/TiersPlus/styles.module.css +++ b/website/src/components/TiersPlus/styles.module.css @@ -177,10 +177,6 @@ background-color: var(--ifm-color-primary-lightest); } -.button:before { - content: "Start Plan"; -} - @media screen and (max-width: 1200px) { .tierRow { flex-direction: column; @@ -192,7 +188,4 @@ .banner { flex-direction: column; } - .button:before { - content: "GitHub Sponsors"; - } } diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index 1b4c0123..963fd495 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -156,10 +156,10 @@ benefits. ## Development Support Access development support for Graphile projects through the Private Advisor -tier, giving your organization access to the knowledge and experience of the -Graphile team for any issues you have with Graphile Worker, PostGraphile and the -wider Graphile suite, and other tools in the ecosystem such as TypeScript, SQL, -Node.js, GraphQL and more. If you’re running any of the Graphile tools, you +sponsor tier, giving your organization access to the knowledge and experience of +the Graphile team for any issues you have with Graphile Worker, PostGraphile and +the wider Graphile suite, and other tools in the ecosystem such as TypeScript, +SQL, Node.js, GraphQL and more. If you’re running any of the Graphile tools, you won’t find anyone more qualified to help.
      @@ -173,9 +173,6 @@ won’t find anyone more qualified to help.
    • Reference your code verbatim
    • Calls arranged as required
    • NDA available
    • -
    • - Access to discounted consultancy packages -
    • The warm feeling that comes from knowing{" "} From 3ae60016f13e02b3301c879690cbc1341fb7c64e Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:18:30 +0100 Subject: [PATCH 28/37] Reflect changes made in Crystal PR --- .../TierPlusButtons/styles.module.css | 10 ++-- website/src/components/Tiers/index.js | 14 +++--- .../src/components/Tiers/styles.module.css | 5 +- website/src/components/TiersPlus/index.js | 14 +++--- .../components/TiersPlus/styles.module.css | 48 ++++++++++++++++--- website/src/pages/pricing.mdx | 4 ++ website/src/pages/sponsors.mdx | 42 ---------------- 7 files changed, 63 insertions(+), 74 deletions(-) diff --git a/website/src/components/TierPlusButtons/styles.module.css b/website/src/components/TierPlusButtons/styles.module.css index b1da2c5f..0eaed0ef 100644 --- a/website/src/components/TierPlusButtons/styles.module.css +++ b/website/src/components/TierPlusButtons/styles.module.css @@ -40,12 +40,8 @@ } [data-theme="dark"] .sponsorbutton { - border: 1px solid var(--ifm-color-primary-light); - background-color: var(--ifm-color-primary-light); -} - -[data-theme="dark"] .borderbutton { - color: black; + border: 1px solid var(--ifm-color-primary); + background-color: var(--ifm-color-primary); } [data-theme="dark"] .sponsorbutton:hover { @@ -55,7 +51,7 @@ [data-theme="dark"] .borderbutton:hover { border: 1px solid var(--ifm-color-primary-lightest); - background-color: var(--ifm-color-primary-lightest); + color: var(--ifm-color-lightest); } @media screen and (max-width: 995px) { diff --git a/website/src/components/Tiers/index.js b/website/src/components/Tiers/index.js index dd6c1ec8..453943ba 100644 --- a/website/src/components/Tiers/index.js +++ b/website/src/components/Tiers/index.js @@ -131,14 +131,12 @@ function Tier({ title, tagline, link, buttonText, description, pricing }) { export default function List() { return ( -
      -
      -
      - {TierList.map((props, idx) => ( - - ))} -
      +
      +
      + {TierList.map((props, idx) => ( + + ))}
      -
      +
    ); } diff --git a/website/src/components/Tiers/styles.module.css b/website/src/components/Tiers/styles.module.css index 453de46b..d17577c3 100644 --- a/website/src/components/Tiers/styles.module.css +++ b/website/src/components/Tiers/styles.module.css @@ -1,8 +1,10 @@ .tiers { + composes: wide from global; display: flex; width: 100%; flex-direction: row; - padding-bottom: 1rem; + padding-top: 0.5rem; + padding-bottom: 0.5rem; } .tierRow { @@ -19,7 +21,6 @@ align-items: flex-start; font-weight: normal; font-size: 0.9rem; - margin: 0.5rem; padding: 1rem; border: 2px solid var(--ifm-color-primary-darker); border-radius: 12px; diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index 3c2cd331..1bf5857e 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -118,14 +118,12 @@ function Tier({ export default function List() { return ( -
    -
    -
    - {TierList.map((props, idx) => ( - - ))} -
    +
    +
    + {TierList.map((props, idx) => ( + + ))}
    -
    +
    ); } diff --git a/website/src/components/TiersPlus/styles.module.css b/website/src/components/TiersPlus/styles.module.css index 5d4f1669..95dd18d1 100644 --- a/website/src/components/TiersPlus/styles.module.css +++ b/website/src/components/TiersPlus/styles.module.css @@ -1,6 +1,9 @@ .tiers { + composes: wide from global; display: flex; flex-direction: column; + padding-top: 2rem; + padding-bottom: 2rem; } .tierRow { @@ -9,7 +12,8 @@ display: flex; } -.tier { +.tier, +.tierSupport { position: relative; display: flex; flex-direction: column; @@ -18,7 +22,6 @@ align-items: flex-start; font-weight: normal; font-size: 0.9rem; - margin: 0.5rem; padding: 1rem; border: 2px solid var(--ifm-color-primary-darker); border-radius: 12px; @@ -28,6 +31,28 @@ } } +[data-theme="dark"] .tier, +[data-theme="dark"] .tierSupport { + border: 2px solid var(--ifm-color-primary-light); + &.featured { + background-color: #000a15; + border: 3px solid var(--ifm-color-primary); + } +} + +.tierSupport { + flex: 0 0 100%; + &.featured { + background-color: transparent; + } +} + +[data-theme="dark"] .tierSupport { + &.featured { + background-color: transparent; + } +} + .hint { background: rgb(230, 246, 230); color: rgb(0, 49, 0); @@ -39,10 +64,6 @@ } .badge { - /* position: absolute; - left: 50%; - top: 0%; - transform: translate(-50%, -50%); */ margin: -1.8rem 0 0; background-color: white; border-radius: calc(infinity * 1px); @@ -107,7 +128,8 @@ font-size: 1rem; } -.priceline { +.priceline, +.pricelineSupport { font-weight: var(--ifm-heading-font-weight); text-align: center; font-size: 2rem; @@ -115,6 +137,10 @@ align-items: center; } +.pricelineSupport { + align-items: baseline; +} + .price { font-weight: bold; } @@ -127,6 +153,14 @@ } } +[data-theme="dark"] .pricesub { + color: var(--ifm-color-primary-lighter); +} + +[data-theme="dark"] .featured .pricesub { + color: var(--ifm-color-primary); +} + .was { color: var(--ifm-color-gray-400); text-decoration: line-through; diff --git a/website/src/pages/pricing.mdx b/website/src/pages/pricing.mdx index e1ebc93b..2e80f418 100644 --- a/website/src/pages/pricing.mdx +++ b/website/src/pages/pricing.mdx @@ -658,5 +658,9 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` +<<<<<<< HEAD Last reviewed: 21st April 2026 +======= + Last reviewed: August 2025 +>>>>>>> Reflect changes made in Crystal PR diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index 963fd495..fdcdf527 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -141,45 +141,3 @@ come, they need to be well directed and financially sustainable. for years to come is through monthly sponsorship.** Crowd-sourced funding enables us to spend the most time directly working on improving the software, which you and other users then benefit from. - -## Sponsor tiers & benefits - -As well as ensuring the sustainability and longevity of Graphile Worker and the -wider Graphile suite of developer tooling, sponsorship also gives you or your -company some additional benefits such as access to security announcements and -being featured in the README files of Graphile’s main open source projects. -Choose the tier which matches your funding goal, higher tiers come with more -benefits. - - - -## Development Support - -Access development support for Graphile projects through the Private Advisor -sponsor tier, giving your organization access to the knowledge and experience of -the Graphile team for any issues you have with Graphile Worker, PostGraphile and -the wider Graphile suite, and other tools in the ecosystem such as TypeScript, -SQL, Node.js, GraphQL and more. If you’re running any of the Graphile tools, you -won’t find anyone more qualified to help. - -
      -
    • All the benefits of a Featured Sponsor and...
    • -
    • One-to-one access to the Graphile team throughout the year
    • -
    • - Priority support straight from the maintainer -
    • -
    • Add the Graphile team to your chat server for timely responses
    • -
    • Add the Graphile team to your GitHub/GitLab organization
    • -
    • Reference your code verbatim
    • -
    • Calls arranged as required
    • -
    • NDA available
    • -
    • - The warm feeling that comes from knowing{" "} - - you’re making a significant difference to Graphile Worker’s development - and sustainability - -
    • -
    - - From 144d1c95b336742064268ab99ae134dec07a58ba Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Fri, 1 Aug 2025 18:37:09 +0100 Subject: [PATCH 29/37] tweak dark styles --- .../TierPlusButtons/styles.module.css | 10 +++++-- .../components/TiersPlus/styles.module.css | 30 ++++++++++++++++--- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/website/src/components/TierPlusButtons/styles.module.css b/website/src/components/TierPlusButtons/styles.module.css index 0eaed0ef..b1da2c5f 100644 --- a/website/src/components/TierPlusButtons/styles.module.css +++ b/website/src/components/TierPlusButtons/styles.module.css @@ -40,8 +40,12 @@ } [data-theme="dark"] .sponsorbutton { - border: 1px solid var(--ifm-color-primary); - background-color: var(--ifm-color-primary); + border: 1px solid var(--ifm-color-primary-light); + background-color: var(--ifm-color-primary-light); +} + +[data-theme="dark"] .borderbutton { + color: black; } [data-theme="dark"] .sponsorbutton:hover { @@ -51,7 +55,7 @@ [data-theme="dark"] .borderbutton:hover { border: 1px solid var(--ifm-color-primary-lightest); - color: var(--ifm-color-lightest); + background-color: var(--ifm-color-primary-lightest); } @media screen and (max-width: 995px) { diff --git a/website/src/components/TiersPlus/styles.module.css b/website/src/components/TiersPlus/styles.module.css index 95dd18d1..8f0e27d2 100644 --- a/website/src/components/TiersPlus/styles.module.css +++ b/website/src/components/TiersPlus/styles.module.css @@ -54,8 +54,8 @@ } .hint { - background: rgb(230, 246, 230); - color: rgb(0, 49, 0); + background: rgb(221, 245, 221); + color: #059669; padding: 0 0.8rem 0.1rem; font-size: 0.8rem; border-radius: calc(infinity * 1px); @@ -63,6 +63,11 @@ height: 1.5rem; } +[data-theme="dark"] .hint { + background: #059669; + color: rgb(230, 246, 230); +} + .badge { margin: -1.8rem 0 0; background-color: white; @@ -78,8 +83,15 @@ } } -[data-theme="dark"] .tier { - border: 2px solid var(--ifm-color-primary); +[data-theme="dark"] .badge { + background-color: var(--ifm-color-primary-light); + border-color: var(--ifm-color-primary-light); + color: black; +} + +[data-theme="dark"] .featured .badge { + background-color: var(--ifm-color-primary); + border-color: var(--ifm-color-primary); } .banner { @@ -120,6 +132,11 @@ [data-theme="dark"] .title, [data-theme="dark"] .note { + color: var(--ifm-color-primary-light); +} + +[data-theme="dark"] .featured .title, +[data-theme="dark"] .featured .note { color: var(--ifm-color-primary); } @@ -202,6 +219,11 @@ } [data-theme="dark"] .button { + background-color: var(--ifm-color-primary-light); + border-color: var(--ifm-color-primary-light); +} + +[data-theme="dark"] .featured .button { background-color: var(--ifm-color-primary); border-color: var(--ifm-color-primary); } From 92461811a54a77d5ed2a01224a91ad5be9ef9a5d Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Thu, 18 Sep 2025 11:07:17 +0100 Subject: [PATCH 30/37] Update date and color contrast of dev support boxes --- website/src/components/Sponsor/index.js | 20 +------------------- website/src/components/TiersPlus/index.js | 2 +- 2 files changed, 2 insertions(+), 20 deletions(-) diff --git a/website/src/components/Sponsor/index.js b/website/src/components/Sponsor/index.js index 38c8d2b8..17392703 100644 --- a/website/src/components/Sponsor/index.js +++ b/website/src/components/Sponsor/index.js @@ -35,24 +35,6 @@ export default function Sponsor({ const level = useContext(SponsorContext); const showAvatar = level === "featured" || level === "leaders"; - function Avatar({ src }) { - return src ? ( - - ) : ( - - ); - } - - function LinkTo({ href }) { - return href ? ( - - {name} - - ) : ( -
    {name}
    - ); - } - return (
    ) : null} - +
    ); } diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index 1bf5857e..c20ad426 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -13,7 +13,7 @@ const TierList = [ buttonText: "Start Monthly Plan", frequency: "/mo", comparison: "Cancel any time", - badge: "Updated August 2025", + badge: "Updated September 2025", description: ( <>
      From a1b24c42ee1f3e6b42915f68bd8b068c824ec063 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 14 Jan 2026 17:10:11 +0000 Subject: [PATCH 31/37] Update for 2026 --- website/src/components/TiersPlus/index.js | 5 ++--- website/src/pages/sponsors.mdx | 25 +++++++++++++++++------ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index c20ad426..ff9b792c 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -9,11 +9,11 @@ const TierList = [ tagline: "Pay month-to-month with full flexibility", pricing: "$999", was: "$1,500", - link: "https://github.com/sponsors/benjie/sponsorships?tier_id=42012", + link: "https://github.com/sponsors/benjie/sponsorships?tier_id=531702", buttonText: "Start Monthly Plan", frequency: "/mo", comparison: "Cancel any time", - badge: "Updated September 2025", + badge: "Discount extended into 2026", description: ( <>
        @@ -23,7 +23,6 @@ const TierList = [
      • Flexible
      • -
      • New lower price for 2025
      • Access to discounted consultancy packages
      • diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index fdcdf527..7a02e123 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -42,14 +42,15 @@ to fund ongoing development on Graphile Worker through sponsorship. THANK YOU! avatar="/images/sponsors/principiamentis.png" business /> - + + - - + + - - +<<<<<<< HEAD name="deliver.media" avatar="/images/sponsors/deliverdotmedia.jpg" business /> +======= + +>>>>>>> Update for 2026 - + +<<<<<<< HEAD +======= + + +>>>>>>> Update for 2026 From 40e91d3758f2db79b1ac6f8df1fece0ddfc34248 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Wed, 28 Jan 2026 15:04:07 +0000 Subject: [PATCH 32/37] update tier boxes --- website/src/components/TiersPlus/index.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/website/src/components/TiersPlus/index.js b/website/src/components/TiersPlus/index.js index ff9b792c..546b5ac9 100644 --- a/website/src/components/TiersPlus/index.js +++ b/website/src/components/TiersPlus/index.js @@ -8,12 +8,10 @@ const TierList = [ title: "Monthly Plan", tagline: "Pay month-to-month with full flexibility", pricing: "$999", - was: "$1,500", link: "https://github.com/sponsors/benjie/sponsorships?tier_id=531702", buttonText: "Start Monthly Plan", frequency: "/mo", comparison: "Cancel any time", - badge: "Discount extended into 2026", description: ( <>
          From 8986a5f79c680d86e1fe8afb5ffe4a154df0952d Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Tue, 17 Feb 2026 16:18:09 +0000 Subject: [PATCH 33/37] Add new sponsor details --- website/src/pages/sponsors.mdx | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index 7a02e123..23df4702 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -76,31 +76,19 @@ to fund ongoing development on Graphile Worker through sponsorship. THANK YOU! -<<<<<<< HEAD - name="deliver.media" avatar="/images/sponsors/deliverdotmedia.jpg" business /> -======= + + ->>>>>>> Update for 2026 - - + -<<<<<<< HEAD - -======= - - ->>>>>>> Update for 2026 + + From 64aae6dfda60225ac7fb3e0f9aa4ceb04d326509 Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Tue, 17 Feb 2026 16:37:09 +0000 Subject: [PATCH 34/37] Update pricing page, licence date --- website/src/pages/pricing.mdx | 4 ---- website/src/pages/support.mdx | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/website/src/pages/pricing.mdx b/website/src/pages/pricing.mdx index 2e80f418..e1ebc93b 100644 --- a/website/src/pages/pricing.mdx +++ b/website/src/pages/pricing.mdx @@ -658,9 +658,5 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -<<<<<<< HEAD Last reviewed: 21st April 2026 -======= - Last reviewed: August 2025 ->>>>>>> Reflect changes made in Crystal PR diff --git a/website/src/pages/support.mdx b/website/src/pages/support.mdx index 89e36064..87deee5b 100644 --- a/website/src/pages/support.mdx +++ b/website/src/pages/support.mdx @@ -61,7 +61,7 @@ Plus, receive recognition as a Featured Sponsor:
        • - Access to PostGraphile V4 Pro and{" "} + Access to Graphile Worker Pro and{" "} graphile-pro sponsors only project repository From 59bd9ed1071c6e3164ebd11684ca3372da5e1e6b Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Tue, 21 Apr 2026 11:08:04 +0100 Subject: [PATCH 35/37] Update date --- website/src/components/Sponsor/styles.module.css | 3 --- 1 file changed, 3 deletions(-) diff --git a/website/src/components/Sponsor/styles.module.css b/website/src/components/Sponsor/styles.module.css index 2f2c5f29..19f98ae9 100644 --- a/website/src/components/Sponsor/styles.module.css +++ b/website/src/components/Sponsor/styles.module.css @@ -8,13 +8,10 @@ padding: 1rem; flex: 0 0 18rem; font-size: 1.2rem; -<<<<<<< HEAD -======= } .leaders { flex: 0 0 12rem; ->>>>>>> Finish initial styling to match crystal websites } .featured, From e10fa19d347c8f703c4ce8ff95b9840fddecfc6d Mon Sep 17 00:00:00 2001 From: Jem Gillam <6413628+jemgillam@users.noreply.github.com> Date: Tue, 21 Apr 2026 11:32:52 +0100 Subject: [PATCH 36/37] Rebase on main --- website/src/pages/sponsors.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index 23df4702..31b83280 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -75,7 +75,6 @@ to fund ongoing development on Graphile Worker through sponsorship. THANK YOU! - Date: Tue, 21 Apr 2026 12:32:20 +0100 Subject: [PATCH 37/37] Update sponsors to 2026 --- website/src/pages/pricing.mdx | 3 --- website/src/pages/sponsors.mdx | 20 ++------------------ 2 files changed, 2 insertions(+), 21 deletions(-) diff --git a/website/src/pages/pricing.mdx b/website/src/pages/pricing.mdx index e1ebc93b..ae355fea 100644 --- a/website/src/pages/pricing.mdx +++ b/website/src/pages/pricing.mdx @@ -507,9 +507,6 @@ offer ends; saving you a minimum of $1300 over the regular price of $100 /month.
    From{" "} - - $1,500/mo - {" "} $899/mo USD
    diff --git a/website/src/pages/sponsors.mdx b/website/src/pages/sponsors.mdx index 31b83280..d4874ec3 100644 --- a/website/src/pages/sponsors.mdx +++ b/website/src/pages/sponsors.mdx @@ -21,12 +21,6 @@ to fund ongoing development on Graphile Worker through sponsorship. THANK YOU! - - - - - - - - ## Why are Graphile projects “crowd-funded open-source”? Many of our projects are open-source under the permissive MIT license to give @@ -141,3 +123,5 @@ come, they need to be well directed and financially sustainable. for years to come is through monthly sponsorship.** Crowd-sourced funding enables us to spend the most time directly working on improving the software, which you and other users then benefit from. + +