Sponsorkit
π Toolkit for generating sponsors images π
Toolkit for fetching sponsors info and generating sponsors images. The project is written primarily in TypeScript, distributed under the MIT License license, first published in 2022. Key topics include: github-sponsors, sponsors.
SponsorKit
Toolkit for fetching sponsors info and generating sponsors images.
Supports:
Usage
Create .env file with:
ini; GitHub provider. ; Token requires the `read:user` and `read:org` scopes. SPONSORKIT_GITHUB_TOKEN= SPONSORKIT_GITHUB_LOGIN= ; Optional data mode: ; - sponsors: people sponsoring you (default) ; - sponsees: people you have sponsored, including past sponsorships SPONSORKIT_MODE=sponsors ; Patreon provider. ; Create v2 API key at https://www.patreon.com/portal/registration/register-clients ; and use the "Creatorβs Access Token". SPONSORKIT_PATREON_TOKEN= ; OpenCollective provider. ; Create an API key at https://opencollective.com/applications SPONSORKIT_OPENCOLLECTIVE_KEY= ; and provide the ID, slug or GitHub handle of your account. SPONSORKIT_OPENCOLLECTIVE_ID= ; or SPONSORKIT_OPENCOLLECTIVE_SLUG= ; or SPONSORKIT_OPENCOLLECTIVE_GH_HANDLE= ; If it is a personal account, set it to `person`. Otherwise not set or set to `collective` SPONSORKIT_OPENCOLLECTIVE_TYPE= ; Afdian provider. ; Get user_id at https://afdian.com/dashboard/dev SPONSORKIT_AFDIAN_USER_ID= ; Create token at https://afdian.com/dashboard/dev SPONSORKIT_AFDIAN_TOKEN= ; Polar provider. ; Get your token at https://polar.sh/settings SPONSORKIT_POLAR_TOKEN= ; The name of the organization to fetch sponsorships from. SPONSORKIT_POLAR_ORGANIZATION= ; Liberapay provider. ; The name of the profile. SPONSORKIT_LIBERAPAY_LOGIN=
Only one provider is required to be configured.
Run:
basenpx sponsorkit
Example Setup | GitHub Actions Setup | Generated SVG
Configurations
Create sponsorkit.config.js file with:
tsimport { defineConfig, tierPresets } from 'sponsorkit' export default defineConfig({ // Data mode: // - sponsors: people sponsoring you (default) // - sponsees: people you have sponsored, including past sponsorships mode: 'sponsors', // Providers configs github: { login: 'antfu', type: 'user', }, opencollective: { // ... }, patreon: { // ... }, afdian: { // ... }, polar: { // ... }, liberapay: { // ... }, // Rendering configs width: 800, renderer: 'tiers', // or 'circles' formats: ['json', 'svg', 'png', 'webp'], tiers: [ // Past sponsors, currently only supports GitHub { title: 'Past Sponsors', monthlyDollars: -1, preset: tierPresets.xs, }, // Default tier { title: 'Backers', preset: tierPresets.base, }, { title: 'Sponsors', monthlyDollars: 10, preset: tierPresets.medium, }, { title: 'Silver Sponsors', monthlyDollars: 50, preset: tierPresets.large, }, { title: 'Gold Sponsors', monthlyDollars: 100, preset: tierPresets.xl, }, ], })
Also check the example.
Programmatic Utilities
You can also use SponsorKit programmatically:
tsimport { fetchSponsors } from 'sponsorkit' const sponsors = await fetchSponsors({ github: { token, login, }, // ... })
Check the type definition or source code for more utils available.
Renderers
We provide two renderers built-in:
tiers: Render sponsors in tiers.circles: Render sponsors in packed circles.
Tiers Renderer
<p align="center"> <a href="https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg"> <img src='https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg' alt="Sponsors"/> </a> </p>tsexport default defineConfig({ renderer: 'tiers', // ... })
Circles Renderer
<p align="center"> <a href="https://cdn.jsdelivr.net/gh/antfu/static/sponsors.circles.svg"> <img src='https://cdn.jsdelivr.net/gh/antfu/static/sponsors.circles.svg' alt="Sponsors"/> </a> </p>tsexport default defineConfig({ renderer: 'circles', // ... })
Multiple Renders
We also support rendering multiple images at once with different configurations, via renders field:
tsimport { defineConfig, tierPresets } from 'sponsorkit' export default defineConfig({ // Providers configs github: { /* ... */ }, // Default configs width: 800, tiers: [ /* ... */ ], // Define multiple renders, each will inherit the top-level configs renders: [ { name: 'sponsors.tiers', formats: ['svg'], }, { name: 'sponsors.wide', width: 1200, }, { name: 'sponsors.circles', renderer: 'circles', width: 600, }, // ... ], })
License
MIT License Β© 2022 Anthony Fu
Contributors
Showing top 12 contributors by commit count.
