import {
Box,
Button,
Card,
Container,
Flex,
Grid,
Heading,
Text,
Link
} from 'theme-ui'
import Meta from '@hackclub/meta'
import Icon from '@hackclub/icons'
import Head from 'next/head'
import Nav from '../components/nav'
import Footer from '../components/footer'
import { Octokit } from '@octokit/rest'
import ForceTheme from '../components/force-theme'
export const BankProject = ({ name, url }) => (
svg': {
opacity: '0',
transition: '0.3s ease-in-out'
},
'&:hover > svg': {
opacity: '1'
}
}}
>
{name}
)
const Page = ({ repos, transparentAccounts }) => (
<>
Open Source at Hack Club
Explore our finances, code, planning documents and more.
Finances
All open sourced through Hack Club Bank Transparency Mode.
{transparentAccounts.map(account => (
))}
Events
Includes planning documents, partnership emails, meeting notes etc.
Content
GitHub Repositories
Want to contribute?
{repos
.sort(function (a, b) {
var keyA = a.stargazers_count,
keyB = b.stargazers_count
if (keyA < keyB) return 1
if (keyA > keyB) return -1
return 0
})
.map(repo => (
{repo.name}
{repo.description?.replace(
/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g,
''
)}
{repo.stargazers_count} ★
))}
>
)
export default Page
export async function getStaticProps() {
const octokit = new Octokit({
auth: process.env.GITHUB
})
const repos = await octokit.paginate('GET /orgs/{org}/repos', {
org: 'hackclub'
})
const transparentAccounts = (
await fetch('https://bank.hackclub.com/api/v3/organizations').then(res =>
res.json()
)
).filter(account => account.category.replaceAll(' ', '_') === 'hack_club_hq')
return { props: { repos, transparentAccounts }, revalidate: 30 }
}