diff --git a/Makefile b/Makefile
index 99cdf820887..49847513c9d 100644
--- a/Makefile
+++ b/Makefile
@@ -2,17 +2,25 @@ REPO_DIR=$(shell pwd)
help:
@echo "\SCRIPTS\n"
- @echo "make github.users # pull a list of all contributors"
+ @echo "make github.contributors # pull a list of all contributors"
@echo "make github.issues # pull a list of all issue creators"
@echo "make github.repos # pull a list of our repos"
@echo "make github.traction # get a history of stargazers for our individual repos"
-github.users:
- curl -sS https://api.github.com/repos/supabase/supabase/contributors \
- | jq -r 'map_values({username: .login, avatar_url: .avatar_url}) \
+github.contributors.%:
+ curl -sS https://api.github.com/repos/supabase/$*/contributors \
+ | jq -r 'map_values({ username: .login }) \
| unique \
| sort_by(.username)' \
- > $(REPO_DIR)/web/src/data/contributors/contributors.json
+ > $(REPO_DIR)/web/src/data/contributors/$*.json
+
+.PHONY: github.rcontributorsepos
+github.contributors: \
+ github.contributors.supabase \
+ github.contributors.supabase-js \
+ github.contributors.supabase-py \
+ github.contributors.supabase-flutter \
+ github.contributors.supabase-dart
github.issues:
curl -sS https://api.github.com/repos/supabase/supabase/issues \
diff --git a/web/docs/handbook/contributing.mdx b/web/docs/handbook/contributing.mdx
index 944622e624d..f831852812c 100644
--- a/web/docs/handbook/contributing.mdx
+++ b/web/docs/handbook/contributing.mdx
@@ -4,42 +4,22 @@ title: Contributing
description: Want to help?
---
+import Sponsors from '../../src/components/Sponsors'
+
## How to contribute
Want to contribute? Why not jump into our GitHub repo and:
+- [Sponsor Supabase](https://github.com/sponsors/supabase).
+- [Answer Discussions](https://github.com/supabase/supabase/discussions).
- Submit an issue.
- Report a performance issue or a part of the documentation that you find confusing.
- Create a pull request.
-- Try one of our products and give feedback.
-- Translate this website.
-- [Vote on a new client library](https://github.com/supabase/supabase/issues/5) for your favorite language.
+- [Translate our Readme](https://github.com/supabase/supabase/issues/1341).
+- Try our products and give feedback.
- Spread the word if you like what we are doing.
-- Add your project or company to our showcase.
-## Contributors
-
-To add yourself as a contributor:
-
-Open [this page](https://github.com/supabase/supabase/blob/master/web/docs/handbook/contributing.mdx) on GitHub and then click the pencil icon.
-
-
-
-Enter your GitHub profile name and link on a new line.
-
-
-
-Enter a title for your pull request and click "Propose Changes":
-
-
-
-One of the Supabase maintainers will approve your PR in the next few hours.
-
-
-[awalias](https://github.com/awalias).
-[kiwicopple](https://github.com/kiwicopple).
-[abhinav-TB](https://github.com/abhinav-TB).
-[jacobfenger](https://github.com/jacobfenger).
-
+## Sponsors
+
\ No newline at end of file
diff --git a/web/docs/handbook/supasquad.mdx b/web/docs/handbook/supasquad.mdx
new file mode 100644
index 00000000000..05a790dad38
--- /dev/null
+++ b/web/docs/handbook/supasquad.mdx
@@ -0,0 +1,76 @@
+---
+id: supasquad
+title: SupaSquad
+description: Supabase Advocate program
+---
+
+The SupaSquad is an official Supabase advocate program where community members help build and manage the Supabase community.
+
+- Official recognition in the Supabase community.
+- Direct connection to the Supabase team.
+- Help steer the Supabase community.
+
+## Requirements
+
+As a member of the Squad, you choose the approach where you'll provide the most value.
+You can help in one of five ways:
+
+### Maintainer
+
+Help maintain Supabase repositories. This includes building client librararies, managing issues, and fixing bugs.
+
+### Expert
+
+Answer user questions on Github [Discussions](https://github.com/supabase/supabase/discussions), Discord, and various other social platforms.
+
+### Advocate
+
+Spread the word on social channels and help to answer Supabase-related questions in the broader community and social channels.
+
+### Builder
+
+Build Supabase examples, blog about them, and them add to the [SupaSquad GitHub Org](https://github.com/supasquad).
+
+### Author
+
+Write guest blog posts, create documentation, and help Supabase global expansion through translation.
+
+## Benefits for SupaSquad members
+
+- Access to a Supabase Discord channel providing direct communication with the team, Discord badges, and elevated privileges.
+- Special AMA sessions with members of the Supabase team.
+- Monthly DevRel committee call with industry-leading Developer Advocates (many of whom are [angel investors](https://supabase.io/blog/2021/03/25/angels-of-supabase)), where you can learn from the best.
+- We'll help you build your audience by promoting content via the Supabase social channels.
+- Featured profile on Supabase website.
+- Early access to new features (and the opportunity to provide feedback to the team!).
+- Free credits that you can use for Squad efforts.
+- Direct access to members of the Supabase team for questions, suggestions, etc.
+- Help shape the future of the program.
+- Invited to the [SupaSquad GitHub Org](https://github.com/supasquad) to collaborate with the other squad members.
+- Exclusive Supabase Team swag drops usually exclusively reserved to the Supabase core team.
+
+## How to join
+
+
+1. Apply to join the program using [this form](https://airtable.com/shr0FtLqLfhpuEya8).
+2. We will start taking interviewing members from `1 September 2021`.
+3. Entry is capped to 20 founding members so we can grow the community at a healthy pace and provide a great experience to all new users.
+4. Membership is valid for one year, and can be renewed every year.
+
+
+## FAQs
+
+
+ Why are you only admitting 20 new members?
+ The entire Supabase team is only 20 people, so as you can imagine adding another 20 people sounds like a lot to us! We wish we could admit everyone who wanted to join.
+ But we also want to make sure everyone who joins the Squad has an awesome experience. In the future we will probably expand the intake to include a monthly quota.
+
+
+ What is expected?
+ Mostly just enthusiasm. If you are interested in Open Source and want to get involved, the SupaSquad program is a great channel. You'll be given opportunities to contribute
+ to the community in whatever ways match your skillset.
+
+
+ What if I become too busy to contribute?
+ No worries! The program isn't a job. It's just an opportunity to build your skillset and audience within the Supabase ecosystem.
+
\ No newline at end of file
diff --git a/web/sidebars.js b/web/sidebars.js
index 7b387d05ece..b1bfbc3fa8d 100755
--- a/web/sidebars.js
+++ b/web/sidebars.js
@@ -97,7 +97,13 @@ module.exports = {
type: 'category',
label: 'See Also',
collapsed: false,
- items: ['handbook/contributing', 'company/terms', 'company/privacy', 'company/aup'],
+ items: [
+ 'handbook/contributing',
+ 'handbook/supasquad',
+ 'company/terms',
+ 'company/privacy',
+ 'company/aup',
+ ],
},
],
guides: [
diff --git a/web/src/components/Sponsors.js b/web/src/components/Sponsors.js
new file mode 100644
index 00000000000..1e1465dfaac
--- /dev/null
+++ b/web/src/components/Sponsors.js
@@ -0,0 +1,71 @@
+import React from 'react'
+import sponsors from '../data/sponsors.json'
+
+
+export default function Sponsors() {
+
+ const tiers = [
+ {
+ tier_name: '$5,000 a month',
+ heading: 'Enterprise: $5,000 per month',
+ transactions: sponsors.filter((x) => (x.tier == '$5,000 a month')),
+ },
+ {
+ tier_name: '$2,500 a month',
+ heading: 'Agency: $2,500 per month',
+ transactions: sponsors.filter((x) => (x.tier == '$2,500 a month')),
+ },
+ {
+ tier_name: '$1,000 a month',
+ heading: 'Startup: $1,000 per month',
+ transactions: sponsors.filter((x) => (x.tier == '$1,000 a month')),
+ },
+ {
+ tier_name: '$49 a month',
+ heading: 'Evangelist: $49 per month',
+ transactions: sponsors.filter((x) => (x.tier == '$49 a month')),
+ },
+ {
+ tier_name: '$19 a month',
+ heading: 'Supporter: $19 per month',
+ transactions: sponsors.filter((x) => (x.tier == '$19 a month')),
+ },
+ {
+ tier_name: '$5 a month',
+ heading: 'Contributor: $5 per month',
+ transactions: sponsors.filter((x) => (x.tier == '$5 a month')),
+ },
+ ]
+
+ return (
+
+
+ {tiers.map(
+ (t) =>
+ !!t.transactions.length && (
+ <>
+
{t.heading}
+
+ {t.transactions.map((x) => (
+
+ ))}
+
+
+ >
+ )
+ )}
+
+
+ )
+}
+
diff --git a/web/src/pages/oss.js b/web/src/pages/oss.js
index 8cede60cc2c..63b31f9d843 100644
--- a/web/src/pages/oss.js
+++ b/web/src/pages/oss.js
@@ -6,51 +6,19 @@ import maintainers from '../data/maintainers.json'
import GithubCard from '../components/GithubCard'
import { repos } from '../data/github'
+import Sponsors from '../components/Sponsors'
+
export default function Oss() {
const [activePill, setActivePill] = React.useState('All')
const context = useDocusaurusContext()
const { siteConfig = {} } = context
-
-
const maintainerTags = maintainers
.reduce((acc, x) => acc.concat(x.tags), []) // get all tags
.filter((v, i, a) => a.indexOf(v) === i) // remove duplicates
.sort((a, b) => a.localeCompare(b)) // alphabetical
const maintainerPills = ['All'].concat(maintainerTags)
- const tiers = [
- {
- tier_name: '$5,000 a month',
- heading: 'Enterprise: $5,000 per month',
- transactions: sponsors.filter((x) => (x.tier == '$5,000 a month')),
- },
- {
- tier_name: '$2,500 a month',
- heading: 'Agency: $2,500 per month',
- transactions: sponsors.filter((x) => (x.tier == '$2,500 a month')),
- },
- {
- tier_name: '$1,000 a month',
- heading: 'Startup: $1,000 per month',
- transactions: sponsors.filter((x) => (x.tier == '$1,000 a month')),
- },
- {
- tier_name: '$49 a month',
- heading: 'Evangelist: $49 per month',
- transactions: sponsors.filter((x) => (x.tier == '$49 a month')),
- },
- {
- tier_name: '$19 a month',
- heading: 'Supporter: $19 per month',
- transactions: sponsors.filter((x) => (x.tier == '$19 a month')),
- },
- {
- tier_name: '$5 a month',
- heading: 'Contributor: $5 per month',
- transactions: sponsors.filter((x) => (x.tier == '$5 a month')),
- },
- ]
-
+
return (
@@ -71,30 +39,7 @@ export default function Oss() {
Sponsors
- {tiers.map(
- (t) =>
- !!t.transactions.length && (
- <>
-
{t.heading}
-
- {t.transactions.map((x) => (
-
- ))}
-
-
- >
- )
- )}
+
@@ -163,38 +108,3 @@ export default function Oss() {
)
}
-
-function ContributorCard({ title, description, href, stars, handle }) {
- return (
-
-
-
- {title.toUpperCase()}
-
- {description}
-
-
-
-
@{handle}
-
{stars} ★
-
-
- )
-}
-
-const styles = {
- hr: {
- margin: '15px 0 10px 0',
- },
- h3: {
- margin: 0,
- textTransform: 'capitalize',
- },
- cardBase: {
- display: 'flex',
- flexDirection: 'row',
- justifyContent: 'space-between',
- padding: '0 15px 10px 15px',
- fontSize: '0.8em',
- },
-}