{"id":19251057,"url":"https://github.com/onesignal/superpowers-treasure-hunt","last_synced_at":"2025-07-25T07:35:08.405Z","repository":{"id":147087081,"uuid":"421999464","full_name":"OneSignal/superpowers-treasure-hunt","owner":"OneSignal","description":"The first 'on your own' coding project for our Coding Superpowers sessions","archived":false,"fork":false,"pushed_at":"2021-10-28T17:32:09.000Z","size":10,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":32,"default_branch":"main","last_synced_at":"2025-07-18T10:00:59.501Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OneSignal.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-27T23:08:45.000Z","updated_at":"2021-11-22T20:16:04.000Z","dependencies_parsed_at":"2023-03-26T15:48:54.185Z","dependency_job_id":null,"html_url":"https://github.com/OneSignal/superpowers-treasure-hunt","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/OneSignal/superpowers-treasure-hunt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OneSignal%2Fsuperpowers-treasure-hunt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OneSignal%2Fsuperpowers-treasure-hunt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OneSignal%2Fsuperpowers-treasure-hunt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OneSignal%2Fsuperpowers-treasure-hunt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OneSignal","download_url":"https://codeload.github.com/OneSignal/superpowers-treasure-hunt/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OneSignal%2Fsuperpowers-treasure-hunt/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266973692,"owners_count":24014753,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-25T02:00:09.625Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T18:19:46.886Z","updated_at":"2025-07-25T07:35:08.364Z","avatar_url":"https://github.com/OneSignal.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The JS Treasure Hunt\n\nThis repository contains everything from the 'Coding Superpowers' javascript\ntreasure hunt we did at OneSignal. This treasure hunt was the first thing our\nnew coders got to really work on on their own so it is set up in a way to start\nwith a small problem and then use the answer to that as part of solving the\nnext problem.\n\nThe idea for the project started as we were talking about encryption in general\nand how we could 'encode' a message so that WE could still decode and read it\nbut someone else wouldn't be able to without knowing what to do. Together we\ndecided on how it should work (eg, should we create a map of letters or a list\nand then 'rotate' them like how rot13 works?) and then wrote the 'encode' version\ntogether before sending everyone off to write the 'decode' version by themselves\n(and fix the hidden bug!).\n\nThe treasure hunt involves solving a series of steps using the encode and decode\nfunctions (and modifying them to accept a different encoding offset\nthan the original hardcoded version). We had some people volunteer to help out\nso we made them the clue holders and each step would tell you a new person to\nmessage and sometimes what to say.\n\n## THE TREASURE HUNT\n\nMost of the clue content is configured and generated with the\n[treasure-hunt-generator.js](https://github.com/OneSignal/superpowers-treasure-hunt/blob/main/treasure-hunt-generator.js) script. All of these files include the\nencoding/decoding logic to make them easier to understand for new folks (no\nneed to learn about imports yet) and to show the incremental changes along the\nway. The clues are printed below in case you want to get some of the fun without\nhaving to run the code.\n\n\n### Step 0:\n\nEveryone needed to write the decodeMessage method (and fix the bug\npreventing the simple answer from working correctly). An example of that being\nfixed is in [answers/step0-answer.js](https://github.com/OneSignal/superpowers-treasure-hunt/blob/main/answers/step0-answer.js)\n\n\n### Clue 1:\n\n```\nDecode the following message with offset 13 for the next step:\n\n9rypBzrmGBmGurmGErnFHErmuHAG)mZrFFntrm{svEFGPyHr5ynpxUnAqyrmBAmFynpxmnAqmnFxmsBEmGurmArKGmpyHr)\n```\n\n### Clue 2:\n\n```\nFor the next step, encode the following message with\nany offset between 2 and 100 and send it\nto @thirdClueSlackHandle on slack:\n\nHi! I'm hot on the trail and ready for the next clue!\n```\n\n### Clue 3:\n\nFor this step, the treasure hunter encodes the message in Clue 2 with an offset\nof their choosing (between 2 and 100, although it doesn't actually matter since\nit loops) and the third clue holder will enter the encoded message into\nthe script to generate the final clue using the same offset.\n\nExample output if the offset was 25:\n\n```\nFor the last task each line is encoded using a different offset.\nThe first line will use offset 25 and each line after\nthat will increase the offset by one.\nYou'll need to decode each line individually and piece the last message together.\n\n\n_NTyRGNTKCyEDDK\nAMAZINGzFORzMAKING\nJUAUIJT\nHCTBCPF\nXVLQJC1RXUCEUDQG\nRI0DGSHMRKDWOMPPW\nYTERFPJ\nZKJOU0YFGTJ\nYLWL0P0P2L\n1I0S0\nNJ17IJWMIO3WIRW12NJMq\n]ROJ2OM1O3JKX26O1\n4ZK4ST3KWT44WP\n53QM463QLT6Z5\nV5M6URM2U4N5R\n683S532,S5SRN21S6WS6N0OYSN7VSN,25ZRNU2N5281R\n}T77PVTO8WP8\n94PyVY3Q1%38!U7d1QS0_Q3T1UPY3P81QS0P\nR4UQ,YV$Q@Z22Q,V22QIV!V8$54VI\n.ZS.R%6!R,63@WV\n!0XS8@\u0026\u00264XST6WS!0T!\n\u00268#\nV!Z\nW\u00260#,80D\n```\n\n### Final Clue\n\nDo the treasure hunt and find out what it says! Or just run\n`node answers/example-final-clue-answer.js`...\n\n\n\n## Files in this repository\n\n```\n├── answers\n│   ├── example-final-clue-answer.js -- example final clue decode\n│   ├── example-step-3-answer.js -- example producing the answer to step 2\n│   └── step0-answer.js -- a working encode and decode with offset 13\n├── readme.md\n├── step0-encode-and-decode.js -- the first assigment - implement the decode\n└── treasure-hunt-generator.js -- generate the clue text\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonesignal%2Fsuperpowers-treasure-hunt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonesignal%2Fsuperpowers-treasure-hunt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonesignal%2Fsuperpowers-treasure-hunt/lists"}