• Stars
    star
    168
  • Rank 225,507 (Top 5 %)
  • Language
    JavaScript
  • Created over 4 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๐Ÿ”ฅ A daily streak system & portfolio for your projects.

Scrapbook

Scrapbook helps you share the things you're working on every day! As a Hack Clubber, you are always learning and building things. Scrapbook allows you to share updates on the things you're doing with the rest of the Hack Club community, and keeps you motivated by recording each day you contribute, tallying that up onto a streak shown on your profile.

Scrapbook was made by the Hack Club community because many of us have found that showing up every day has been key to our success in learning. Even if we didnโ€™t make something big or impressive, showing up consistently and making something was key.

How do I join?

Your Scrapbook is automatically generated for you when you make your first Scrapbook post. A post requires just two things: a description and an image. Scrapbook will take care of the rest. A post looks like this:

learned Express generator today - now back to a ton of (organized) files

Example pulled from audreyolafz's scrapbook

Posting from Slack (#scrapbook)

Hack Clubbers can also post from the Hack Club Slack. Once you've completed the onboarding flow in Slack and have access to all of the channels, join the #scrapbook channel. From here, Scrapbook posts are automatically generated for you when you post a message in the #scrapbook channel. As long as you use the same email for Slack and scrapbook.hackclub.com, the two will be synced up!

Here's how it would look on Slack to create a post:

Scrappy (the Slack Bot)

Scrappy, our handy dandy Slack bot, not only handles the automatic generation of things, but provides some helpful commands as well. These commands are also documented in our Slack if you send the message /scrappy in any channel.

Available commands
  • /scrappy-togglestreaks: toggles your streak count on/off in your status
  • /scrappy-togglestreaks all: opts out of streaks completely
  • /scrappy-open: opens your Scrapbook (or another user's if you specify a username)
  • /scrappy-setcss: adds a custom CSS file to your Scrapbook profile. Check out this cool example!
  • /scrappy-setdomain: links a custom domain to your Scrapbook profile, e.g. scrapbook.maggieliu.dev
  • /scrappy-setusername: change your profile username
  • /scrappy-setaudio: links an audio file to your Scrapbook. See an example here!
  • /scrappy-setwebhook: create a Scrappy Webhook we will make a blank fetch request to this URL every time you post
  • /scrappy-webring: adds or removes someone to your webring
  • Remove a post: delete the Slack message and Scrappy will automatically update for you
  • Edit a post: edit the Slack message and it will automatically update for you

Custom domains

To put your profile on your own domain, edit the field in your profile or run /scrappy setdomain <domain> in Slack, giving your websiteโ€™s hostname (e.g. scrapbook.maggieliu.dev). Then, add a CNAME record on your DNS provider, pointed to cname.vercel-dns.com. If youโ€™re curious how this works, itโ€™s open source right here.

CSS customization

To customize the CSS on your profile page, edit the field in your profile or run /scrappy-setcss <link> in Slack, giving a link to a CSS file or a GitHub Gist. Hereโ€™s the default CSS, for your overwriting pleasure.

Want to preview your CSS before adding it to your profile? Check out โ€™s Scrapbook Customizer.

If you are a beginner at coding and need a more in depth guide on how to work with CSS, check out @sampoderโ€™s workshop on the topic, this covers different useful areas like CSS variables, fonts and making custom animations. You can access it from here.

Colors & fonts

If youโ€™d like to change the page-wide fonts or colors, you can change yours with CSS Custom Properties. Hereโ€™s the values the site uses by default:

:root {
  --colors-pink: #ff62dc;
  --colors-orange: #ff5b00;
  --colors-yellow: #f7ff00;
  --colors-green: #28ff00;
  --colors-cyan: #00ffff;
  --colors-blue: #00a4ff;
  --colors-purple: #c210ff;

  --colors-darker: #151613;
  --colors-dark: #20201d;
  --colors-darkless: #2b2b27;
  --colors-black: #1d201d;
  --colors-slate: #3b413a;
  --colors-muted: #777f76;
  --colors-smoke: #d5d8d5;
  --colors-snow: #f5f5f4;
  --colors-white: #ffffff;

  --fonts-body: 'Baloo 2', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI',
    Roboto, sans-serif;
  --fonts-display: 'Shrikhand', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI',
    Roboto, sans-serif;
  --fonts-mono: 'SF Mono', 'Roboto Mono', Menlo, Consolas, monospace;
}

Some โ€œrelativeโ€ colors use these colors for various components:

  • --colors-background โ€“ page background color
  • --colors-text โ€“ page text color
  • --colors-elevated โ€“ โ€œelevatedโ€ content, like the posts
  • --colors-sunken โ€“ โ€œsunkenโ€ content
  • --colors-progress โ€“ the color of the progress bar

Our dark mode is powered by prefers-color-scheme: dark.

Website widget

Want to showcase your streak on your personal website? Weโ€™ve created a small widget that you can put on your website with two lines of code. It shows up in the bottom right corner. Just replace username with your Scrappy username. Hereโ€™s the code snippet:

<script src="https://summer.hackclub.com/scrapbookwidget.js"></script>
<script>displayScrapbookUsername('username')</script>

If you have a custom domain, you can optionally link the scrapbook widget to it! Do it like this:

<script src="https://summer.hackclub.com/scrapbookwidget.js"></script>
<script>displayScrapbookUsername('username', 'https://scrapbook.example.com')</script>

RSS feed

Want to get an RSS feed of your Scrapbook posts? Just append .rss to the end of your Scrapbook profile's URL, like so: https://scrapbook.hackclub.com/(username).rss

macOS app

Hack Clubbers using a Mac can post directly from their menu bar using Scrapple, an app built by @LinusSkucas! From the menu bar, type in the update, select the attachments for the post and send it off into the interwebโ€ฆ

You can download the app here, and check out the open source code here.

To install using Homebrew Cask:

brew tap LinusSkucas/homebrew-taps
brew install --cask scrapple

Public API

This site exposes a public JSON API powered by Next.js API routes. The live site runs entirely on this API.

Contributing

Contributions are encouraged and welcome! There are two GitHub repositories that contain code for Scrapbook: the Scrapbook website and Scrappy the Slack bot.

Development chatter happens in the #scrapbook-dev channel in the Hack Club Slack.

Running Locally

  1. Clone this repository
    • git clone https://github.com/hackclub/scrapbook.git && cd scrapbook
  2. Install dependencies
    • yarn
  3. Send a message mentioning @creds in Hack Club's Slack asking for the .env file
  4. Start server
    • yarn dev
  5. View your server
    • open http://localhost:3000/

Those with access to HQ's Vercel account can also generate their own .env file:

  1. Install Vercel's CLI (if you haven't already)
    • yarn global add vercel
  2. Link Vercel to your account for deployment
    • vercel
  3. Pull environment variables from Vercel
    • vercel pull

How does it all work underneath?

Behind the scenes, the site runs on Next.js, React.js, & SWR for data fetching. All pages are static-rendered, hosted on Vercel. Videos are hosted by Mux. The custom domains use a Vercel serverless function. The Slack integration runs on Express.js, hosted on Heroku. All the data is stored in a PostgreSQL database, fetched using Prisma.

The Origin of Scrapbook

Scrapbook was originally built in a week while preparing for the 2020 Summer of Making. To support makers, Hack Club distributed $50,000 in free electronics to 28 different countries. Scrapbook was made to help Hack Clubbers showcase the things they were doing during this event, but grew into a tool that the community uses every single day.


Hack Club, 2023. MIT License.

More Repositories

1

putting-the-you-in-cpu

A technical explainer by @kognise of how your computer runs programs, from start to finish.
MDX
4,913
star
2

some-assembly-required

๐Ÿ“– An approachable introduction to Assembly.
Assembly
2,983
star
3

hackclub

๐ŸŒŽ Hack Club is a worldwide community of high school hackers. We make things. We help one another. We have fun.
JavaScript
2,383
star
4

sprig

๐Ÿƒ Learn to code by making games in a JavaScript web-based game editor.
JavaScript
880
star
5

OnBoard

๐Ÿ’ก Join 1,000 teenagers and make your first PCB with a $100 grant!
Svelte
715
star
6

dinosaurs

๐Ÿฆ• A collection of Orpheus (Hack Club's mascot) drawings!
609
star
7

sinerider

๐Ÿ’– A game about love and graphing, built by teenagers.
JavaScript
551
star
8

blot

๐Ÿค– โœ๏ธ blot, the plotting bot from hack club
JavaScript
317
star
9

jobs

$ ssh jobs.hackclub.com
Go
200
star
10

site

๐ŸŒˆ The new, new Hack Club website (uses Next.js & Theme UI).
JavaScript
185
star
11

how-did-i-get-here

A tool/website/article by @kognise about how routing on the Internet works.
TypeScript
173
star
12

design-system

Hack Club's (old) design system
JavaScript
156
star
13

hackathons

๐Ÿ’ฅ Open source directory of free student-led high school hackathons.
JavaScript
148
star
14

dns

๐Ÿ•น Manage Hack Club's DNS through a GitHub repository
YAML
132
star
15

burrow

Burrow is a tool for burrowing through firewalls, built by teenagers at Hack Club.
Rust
114
star
16

ktr

Kog traceroute. Highly asynchronous traceroute program written in Rust with ASN WHOIS and PeeringDB lookups.
Rust
105
star
17

v2

Hack Clubโ€™s (old) website โœจ
JavaScript
103
star
18

workshops

๐Ÿ’ฝ Website for Hack Club workshops.
JavaScript
88
star
19

outernet

๐Ÿ•๏ธ An out-of-doors, make-it-yours programming adventure. July 28th to 31st 2023 in Vermont's Northeast Kingdom.
82
star
20

muse

๐ŸŽธ a simple language for jamming!
JavaScript
82
star
21

winter

โ„๏ธ Join the community for a Winter of Making!
80
star
22

theme-starter

๐Ÿค A sample Next.js project for getting started with MDX, Theme UI, & Hack Club Theme.
JavaScript
78
star
23

the-hacker-zephyr

๐Ÿš‚ The Hacker Zephyr: A cross-country hackathon on a train! This repo: all of our planning documents, finances, and code open sourced.
78
star
24

assemble

๐ŸŒ The behind-the-scenes of the first high school hackathon since the pandemic!
Assembly
71
star
25

hackathons-v1

๐Ÿ’ป๐Ÿ’ฅ Open source directory of free student-led high school hackathons used by thousands of students worldwide (join the mailing list on the website!)
JavaScript
67
star
26

awesome-hackclub

A collection of super awesome projects made by Hack Clubbers
Markdown
65
star
27

theme

๐Ÿ’ซ Hack Clubโ€™s theme + React components for Theme UI
TypeScript
59
star
28

slash-z

๐Ÿค /z to create a new Zoom Pro meeting in the Hack Club Slack
JavaScript
48
star
29

scrappy

๐Ÿ—‘๏ธ the bot that eats trash (and manages #scrapbook)
JavaScript
47
star
30

sprig-hardware

๐ŸŒฑ Hardware designs for the Sprig Console
44
star
31

proxyparty

๐ŸŽŠ An Nginx redirector and proxier for all of Hack Club's needs!
Nix
44
star
32

webring

๐Ÿ’ A webring for the personal websites of Hack Club members
HTML
43
star
33

hackpad

Python
41
star
34

spade

run sprig games on pc + pico. call a spade a spade.
C
40
star
35

api

[DEPRECATED] The backend (that used to) power Hack Club.
Ruby
38
star
36

icons

Hack Clubโ€™s iconset, a superset of spectrum-icons
TypeScript
37
star
37

jams

We're jamming!
JavaScript
34
star
38

ai-safety-dance

HTML
34
star
39

nest

Free, powerful, and versatile compute infrastructure for all high school hackers!
TypeScript
33
star
40

orbit

NOT MAINTAINED: Orbit puts your development environment in the cloud.
Go
33
star
41

apac_certificate_generator

JavaScript
33
star
42

hacklang

๐Ÿ–ฅ A programming language created for and by hackclubbers.
TypeScript
32
star
43

toriel

๐Ÿ‘‹ A friendly bot that assists new members with joining Hack Club
JavaScript
32
star
44

events

Airtable-powered directory of upcoming events in the Hack Club community.
JavaScript
30
star
45

hack.af

Hack Club's PostgreSQL-based shortlink router. Now running serverlessly!
JavaScript
28
star
46

huginn-docker

Production-ready Huginn deployment with Docker.
Dockerfile
28
star
47

airbridge

๐ŸŒ‰ The link that ties Hack Club's information together
JavaScript
27
star
48

technicolor

๐ŸŸฆ๐ŸŸช๐ŸŸฅ๐ŸŸง๐ŸŸจ๐ŸŸฉ A Hack Clubber's journey, written June 2021.
26
star
49

cow2

Hack Club Cow 2.0 ๐Ÿ„ - a GPT-3 powered cow chatbot for Slack
TypeScript
26
star
50

hacker-challenge

Use your web inspector to hack your way through a series of challenges.
HTML
26
star
51

css

The Hack Club Theme packaged as raw CSS.
CSS
25
star
52

epoch

๐ŸŽ† Behind the scenes at Epoch โ€” a magical New Year's spent hacking in the Delhi NCR.
24
star
53

HCCore

๐Ÿ”Œ Main plugin for the Hack Club Minecraft server
Java
24
star
54

www-assemble

๐ŸŒ The landing page for Assemble. Built using Next.js, Theme UI & MDX.
JavaScript
24
star
55

hackstore

The official hackclub store
JavaScript
24
star
56

the-trail

4 Week PCB Hackathon & 1 Week PCT Hikeathon
JavaScript
23
star
57

moonbeam

๐Ÿš€๐ŸŒ– to the moon!
Python
23
star
58

meta

โš ๏ธ moved to hackclub/hackclub
23
star
59

camp

Hack Club's summer camp
CSS
23
star
60

apac-directory

JavaScript
23
star
61

orpheus-bot

https://youtu.be/R8FVKVnYfY8
JavaScript
23
star
62

sprig-engine

The standalone Sprig game engine.
TypeScript
23
star
63

summer-site

โ˜€๏ธ Recap website for Hack Clubโ€™s Summer of Making 2020, built with Next.js + Theme UI.
JavaScript
23
star
64

jams-bounty

[SUBMISSIONS CLOSED] build a jam, get $200 ๐Ÿซ๐Ÿ“๐Ÿ‡
22
star
65

vip-newsletters

Email updates sent to Hack Club's largest supporters every month.
21
star
66

banker-bot

Hack Club Slack's banker bot
JavaScript
21
star
67

hackathons-backend

Powering https://hackathons.hackclub.com
Ruby
21
star
68

newsletter

๐Ÿ‘€ Whatโ€™s up at Hack Club?
21
star
69

simple-stable-diffusion

๐ŸŒ„ Get Stable Diffusion running in less than 10 minutes in Colab!
Jupyter Notebook
21
star
70

maxday

React + Gatsby website for displaying Max's birthday wishes. Written mostly by @lachlanjc.
JavaScript
21
star
71

hack-as-a-service-v0

โš ๏ธ We've moved to @hack-as-a-service! โš ๏ธ
TypeScript
20
star
72

hcbapp

๐Ÿ’ธ do your finances with a mobile app
Swift
20
star
73

apply

๐Ÿš€ Website for applying to start a Hack Club!
JavaScript
20
star
74

hackathon-photos

๐Ÿ“ธ An open-source directory of photos from high-school hackathons.
19
star
75

markdown

Render Markdown to HTML, Hack Club-style
JavaScript
19
star
76

resource

๐Ÿ’ป Community maintained collection of Hacker Resources
19
star
77

ledger

Home of Hack Club's finances.
Shell
19
star
78

8-ball

the hack club omniscient 8-ball
Python
19
star
79

all-aboard

The Hacker Zephyr Homepage!
JavaScript
18
star
80

horizon

Horizon was Hack Club's first all-female/nonbinary hackathon weekend!
JavaScript
17
star
81

dungeon-of-the-slack

Haskell
17
star
82

slacker

Slacker is an attempt to organize and systematize our developer/customer support use cases into something that is easy to manage and measure, and also is welcoming of newcomers wanting to help participate on projects.
TypeScript
16
star
83

lore

A timeline of Hack Club's history!
JavaScript
16
star
84

holiday-livestream-overlay

https://hack.af/holidays
HTML
16
star
85

Rudolph

Giving gp to hack clubbers who contribute to open source!
Swift
16
star
86

airbender

๐Ÿš Airtable assist
JavaScript
16
star
87

sprig-gallery

Moved to https://github.com/hackclub/sprig/
Svelte
16
star
88

gamelab-beaker

Python
16
star
89

draw-dino

JavaScript
16
star
90

caches

๐Ÿ“€ Caches of hacker culture in the 2020s, placed around the world by Hack Clubbers.
15
star
91

clippy

A friendly bot that assists new members with joining Hack Club
JavaScript
15
star
92

steve

steve
15
star
93

www-epoch

Epoch's website!
JavaScript
15
star
94

forge

C
14
star
95

shipped

DEPRECATED: Showcase of projects shipped by members :shipit:
CSS
14
star
96

assemble-puzzle

๐Ÿ” Solve the puzzle to reveal Hack Club's 2022 summer event: Assemble.
JavaScript
14
star
97

mfa

Hack Club's solution for sharing multi-factor authentication (MFA) codes for team accounts
TypeScript
14
star
98

wonderland

๐Ÿ•ณ๏ธ๐Ÿ‡๐Ÿฅ•
HTML
14
star
99

scrapbook-domains

Custom domain support for https://scrapbook.hackclub.com/
JavaScript
14
star
100

pass-the-story

HTML
14
star