From a28be424becfb6cb922d2990b9af561988a3ccf0 Mon Sep 17 00:00:00 2001 From: Malted Date: Thu, 31 Aug 2023 21:49:37 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20Format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/donate/sprigForm.js | 4 +- components/elon.mdx | 4 +- components/hcb/apply/address-input.js | 81 +++++---- components/hcb/apply/personal-form.js | 26 +-- components/hcb/everything.js | 4 +- components/hcb/features.js | 5 +- components/hcb/first/testimonials.js | 4 +- components/hcb/landing.js | 57 ++++--- components/hcb/nonprofits.js | 5 +- components/hcb/run.js | 4 +- components/hcb/testimonials.js | 8 +- components/hcb/tooltip.js | 52 +++--- components/index/cards/hcb.js | 4 +- components/index/cards/outernet.js | 7 +- components/slack/join-form.js | 6 +- components/winter/recap.js | 4 +- lib/carousel.json | 14 +- middleware.js | 6 +- next.config.js | 4 +- pages/api/github.js | 23 +-- pages/api/hcb/apply.js | 2 +- pages/api/slack.js | 12 +- pages/brand.js | 2 +- pages/clubs.js | 4 +- pages/events.js | 181 ++++++++++++++------ pages/hackathons/grant.js | 11 +- pages/hcb/climate/index.js | 232 +++++++++++++++----------- pages/hcb/first.js | 6 +- pages/hcb/fiscal-sponsorship.js | 19 +-- pages/hcb/success.js | 6 +- pages/jobs/lead-hacker.js | 16 +- pages/onboard.js | 148 +++++++++++----- pages/opensource.js | 5 +- pages/team.js | 12 +- 34 files changed, 584 insertions(+), 394 deletions(-) diff --git a/components/donate/sprigForm.js b/components/donate/sprigForm.js index 3726e354..a573b726 100644 --- a/components/donate/sprigForm.js +++ b/components/donate/sprigForm.js @@ -6,9 +6,7 @@ const pricePerSprig = 100 const SprigForm = () => { const [count, setCount] = useState(1) function url() { - const u = new URL( - 'https://hcb.hackclub.com/donations/start/game-lab-fund/' - ) + const u = new URL('https://hcb.hackclub.com/donations/start/game-lab-fund/') u.searchParams.set( 'amount', pricePerSprig * count * 100 /* convert to cents */ diff --git a/components/elon.mdx b/components/elon.mdx index 1e1cc1ea..b87d78ae 100644 --- a/components/elon.mdx +++ b/components/elon.mdx @@ -27,12 +27,12 @@ a lot of what we’ve already been doing (and [what I wrote about at the beginni of the year](https://zachinto2020.wordpress.com/2019/12/31/as-midnight-approaches/)): we’ll spend as little money as possible at all times, and we’ll hire a small number of diverse staff from video game engineers to media producers to make -Hack Club better. We are pushing hard now to expand users of [HCB](https://hackclub.com/hcb/), +Hack Club better. We are pushing hard now to expand users of [HCB](https://hackclub.com/hcb/), and continuing to try and make the Hack Club Slack the best place to be a teenager on the intenet. We’ll have a proper announcement in a few weeks, but one thing we’re doing after winning the [Frank Grant](https://grant.frank.ly/) and now receiving Elon’s -gift, is open sourcing our finances. Hack Club HQ has been running on HCB +gift, is open sourcing our finances. Hack Club HQ has been running on HCB since February and starting today, you can see our account publicly at https://hcb.hackclub.com/hq. You can track how we spend every single dollar of Elon’s gift. Soon, we will also launch https://frank.ly/ on Hack Club’s diff --git a/components/hcb/apply/address-input.js b/components/hcb/apply/address-input.js index b0169ef2..e4b40cd6 100644 --- a/components/hcb/apply/address-input.js +++ b/components/hcb/apply/address-input.js @@ -6,29 +6,28 @@ import { geocode, search } from '../../../lib/hcb/apply/address-validation' import Icon from '../../icon' const approvedCountries = [ - "AT", - "FI", - "FR", - "DE", - "GR", - "ES", - "IT", - "SE", - "TR", - "GB", - "NO", - "UA", - "BR", - "CO", - "US", - "CA", - "MX", - "JP", - "PH", - "MY", - "SG", -]; - + 'AT', + 'FI', + 'FR', + 'DE', + 'GR', + 'ES', + 'IT', + 'SE', + 'TR', + 'GB', + 'NO', + 'UA', + 'BR', + 'CO', + 'US', + 'CA', + 'MX', + 'JP', + 'PH', + 'MY', + 'SG' +] export default function AutoComplete({ name, isPersonalAddressInput }) { const input = useRef() @@ -38,8 +37,8 @@ export default function AutoComplete({ name, isPersonalAddressInput }) { const optionClicked = async prediction => { input.current.value = prediction.name - await onInput(prediction.name) - setPredictions(null) + await onInput(prediction.name) + setPredictions(null) } const clickOutside = e => { if (input.current && !input.current.contains(e.target)) { @@ -47,26 +46,26 @@ export default function AutoComplete({ name, isPersonalAddressInput }) { } } - const onInput = async value => { - setPredictions(value ? (await search(value)).results : null); + const onInput = async value => { + setPredictions(value ? (await search(value)).results : null) - if (isPersonalAddressInput) return - geocode(value) - .then(res => { - const country = res?.results[0]?.country - const countryCode = res?.results[0]?.countryCode + if (isPersonalAddressInput) return + geocode(value) + .then(res => { + const country = res?.results[0]?.country + const countryCode = res?.results[0]?.countryCode - setCountryCode(countryCode) + setCountryCode(countryCode) - sessionStorage.setItem('bank-signup-eventCountry', country) - sessionStorage.setItem('bank-signup-eventCountryCode', countryCode) - }) - .catch(err => console.error(err)); - } + sessionStorage.setItem('bank-signup-eventCountry', country) + sessionStorage.setItem('bank-signup-eventCountryCode', countryCode) + }) + .catch(err => console.error(err)) + } - const onInputWrapper = async e => { - if (e.target.value) await onInput(e.target.value) - } + const onInputWrapper = async e => { + if (e.target.value) await onInput(e.target.value) + } //TODO: Close suggestions view when focus is lost via tabbing. //TODO: Navigate suggestions with arrow keys. diff --git a/components/hcb/apply/personal-form.js b/components/hcb/apply/personal-form.js index 343772ec..dc7cb869 100644 --- a/components/hcb/apply/personal-form.js +++ b/components/hcb/apply/personal-form.js @@ -161,19 +161,19 @@ export default function PersonalInfoForm({ ) : null} - - - + + + ) } diff --git a/components/hcb/everything.js b/components/hcb/everything.js index a67b3154..1474a82f 100644 --- a/components/hcb/everything.js +++ b/components/hcb/everything.js @@ -31,8 +31,8 @@ export default function Everything({ fee, partner = false }) { 'Transaction data export': 'download', 'Record shared notes on transactions': 'docs', '24-hour response support': 'clock', - 'Reimbursement process': 'enter', - // 'Instant deposits': 'bolt' + 'Reimbursement process': 'enter' + // 'Instant deposits': 'bolt' }).map(([item, icon = 'enter']) => ( {item} diff --git a/components/hcb/features.js b/components/hcb/features.js index 13b7f1ad..be946c56 100644 --- a/components/hcb/features.js +++ b/components/hcb/features.js @@ -26,10 +26,7 @@ export default function Features({ partner = false }) { icon="bank-account" name="Fund" body={ - <> - A fund under the hood with a custom, beautiful - dashboard. - + <>A fund under the hood with a custom, beautiful dashboard. } /> diff --git a/components/hcb/first/testimonials.js b/components/hcb/first/testimonials.js index 0a0fab12..aadd20f5 100644 --- a/components/hcb/first/testimonials.js +++ b/components/hcb/first/testimonials.js @@ -27,8 +27,8 @@ export default function Testimonials() { FIRST teams all over the country run on HCB. - Everywhere from San Jose to Boston to New York, - HCB powers teams of all sizes. + Everywhere from San Jose to Boston to New York, HCB powers teams of + all sizes. diff --git a/components/hcb/landing.js b/components/hcb/landing.js index 9b2fa3a0..34753d55 100644 --- a/components/hcb/landing.js +++ b/components/hcb/landing.js @@ -1,4 +1,13 @@ -import { Box, Button, Heading, Link, Flex, Text, Container, Badge } from 'theme-ui' +import { + Box, + Button, + Heading, + Link, + Flex, + Text, + Container, + Badge +} from 'theme-ui' import Fade from 'react-reveal/Fade' import ScrollHint from '../scroll-hint' import Image from 'next/image' @@ -36,7 +45,6 @@ export default function Landing({ showButton = true, eventsCount }) { textAlign: 'center' }} > - Become a nonprofit with HCB - - HCB Icon - HCB by - hack club flag - + + HCB Icon + + HCB by + + hack club flag + {' '} is one of {Math.round((eventsCount - 50) / 100) * 100}+ - teams who use HCB to - run world-class organizations, hackathons, and clubs. + teams who use HCB to run world-class + organizations, hackathons, and clubs. diff --git a/components/hcb/nonprofits.js b/components/hcb/nonprofits.js index 96ab8e10..888cd68e 100644 --- a/components/hcb/nonprofits.js +++ b/components/hcb/nonprofits.js @@ -68,9 +68,8 @@ export default function Nonprofits() { > Nonprofit? No problem. - HCB is a powerful, safe, and easy-to-use money thing, - whether you're receiving your first donation or spending - $100,000 a year. + HCB is a powerful, safe, and easy-to-use money thing, whether you're + receiving your first donation or spending $100,000 a year. diff --git a/components/hcb/run.js b/components/hcb/run.js index d25698db..b787962e 100644 --- a/components/hcb/run.js +++ b/components/hcb/run.js @@ -26,8 +26,8 @@ export default function Run() {
- Receiving and managing money is just the start. HCB helps - you handle ongoing obligations while you’re organizing. + Receiving and managing money is just the start. HCB helps you handle + ongoing obligations while you’re organizing. diff --git a/components/hcb/testimonials.js b/components/hcb/testimonials.js index e9c33400..d341b3bb 100644 --- a/components/hcb/testimonials.js +++ b/components/hcb/testimonials.js @@ -72,8 +72,8 @@ export default function Testimonials() { The best events across the country run on HCB. - Everywhere from Philadelphia to Phoenix to Portland, - HCB powers events of all sizes. + Everywhere from Philadelphia to Phoenix to Portland, HCB powers + events of all sizes. {events.map(event => { const id = kebabCase(event.name) - return ( - - ) + return })} diff --git a/components/hcb/tooltip.js b/components/hcb/tooltip.js index 94e94a7e..10eb6e7b 100644 --- a/components/hcb/tooltip.js +++ b/components/hcb/tooltip.js @@ -1,41 +1,47 @@ -import React from "react"; +import React from 'react' -const addClassNameToChildren = (children, className) => React.Children.map(children, child => React.cloneElement(child, { className: `${child.props.className || ''} ${className}` })); +const addClassNameToChildren = (children, className) => + React.Children.map(children, child => + React.cloneElement(child, { + className: `${child.props.className || ''} ${className}` + }) + ) -const tooltip = (direction) => function Tooltip ({ children, text }) { - const escapedText = text.replace(/'/g, "\\'"); +const tooltip = direction => + function Tooltip({ children, text }) { + const escapedText = text.replace(/'/g, "\\'") - const directionalStyles = ({ - e: ` + const directionalStyles = { + e: ` left: 100%; bottom: 50%; right: 0; margin-left: 0.5rem; transform: translateY(50%); `, - w: ` + w: ` right: 100%; bottom: 50%; margin-right: 0.5rem; transform: translateY(50%); `, - n: ` + n: ` right: 50%; bottom: 100%; margin-bottom: 0.5rem; transform: translateX(50%); `, - s: ` + s: ` right: 50%; top: 100%; margin-top: 0.5rem; transform: translateX(50%); ` - })[direction || 'e']; + }[direction || 'e'] return ( - <> - - {children} - - ); -} + {children} + + ) + } -const Tooltip = tooltip(); -Tooltip.N = tooltip('n'); -Tooltip.S = tooltip('s'); -Tooltip.E = tooltip('e'); -Tooltip.W = tooltip('w'); +const Tooltip = tooltip() +Tooltip.N = tooltip('n') +Tooltip.S = tooltip('s') +Tooltip.E = tooltip('e') +Tooltip.W = tooltip('w') -export { Tooltip }; -export default Tooltip; \ No newline at end of file +export { Tooltip } +export default Tooltip diff --git a/components/index/cards/hcb.js b/components/index/cards/hcb.js index 62e85710..fdbf68c5 100644 --- a/components/index/cards/hcb.js +++ b/components/index/cards/hcb.js @@ -31,8 +31,8 @@ export default function Bank({ data }) { - Become a 501(c)3 nonprofit and join 700+ teams using - HCB to run world-class events. + Become a 501(c)3 nonprofit and join 700+ teams using HCB to run + world-class events. This platform is built and maintained by the Hack Club team. diff --git a/components/index/cards/outernet.js b/components/index/cards/outernet.js index f03e6e14..e3b00cba 100644 --- a/components/index/cards/outernet.js +++ b/components/index/cards/outernet.js @@ -39,7 +39,12 @@ export default function Outernet() { 28th to 31st July, 2023! { const router = useRouter() const { status, formProps, useField } = useForm('/api/join/', null, { clearOnSubmit: 5000, method: 'POST', - initData: hasCookie("continent") + initData: hasCookie('continent') ? { - continent: getCookie("continent"), + continent: getCookie('continent'), reason: router.query.reason, event: router.query.event } diff --git a/components/winter/recap.js b/components/winter/recap.js index 38fe10b6..000ff15e 100644 --- a/components/winter/recap.js +++ b/components/winter/recap.js @@ -62,8 +62,8 @@ function Recap() { While you wait for your hardware, explore and get familiar with - HCB with limited access to features until you get - fully activated. + HCB with limited access to features until you get fully + activated. diff --git a/lib/carousel.json b/lib/carousel.json index 63cb905d..e8e83703 100644 --- a/lib/carousel.json +++ b/lib/carousel.json @@ -9,13 +9,13 @@ "link": "https://jams.hackclub.com" }, { - "background": "#212529", - "titleColor": "white", - "descriptionColor": "white", - "title": "cpu.land", - "description": "Curious exactly what happens when you run a program on your computer? Read this.", - "img": "https://cloud-eg2ex8nol-hack-club-bot.vercel.app/0favicon-on-light-removebg-preview.png", - "link": "https://cpu.land" + "background": "#212529", + "titleColor": "white", + "descriptionColor": "white", + "title": "cpu.land", + "description": "Curious exactly what happens when you run a program on your computer? Read this.", + "img": "https://cloud-eg2ex8nol-hack-club-bot.vercel.app/0favicon-on-light-removebg-preview.png", + "link": "https://cpu.land" }, { "background": "#000", diff --git a/middleware.js b/middleware.js index 63f28088..094651bf 100644 --- a/middleware.js +++ b/middleware.js @@ -8,8 +8,8 @@ export function middleware(request) { if (continent === 'Oceania') { continent = 'Australia' } - const response = NextResponse.next(); - response.cookies.set("continent", continent || ""); - return response; + const response = NextResponse.next() + response.cookies.set('continent', continent || '') + return response } } diff --git a/next.config.js b/next.config.js index 03f31222..b6d622cd 100755 --- a/next.config.js +++ b/next.config.js @@ -28,10 +28,10 @@ const nextConfig = { }, async redirects() { return [ - { + { source: '/bank/:path*', destination: '/hcb/:path*', - permanent: true, + permanent: true }, { source: '/grant/', destination: '/hackathons/grant', permanent: false }, { diff --git a/pages/api/github.js b/pages/api/github.js index 4098fd64..9fc7206e 100644 --- a/pages/api/github.js +++ b/pages/api/github.js @@ -1,20 +1,23 @@ -const isRelevantEventType = (type) => ['PushEvent', 'PullRequestEvent', 'WatchEvent'].includes(type); +const isRelevantEventType = type => + ['PushEvent', 'PullRequestEvent', 'WatchEvent'].includes(type) const getMessage = (type, payload, repo) => { switch (type) { case 'PushEvent': - return payload.commits?.[0]?.message || 'No commit message'; + return payload.commits?.[0]?.message || 'No commit message' case 'PullRequestEvent': - return payload.pull_request.title; + return payload.pull_request.title case 'WatchEvent': - return `starred ${repo.name}`; + return `starred ${repo.name}` default: - return null; + return null } } export async function fetchGitHub() { - const initialGitHubData = await fetch('https://api.github.com/orgs/hackclub/events').then(r => r.json()); + const initialGitHubData = await fetch( + 'https://api.github.com/orgs/hackclub/events' + ).then(r => r.json()) const gitHubData = initialGitHubData .filter(({ type }) => isRelevantEventType(type)) @@ -24,12 +27,12 @@ export async function fetchGitHub() { userImage: actor.avatar_url, message: getMessage(type, payload, repo), time: created_at - })); + })) - return gitHubData; + return gitHubData } export default async function github(req, res) { - const git = await fetchGitHub(req, res); - res.json(git); + const git = await fetchGitHub(req, res) + res.json(git) } diff --git a/pages/api/hcb/apply.js b/pages/api/hcb/apply.js index 803db392..a19a27fc 100644 --- a/pages/api/hcb/apply.js +++ b/pages/api/hcb/apply.js @@ -51,7 +51,7 @@ export default async function handler(req, res) { 'HCB account URL': `https://hcb.hackclub.com/${r.slug}`, 'Contact Option': data.contactOption, 'Slack Username': data.slackUsername, - 'Accommodations': data.accommodations, + Accommodations: data.accommodations }) res.writeHead(302, { Location: '/hcb/apply/success' }).end() }) diff --git a/pages/api/slack.js b/pages/api/slack.js index 330ccf0c..34088a5f 100644 --- a/pages/api/slack.js +++ b/pages/api/slack.js @@ -10,16 +10,16 @@ export async function Slack() { formData.append('date_range', '30d') let slackData = await fetch( - "https://hackclub.slack.com/api/team.stats.timeSeries", + 'https://hackclub.slack.com/api/team.stats.timeSeries', { - method: "POST", + method: 'POST', body: `--orpheus\r\nContent-Disposition: form-data; name="token"\r\n\r\n${process.env.SLACK_API_TOKEN}\r\n--orpheus\r\nContent-Disposition: form-data; name="date_range"\r\n\r\n30d\r\n--orpheus\r\nContent-Disposition: form-data;`, headers: { - "content-type": "multipart/form-data; boundary=orpheus", - cookie: process.env.SLACK_API_COOKIE, - }, + 'content-type': 'multipart/form-data; boundary=orpheus', + cookie: process.env.SLACK_API_COOKIE + } } - ).then((r) => r.json()); + ).then(r => r.json()) if (!slackData || !slackData.stats) { console.warn(`No slack data: ${JSON.stringify(slackData)}`) diff --git a/pages/brand.js b/pages/brand.js index f5227342..2774043c 100644 --- a/pages/brand.js +++ b/pages/brand.js @@ -35,7 +35,7 @@ export const Logo = ({ name }) => ( {startCase(name) .replace('Flag Orpheus', 'Orpheus Flag –') .replace('Bw', ' (B/W)') - .replace('Hcb', 'HCB')} + .replace('Hcb', 'HCB')} ( desc={ <> Use our 501(c)(3) status and a restricted fund with{' '} - HCB to fundraise, accept - donations, and buy things! + HCB to fundraise, accept donations, and + buy things! } /> diff --git a/pages/events.js b/pages/events.js index d63d4fdf..21501356 100644 --- a/pages/events.js +++ b/pages/events.js @@ -1,4 +1,16 @@ -import { Box, Button, Container, Heading, Card, Text, Grid, Flex, Image as Img, Link, Divider } from 'theme-ui' +import { + Box, + Button, + Container, + Heading, + Card, + Text, + Grid, + Flex, + Image as Img, + Link, + Divider +} from 'theme-ui' import Head from 'next/head' import Meta from '@hackclub/meta' import ForceTheme from '../components/force-theme' @@ -10,7 +22,6 @@ import OuternetPic from '../public/outernet/hack.jpg' import { compact } from 'lodash' import theme from '@hackclub/theme' - const events = [ { name: 'Outernet', @@ -20,7 +31,8 @@ const events = [ season: 'Summer', year: '2023', repo: 'outernet', - image: 'https://github.com/hackclub/outernet/assets/39828164/368eac86-3c39-4842-be2c-1436a6db6f07', + image: + 'https://github.com/hackclub/outernet/assets/39828164/368eac86-3c39-4842-be2c-1436a6db6f07', link: 'https://github.com/hackclub/outernet' }, { @@ -32,46 +44,52 @@ const events = [ year: '2022/23', video: 'https://www.youtube.com/embed/KLx4NZZPzMc', repo: 'epoch' - }, + }, { name: 'Assemble', logo: 'https://emoji.slack-edge.com/T0266FRGM/assemble/4f9465eb00175463.png', - description: 'The first high school hackathon since the pandemic! Hosted by a team of Hack Clubbers to kick off a hackathon renaissance.', + description: + 'The first high school hackathon since the pandemic! Hosted by a team of Hack Clubbers to kick off a hackathon renaissance.', location: 'San Francisco, California', season: 'Summer', year: '2022', video: 'https://youtube.com/embed/PnK4gzO6S3Q', repo: 'assemble' - }, + }, { name: 'The Hacker Zephyr', logo: 'https://hackclub.com/stickers/zephyr.svg', - description: 'A cross-country hacker adventure on a train and the longest hackathon (by miles) on land.', + description: + 'A cross-country hacker adventure on a train and the longest hackathon (by miles) on land.', location: 'Burlington (VT) to Los Angeles (CA)', season: 'Summer', year: '2021', video: 'https://youtube.com/embed/2BID8_pGuqA', repo: 'the-hacker-zephyr' - }, + }, { name: 'Summer of Making', logo: 'https://hackclub.com/stickers/summer_of_making.svg', - description: '$50k in hardware donations to teen hackers around the world and the creation of Scrapbook:', + description: + '$50k in hardware donations to teen hackers around the world and the creation of Scrapbook:', location: 'Online (thanks COVID-19!)', season: 'Summer', year: '2020', - image: 'https://cdn.sanity.io/images/2ejqxsnu/production/ed144128afb78a7095d6c77945efdd2c38078ecf-1637x990.png?w=3840&q=75&fit=clip&auto=format', + image: + 'https://cdn.sanity.io/images/2ejqxsnu/production/ed144128afb78a7095d6c77945efdd2c38078ecf-1637x990.png?w=3840&q=75&fit=clip&auto=format', link: 'https://scrapbook.hackclub.com/r/summer-of-making', ghTag: 'summer-of-making' - }, + }, { name: 'Flagship', logo: 'https://hackclub.com/stickers/ship.png', - description: 'An IRL meetup of high school hackathon organizers and coding club leaders. Our first "flagship" event.', + description: + 'An IRL meetup of high school hackathon organizers and coding club leaders. Our first "flagship" event.', location: 'San Francisco, California', season: 'Summer', year: '2019', - image: 'https://github.com/hackclub/www-assemble/blob/main/public/hackers-assemble.jpg?raw=true', + image: + 'https://github.com/hackclub/www-assemble/blob/main/public/hackers-assemble.jpg?raw=true', link: 'https://hack.af/flagship-album' } ] @@ -89,30 +107,63 @@ const Event = ({ image, link }) => ( - - - - {name} - - - {description} - - {video ? - - : - } - - {season}, {year} - {location} {repo && - <>github.com/hackclub/{repo} - } - {ghTag && + + + + {name} + + {description} + {video ? ( + + ) : ( + + + + )} + + + {season}, {year} - {location} + {' '} + + + {' '} + {repo && ( + + <>github.com/hackclub/{repo} + + )} + {ghTag && ( + <>github.com/topics/{ghTag} - } - {link && !repo && !ghTag && - <>{link.replace("https://", "")} - } - - + + )} + {link && !repo && !ghTag && ( + + <>{link.replace('https://', '')} + + )} + + ) const Page = ({ jobs }) => ( @@ -183,7 +234,8 @@ const Page = ({ jobs }) => ( textShadow: 'small' }} > - Every summer and now every winter, Hack Club does something special to bring the community together. Let's take a trip down memory lane. + Every summer and now every winter, Hack Club does something special + to bring the community together. Let's take a trip down memory lane. diff --git a/pages/hcb/first.js b/pages/hcb/first.js index 01215bb9..de8994dc 100644 --- a/pages/hcb/first.js +++ b/pages/hcb/first.js @@ -143,9 +143,9 @@ export default function First() { }} variant="copy" > - Built by FIRST alumni for FIRST teams, HCB - is a comprehensive financial platform used by hundreds of - clubs, teams and hackathons. + Built by FIRST alumni for FIRST teams, HCB is a + comprehensive financial platform used by hundreds of clubs, teams + and hackathons.
- - HCB, the #1 fiscal sponsor - + HCB, the #1 fiscal sponsor While many fiscal sponsors require that their partners relate to their mission in similar ways, at HCB, we’ve built our @@ -437,8 +435,8 @@ export default function FiscalSponsorship() { A customizable and embeddable donations URL - A fun and routing number to connect to external - platforms, like Shopify and GoFundMe + A fun and routing number to connect to external platforms, like + Shopify and GoFundMe Perks like PVSA certification, newsletter software, and @@ -450,17 +448,16 @@ export default function FiscalSponsorship() { organization? We’d love to meet you and chat about working together. Feel free to apply here or - email our team if - you have more questions about fiscal sponsorship! + email our team if you + have more questions about fiscal sponsorship!
At its core, Hack Club is a nonprofit encouraging students to learn - how to code by building and making cool things. - HCB was built out by teenagers at - Hack Club and continues to be a real-world space that high - schoolers can contribute to every day. + how to code by building and making cool things. HCB was built out by + teenagers at Hack Club and continues to be a real-world space + that high schoolers can contribute to every day. diff --git a/pages/hcb/success.js b/pages/hcb/success.js index c28ebde6..e66a43e7 100644 --- a/pages/hcb/success.js +++ b/pages/hcb/success.js @@ -111,11 +111,7 @@ export default function ApplicationSuccess() { > #hcb - diff --git a/pages/jobs/lead-hacker.js b/pages/jobs/lead-hacker.js index 90f41447..ada773bd 100644 --- a/pages/jobs/lead-hacker.js +++ b/pages/jobs/lead-hacker.js @@ -58,8 +58,8 @@ const Page = () => ( of joining HCB, organizations get 501(c)(3) nonprofit status, access to a beautiful dashboard for managing their finances, and all financial and legal matters - from tax filings to payroll - handled. 50% of high - school hackathons worldwide run on HCB, and Elon Musk has - tweeted that we're a{' '} + school hackathons worldwide run on HCB, and Elon Musk has tweeted that + we're a{' '} ( - With the right leadership, we hope to bring HCB to thousands - of organizations across the United States and process tens of millions - of dollars in transactions. We think do-gooders need the same tools that + With the right leadership, we hope to bring HCB to thousands of + organizations across the United States and process tens of millions of + dollars in transactions. We think do-gooders need the same tools that software engineers do. For them, HCB is like GitHub: transformative. Right now, HCB is the{' '} @@ -306,9 +306,9 @@ const Page = () => ( > jobs@hackclub.com {' '} - with "HCB" in the subject line, 3 bullet points - demonstrating why you would be exceptional for the role, and your - resume / GitHub / GitLab / sourcehut. + with "HCB" in the subject line, 3 bullet points demonstrating why you + would be exceptional for the role, and your resume / GitHub / GitLab / + sourcehut.
diff --git a/pages/onboard.js b/pages/onboard.js index ffc13b7f..9ef14650 100644 --- a/pages/onboard.js +++ b/pages/onboard.js @@ -543,14 +543,49 @@ const ShipPage = () => { - - - - Never made a circuit board before? No problem. + + + + + Never made a circuit board before? No problem. + - Learn how to design your own circuit boards from scratch with our official tutorials and jams, like Maggie’s intro to PCB design jam. Ask in the{' '} - Hack Club Slack{' '} + Learn how to design your own circuit boards from scratch with our{' '} + official tutorials and jams, like Maggie’s{' '} + + intro to PCB design jam + + . Ask in the{' '} + + Hack Club Slack + {' '} if you have any questions! @@ -654,7 +689,8 @@ const ShipPage = () => { > - A movement sensor add-on to an open source game console. + A movement sensor add-on to an open source{' '} + game console. Read the source  @@ -700,10 +736,14 @@ const ShipPage = () => { - + - Karmanyaah's digital level in the shape of a longhorn. + Karmanyaah's digital level in the shape of a + longhorn. See the designs  @@ -904,7 +944,12 @@ const ShipPage = () => { Collaborate, get help, and support others as you take the leap. - @@ -951,7 +996,7 @@ const ShipPage = () => { @@ -1003,11 +1048,17 @@ const ShipPage = () => { - + Learn to PCB - Read our Hacker Card tutorial to learn how to make a simple circuit board from start to end. + + Read our Hacker Card tutorial to learn how to make a simple + circuit board from start to end. + @@ -1041,44 +1092,51 @@ const ShipPage = () => { /> - {stickerButtonText.split(' ').map((line, i) =>
{line}
)} -
+ }} + > + {stickerButtonText.split(' ').map((line, i) => ( +
{line}
+ ))} +