-
Notifications
You must be signed in to change notification settings - Fork 175
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into browserslist-update
- Loading branch information
Showing
10 changed files
with
298 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
import CardModel from './card-model' | ||
import { Box, Flex, Grid, Image, Text } from 'theme-ui' | ||
import Buttons from './button' | ||
|
||
/** @jsxImportSource theme-ui */ | ||
|
||
export default function Apocalypse() { | ||
return ( | ||
<CardModel | ||
color="white" | ||
sx={{ | ||
backgroundSize: 'cover', | ||
backgroundColor: '#95C9E5' | ||
}} | ||
position={[null, 'bottom', 'bottom']} | ||
image="https://cloud-1132qsbcy-hack-club-bot.vercel.app/0image__6_.png" | ||
> | ||
<Grid columns={[1, 1, 2]} sx={{ position: 'relative', zIndex: 2 }}> | ||
<Flex | ||
sx={{ | ||
flexDirection: 'column', | ||
justifyContent: 'space-between' | ||
}} | ||
> | ||
<Image | ||
src="https://cloud-lvxa0tab7-hack-club-bot.vercel.app/0apotitle_cropped.png" | ||
sx={{ | ||
width: ['200px', '250px', '300px'], | ||
mt: ['-5px', '-5px', '-5px'], | ||
mb: ['30px', '30px', '30px'], | ||
position: 'relative', | ||
zIndex: 2, | ||
fontSize: ['36px', 4, 5], | ||
color: 'white' | ||
}} | ||
alt="Apocalypse" | ||
/> | ||
|
||
<Flex | ||
sx={{ | ||
flexDirection: ['row', 'row', 'column'], | ||
justifyContent: 'space-between' | ||
}} | ||
> | ||
<Text | ||
as="p" | ||
variant="subheadline" | ||
sx={{ | ||
ml: ['0px', '0px', '10px'], | ||
mt: ['0px', '0px', '-10px'], | ||
mb: ['0px', '0px', '20px'], | ||
zIndex: 2, | ||
color: 'white', | ||
fontSize: ['24px !important'], | ||
|
||
textShadow: '0 0 20px #fbbae4' | ||
}} | ||
> | ||
Downtown Toronto | ||
<br /> | ||
May 17–19 | ||
</Text> | ||
|
||
<Buttons | ||
icon="flag-fill" | ||
href="https://apocalypse.hackclub.com/" | ||
target="_blank" | ||
rel="noopener" | ||
primary="#FE5CA8" | ||
id="43" | ||
sx={{ color: '#fff' }} | ||
> | ||
Join Us | ||
</Buttons> | ||
</Flex> | ||
</Flex> | ||
<Box> | ||
<Text | ||
as="p" | ||
variant="subtitle" | ||
sx={{ | ||
fontSize: ['22px', '20px', '18px'] | ||
}} | ||
> | ||
It's 2034, and zombies have taken over! But tech still operates. | ||
What would you do? | ||
</Text> | ||
<Text | ||
as="p" | ||
variant="subtitle" | ||
sx={{ | ||
fontSize: ['22px', '20px', '18px'] | ||
}} | ||
> | ||
Join 150 high schoolers for 44 hours at Apocalypse! Take yourself | ||
out of the real world and build wacky projects to spark a new age of | ||
humanity. | ||
</Text> | ||
</Box> | ||
</Grid> | ||
</CardModel> | ||
) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
import AirtablePlus from "airtable-plus" | ||
|
||
const createProject = async (partsList=[]) => { | ||
const airtable = new AirtablePlus({ | ||
apiKey: process.env.AIRTABLE_API_KEY, | ||
baseID: 'appKjALSnOoA0EmPk', | ||
tableName: 'Supported Parts' | ||
}) | ||
|
||
const parts = [ | ||
{ "type": "board-pi-pico-w", "id": "pico", "top": 0, "left": 0, "attrs": {} } | ||
] | ||
|
||
await Promise.all(partsList.map(async (part) => { | ||
const airPart = await airtable.read({ | ||
filterByFormula: `{Wokwi Name}= "${part}"`, | ||
maxRecords: 1 | ||
}) | ||
return airPart[0].fields['Wokwi Name'].split(',').forEach((name, i) => { | ||
parts.push({ | ||
type: name, | ||
id: name + '-' + i, | ||
left: i * 100, // this is roughtly the width of most parts | ||
}) | ||
}) | ||
})) | ||
|
||
const body = JSON.stringify({ | ||
name: "The Bin!", | ||
unlisted: false, | ||
files: [{ | ||
name: "help.md", | ||
content: `# Welcome to The Bin! 🦝 | ||
Now that you've thrown some parts into The Bin, it's time to turn that trash into treasure! 🗑️➡️💎 | ||
Wire up your parts and write some code to make them work together. | ||
If you'd like a tutorial, check out some sample projects: | ||
https://jams.hackclub.com/tags/the-bin | ||
You can get help by chatting with other high schoolers on the Hack Club Slack in the #electronics channel: | ||
👉 https://hackclub.com/slack 👈 | ||
Once you're ready build your design IRL, click the "Share" button and submit your design: | ||
https://hackclub.com/bin/submit | ||
` | ||
}, | ||
{ | ||
name: "sketch.ino", | ||
content: `// Now turn this trash into treasure! | ||
// Want some help? You can chat with us on the Hack Club Slack in the #electronics channel | ||
void setup() { | ||
// put your setup code here, to run once: | ||
Serial1.begin(115200); | ||
Serial1.println("Hello, Raspberry Pi Pico W!"); | ||
} | ||
void loop() { | ||
// put your main code here, to run repeatedly: | ||
delay(1); // this speeds up the simulation | ||
}` | ||
}, { | ||
name: "diagram.json", | ||
content: JSON.stringify({ | ||
"version": 1, | ||
"author": "The Bin - Hack Club", | ||
"editor": "wokwi", | ||
"parts": parts, | ||
"connections": [["pico:GP0", "$serialMonitor:RX", "", []], ["pico:GP1", "$serialMonitor:TX", "", []]], "dependencies": {} | ||
}, null, 2) | ||
}], | ||
}) | ||
|
||
const response = await fetch('https://wokwi.com/api/projects/save', { | ||
method: 'POST', | ||
cors: 'no-cors', | ||
headers: { | ||
'Content-Type': 'application/json', | ||
'Referer': 'https://wokwi.com/projects/new/pi-pico-w', | ||
'User-Agent': 'Hack Club - contact [email protected] for any complaints!' | ||
}, | ||
body | ||
}).catch((e) => { | ||
console.log(e) | ||
}) | ||
|
||
const data = await response.json() | ||
const { projectId } = data | ||
|
||
return `https://wokwi.com/projects/${projectId}` | ||
} | ||
|
||
export default async function handler(req, res) { | ||
if (req.method === 'POST') { | ||
const { parts } = req.body | ||
|
||
const shareLink = await createProject(parts) | ||
if (shareLink) { | ||
res.status(200).json({ shareLink }) | ||
} else { | ||
res.status(500).json({ error: 'Failed to create project' }) | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import AirtablePlus from "airtable-plus" | ||
import camelcase from "camelcase" | ||
|
||
const camelizeObject = (obj) => { | ||
Object.keys(obj).forEach(key => { | ||
obj[camelcase(key)] = obj[key] | ||
if (key !== camelcase(key)) { | ||
delete obj[key] | ||
} | ||
}) | ||
return obj | ||
} | ||
|
||
const wokwiParts = async () => { | ||
const airtable = new AirtablePlus({ | ||
apiKey: process.env.AIRTABLE_API_KEY, | ||
baseID: 'appKjALSnOoA0EmPk', | ||
tableName: 'Supported Parts' | ||
}) | ||
|
||
const records = await airtable.read() | ||
const parts = records.map(record => camelizeObject(record.fields)) | ||
return parts | ||
} | ||
|
||
export default async function handler(req, res) { | ||
const data = await wokwiParts() | ||
res.status(200).json(data) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.