mirror of
https://github.com/System-End/slack-end.git
synced 2026-04-19 23:22:56 +00:00
feat(cmd): shop
This commit is contained in:
parent
e8c98129ce
commit
df07eabc2f
3 changed files with 795 additions and 0 deletions
718
src/assets/shop.json
Normal file
718
src/assets/shop.json
Normal file
|
|
@ -0,0 +1,718 @@
|
|||
[
|
||||
{
|
||||
"id": "item_pile_of_stickers_10",
|
||||
"name": "Pile of Stickers",
|
||||
"subtitle": "3, and random...",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/pile_of_stickers.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 200,
|
||||
"priceGlobal": 200,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_hack_club_microsd_card_28",
|
||||
"name": "Hack Club MicroSD card",
|
||||
"subtitle": "might hold 64gb worth of data!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/microsd.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 200,
|
||||
"priceGlobal": 320,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_logic_analyzer_17",
|
||||
"name": "Logic Analyzer",
|
||||
"subtitle": "omgwtfbbq! fx2lafw ftw!!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/logic_analyzer.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 275,
|
||||
"priceGlobal": 400,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": true,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_digitalocean_credits_2",
|
||||
"name": "DigitalOcean credits",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/card_grant_digitalocean.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 300,
|
||||
"priceGlobal": 300,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_openai_credits_14",
|
||||
"name": "OpenAI credits",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/card_grant_openai.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 300,
|
||||
"priceGlobal": 300,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_hetzner_credits_29",
|
||||
"name": "Hetzner credits",
|
||||
"subtitle": "buy more than one!<br/>get hosting for a while!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/card_grant_hetzner.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 300,
|
||||
"priceGlobal": 300,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_bite_size_linux_6",
|
||||
"name": "Bite Size Linux",
|
||||
"subtitle": " by Julia Evans",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/bite_size_linux.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 400,
|
||||
"priceGlobal": 500,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_bite_size_bash_7",
|
||||
"name": "Bite Size Bash",
|
||||
"subtitle": " by Julia Evans",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/bite_size_bash.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 400,
|
||||
"priceGlobal": 500,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_how_dns_works_8",
|
||||
"name": "How DNS Works",
|
||||
"subtitle": " by Julia Evans",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/how_dns_works.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 400,
|
||||
"priceGlobal": 500,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_domain__1_year__11",
|
||||
"name": "Domain (1 year)",
|
||||
"subtitle": "(anything under $10!)",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/domain.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 420,
|
||||
"priceGlobal": 420,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_raspberry_pi_13",
|
||||
"name": "Raspberry Pi",
|
||||
"subtitle": "kit with Zero 2 W!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/raspberry_pi.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 486,
|
||||
"priceGlobal": 490,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_digital_calipers_50",
|
||||
"name": "Digital Calipers",
|
||||
"subtitle": "plastic, but fantastic!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/cheap_digital_calipers.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 500,
|
||||
"priceGlobal": 618,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": true,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_github_invertocat_pin__39",
|
||||
"name": "GitHub Invertocat Pin!",
|
||||
"subtitle": "stylish!!!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/gh_invertocat_pin.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 546,
|
||||
"priceGlobal": 819,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": true,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_pcb_56",
|
||||
"name": "PCB manufacturing credit!",
|
||||
"subtitle": "works <a href=\"https://github.com/hackclub/OnBoard/blob/main/docs/VENDORS.md\" target=\"_blank\"><u>anywhere OnBoard does</u></a>!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/card_grant_pcb.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 600,
|
||||
"priceGlobal": 600,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_hot_glue_gun",
|
||||
"name": "Hot Glue Gun",
|
||||
"subtitle": "affix some things to some stuff!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/glue_gun.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": false,
|
||||
"enabledCa": true,
|
||||
"priceUs": 600,
|
||||
"priceGlobal": 600,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_parts_credit",
|
||||
"name": "DigiKey/LCSC Credit",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/card_grant_parts.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 600,
|
||||
"priceGlobal": 600,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_signed_photo_of_malted_19",
|
||||
"name": "Signed photo of Malted",
|
||||
"subtitle": "(may incur customs charges)",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/signed_photo_of_malted.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": false,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 623,
|
||||
"priceGlobal": 724,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_pinecil_20",
|
||||
"name": "Pinecil",
|
||||
"subtitle": "64 whole pines!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/pinecil.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 876,
|
||||
"priceGlobal": 876,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": true,
|
||||
"outOfStock": true
|
||||
},
|
||||
{
|
||||
"id": "item_github_notebook_37",
|
||||
"name": "GitHub Notebook",
|
||||
"subtitle": "Denik Layflat!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/gh_denik_layflat_notebook.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 924,
|
||||
"priceGlobal": 1738,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": true,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_github_keycaps_38",
|
||||
"name": "GitHub Keycaps",
|
||||
"subtitle": "assorted pack of 8!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/gh_keycaps.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 1134,
|
||||
"priceGlobal": 1617,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": true,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_hack_club_socks__34",
|
||||
"name": "Hack Club socks!",
|
||||
"subtitle": "(genuinely really comfy!)",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/hc_socks.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 1300,
|
||||
"priceGlobal": 1413,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_blah_j_5",
|
||||
"name": "Blahåj",
|
||||
"subtitle": "⚠️warning: smolhaj!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/blahaj.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": false,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 1312,
|
||||
"priceGlobal": 1312,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_ham_radio",
|
||||
"name": "Baofeng UV-5R",
|
||||
"subtitle": "ham! but no cheese...",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/baofeng.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": false,
|
||||
"enabledCa": false,
|
||||
"priceUs": 1317,
|
||||
"priceGlobal": 1317,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_signed_photo_of_graham_darcey_16",
|
||||
"name": "Signed photo of Graham Darcey",
|
||||
"subtitle": "(rare!!!)",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/signed_photo_of_graham.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": false,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 1324,
|
||||
"priceGlobal": 1324,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_fudge",
|
||||
"name": "1 lb fudge from place next to HQ",
|
||||
"subtitle": "even the dinosaur likes it!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/fudge.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": false,
|
||||
"enabledCa": true,
|
||||
"priceUs": 1366,
|
||||
"priceGlobal": 2600,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_yubikey_9",
|
||||
"name": "YubiKey",
|
||||
"subtitle": "5C NFC, GitHub-branded",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/yubikey.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 1512,
|
||||
"priceGlobal": 1512,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_leatherman_skeletool_kbx_18",
|
||||
"name": "Leatherman Skeletool KBX",
|
||||
"subtitle": "thanks @cwalker!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/skeletool.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": false,
|
||||
"enabledIn": false,
|
||||
"enabledXx": false,
|
||||
"enabledCa": false,
|
||||
"priceUs": 1530,
|
||||
"priceGlobal": 1420,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_lockpick_set_31",
|
||||
"name": "Lockpick set",
|
||||
"subtitle": "<a href=\"https://toool.us\" target=\"_blank\"><u>TOOOL</u></a>'s Necessary Nine!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/lockpicks.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": false,
|
||||
"enabledCa": true,
|
||||
"priceUs": 1544,
|
||||
"priceGlobal": 1653,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_badger",
|
||||
"name": "GitHub Universe Badge",
|
||||
"subtitle": "<a href=\"https://gh.io/badger\" target=\"_blank\"><u>wait</u></a>, this is just an RP2350 and an e-ink display...",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/gh_badger.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 1890,
|
||||
"priceGlobal": 1890,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": true,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_raspberry_pi_5_45",
|
||||
"name": "Raspberry Pi 5",
|
||||
"subtitle": "4GB RAM & 64GB µSD!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/raspberry_pi_5.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 2570,
|
||||
"priceGlobal": 2710,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": true,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_dremel_4300_kit_33",
|
||||
"name": "Dremel 4300 kit",
|
||||
"subtitle": "5 attachments and 40 accessories!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/dremel.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": false,
|
||||
"enabledCa": true,
|
||||
"priceUs": 2810,
|
||||
"priceGlobal": 3060,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_github_miir_backpack_35",
|
||||
"name": "GitHub MiiR® Backpack",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/gh_miir_backpack.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 6653,
|
||||
"priceGlobal": 7302,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": true,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_flipper_32",
|
||||
"name": "Flipper",
|
||||
"subtitle": "(zero!)",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/flipper.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": false,
|
||||
"enabledCa": true,
|
||||
"priceUs": 9000,
|
||||
"priceGlobal": 9000,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": true,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_system76_launch_keyboard_48",
|
||||
"name": "System76 Launch Keyboard",
|
||||
"subtitle": "<a href=\"https://github.com/system76/launch\" target=\"_blank\"><u>open-source!!!</u></a>",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/s76_launch.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 9450,
|
||||
"priceGlobal": 9920,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": true,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_mitutoyo_12_precision_calipers_51",
|
||||
"name": "Mitutoyo 12\" Precision Calipers",
|
||||
"subtitle": "<a target=\"_blank\" href=\"https://shop.mitutoyo.eu/web/mitutoyo/en/mitutoyo/PR/500-193-30/datasheet.xhtml\"><u>digimatic</u>! i'm a fanatic!!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/really_nice_calipers.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": false,
|
||||
"enabledIn": false,
|
||||
"enabledXx": false,
|
||||
"enabledCa": false,
|
||||
"priceUs": 10164,
|
||||
"priceGlobal": 10570.56,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_thermal_camera",
|
||||
"name": "Thermal imaging camera",
|
||||
"subtitle": "hot stuff!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/thermal_cam.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": false,
|
||||
"enabledXx": false,
|
||||
"enabledCa": true,
|
||||
"priceUs": 10700,
|
||||
"priceGlobal": 10700,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_hot_air",
|
||||
"name": "Hot-air rework station",
|
||||
"subtitle": "(Quick 861DW)",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/quick.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": false,
|
||||
"enabledXx": false,
|
||||
"enabledCa": false,
|
||||
"priceUs": 11800,
|
||||
"priceGlobal": 11800,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_100mhz_oscilloscope_53",
|
||||
"name": "100MHZ Oscilloscope",
|
||||
"subtitle": "Siglent <a href=\"https://siglentna.com/wp-content/uploads/dlm_uploads/2021/04/SDS1000CMLplus_DataSheet_DS0101A-E03A.pdf\" target=\"_blank\"><u>SDS1102CML+</u></a>",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/1152cml.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": false,
|
||||
"enabledIn": false,
|
||||
"enabledXx": false,
|
||||
"enabledCa": false,
|
||||
"priceUs": 12663,
|
||||
"priceGlobal": 12663,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_bambu_lab_a1_mini_49",
|
||||
"name": "Bambu Lab A1 Mini",
|
||||
"subtitle": "print print print print print!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/bambu_a1_mini.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": false,
|
||||
"enabledIn": true,
|
||||
"enabledXx": false,
|
||||
"enabledCa": true,
|
||||
"priceUs": 14081,
|
||||
"priceGlobal": 14196,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_ipad_46",
|
||||
"name": "iPad",
|
||||
"subtitle": "10th gen (w/ Apple Pencil!)",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/ipad.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 26003,
|
||||
"priceGlobal": 28003,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_round_trip_2_hq",
|
||||
"name": "Round-trip flight to Hack Club HQ",
|
||||
"subtitle": "visit scenic vermont!<br/><del>come bug me about shop prices in-person!!</del>",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/flight_to_hq.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 35280,
|
||||
"priceGlobal": 94500,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_framework_laptop_13_factory_seconds_53",
|
||||
"name": "Framework Laptop 13\"",
|
||||
"subtitle": "(factory seconds)",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/fw_13.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": false,
|
||||
"enabledXx": false,
|
||||
"enabledCa": true,
|
||||
"priceUs": 46000,
|
||||
"priceGlobal": 46000,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_framework_laptop_16__52",
|
||||
"name": "Framework Laptop 16\"",
|
||||
"subtitle": "we only have one of these, grab it if you can!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/fw_16_inch.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": false,
|
||||
"enabledXx": false,
|
||||
"enabledCa": true,
|
||||
"priceUs": 54000,
|
||||
"priceGlobal": 54000,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_macbook_air_54",
|
||||
"name": "MacBook Air M2 13\"",
|
||||
"subtitle": "refurbished, 8GB RAM",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/macbook_air_m2.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": false,
|
||||
"enabledIn": false,
|
||||
"enabledXx": false,
|
||||
"enabledCa": false,
|
||||
"priceUs": 58800,
|
||||
"priceGlobal": 58800,
|
||||
"fulfilledAtEnd": true,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
},
|
||||
{
|
||||
"id": "item_defcon_ticket_55",
|
||||
"name": "ticket to DEF CON",
|
||||
"subtitle": "flight and hotel included!",
|
||||
"imageUrl": "https://noras-secret-cdn.hackclub.dev/shop/defcon.png",
|
||||
"enabledUs": true,
|
||||
"enabledEu": true,
|
||||
"enabledIn": true,
|
||||
"enabledXx": true,
|
||||
"enabledCa": true,
|
||||
"priceUs": 110000,
|
||||
"priceGlobal": 111000,
|
||||
"fulfilledAtEnd": false,
|
||||
"comingSoon": false,
|
||||
"outOfStock": false
|
||||
}
|
||||
]
|
||||
45
src/commands/shop.ts
Normal file
45
src/commands/shop.ts
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
import { App } from "@slack/bolt";
|
||||
import { Command, onlyForMe } from "../modules/BaseCommand";
|
||||
import { getShopItem, searchShop } from "../modules/Songs";
|
||||
|
||||
export default class Shop implements Command {
|
||||
name: string;
|
||||
description: string;
|
||||
constructor() {
|
||||
this.name = `/shop`;
|
||||
this.description = `Get high seas shop info`;
|
||||
}
|
||||
run(app: App) {
|
||||
// app.command()
|
||||
app.command(this.name, async ({ command, ack, respond }) => {
|
||||
await ack();
|
||||
const args = command.text.split(" ")
|
||||
const subcmd = args.shift().toLowerCase()
|
||||
switch(subcmd) {
|
||||
case "search":
|
||||
const query = args.join(" ")
|
||||
const results = await searchShop(query)
|
||||
// responsd
|
||||
if (results.length === 0) {
|
||||
respond(`No results found for \`${query}\``)
|
||||
return
|
||||
|
||||
|
||||
}
|
||||
respond(`Search results for \`${query}\`:\n${results.map(e => `> ${e.name}\`${e.id}\` - ${e.subtitle}`).join("\n")}`)
|
||||
break;
|
||||
case "item":
|
||||
const item = args.join(" ")
|
||||
const result = await getShopItem(item)
|
||||
if (!result) {
|
||||
respond(`No results found for \`${item}\``)
|
||||
return
|
||||
}
|
||||
respond(Object.entries(result).map(e=> `> ${e[0]}: ${e[1].toString()}`).join("\n"))
|
||||
default:
|
||||
respond(`Unknown subcmd \`${subcmd}\``)
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
32
src/modules/Songs.ts
Normal file
32
src/modules/Songs.ts
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import Shop from "../assets/shop.json"
|
||||
// js typings & data retrival
|
||||
export type Shop = ShopItem[]
|
||||
|
||||
export interface ShopItem {
|
||||
id: string
|
||||
name: string
|
||||
subtitle?: string
|
||||
imageUrl: string
|
||||
enabledUs: boolean
|
||||
enabledEu: boolean
|
||||
enabledIn: boolean
|
||||
enabledXx: boolean
|
||||
enabledCa: boolean
|
||||
priceUs: number
|
||||
priceGlobal: number
|
||||
fulfilledAtEnd: boolean
|
||||
comingSoon: boolean
|
||||
outOfStock: boolean
|
||||
}
|
||||
|
||||
export function getShop(): Shop {
|
||||
return Shop;
|
||||
}
|
||||
export function getShopItem(id: string): ShopItem {
|
||||
return Shop.find(e => e.id === id);
|
||||
}
|
||||
|
||||
export function searchShop(query: string): ShopItem[] {
|
||||
return Shop.filter(e => e.name.toLowerCase().includes(query.toLowerCase()));
|
||||
// return Shop.filter(e => e.name.toLowerCase().includes(query.toLowerCase()));
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue