{"id":21031119,"url":"https://github.com/kylewelsby/monzo-code-challenge","last_synced_at":"2026-03-19T18:32:21.865Z","repository":{"id":169177016,"uuid":"644779185","full_name":"kylewelsby/monzo-code-challenge","owner":"kylewelsby","description":"About Code challenge completed for Monzo","archived":false,"fork":false,"pushed_at":"2023-05-24T22:34:17.000Z","size":32,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-20T15:20:52.639Z","etag":null,"topics":["code-challenge"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kylewelsby.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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},"funding":{"github":["kylewelsby"],"patreon":"soulectiontracklists","ko_fi":"mekyle"}},"created_at":"2023-05-24T08:36:51.000Z","updated_at":"2023-05-24T22:30:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"5f09bd55-ff3a-4822-9d99-35934594b0e7","html_url":"https://github.com/kylewelsby/monzo-code-challenge","commit_stats":null,"previous_names":["kylewelsby/monzo-code-challenge"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kylewelsby%2Fmonzo-code-challenge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kylewelsby%2Fmonzo-code-challenge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kylewelsby%2Fmonzo-code-challenge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kylewelsby%2Fmonzo-code-challenge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kylewelsby","download_url":"https://codeload.github.com/kylewelsby/monzo-code-challenge/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243470858,"owners_count":20296003,"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","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":["code-challenge"],"created_at":"2024-11-19T12:24:23.287Z","updated_at":"2025-12-28T15:57:15.212Z","avatar_url":"https://github.com/kylewelsby.png","language":"HTML","funding_links":["https://github.com/sponsors/kylewelsby","https://patreon.com/soulectiontracklists","https://ko-fi.com/mekyle"],"categories":[],"sub_categories":[],"readme":"# Monzo Code Challenge\n\nThis repository contains the solution to the\n[Monzo Code Challenge](./CHALLENGE.md) completed by\n[Kyle Welsby](https://github.com/kylewelsby). The challenge involved building a\nWebScraper tool using Deno, a secure and modern JavaScript/TypeScript runtime.\n\nThe WebScraper tool enables you to scrape a given website for URLs, navigating\nthrough different levels of URLs to discover more. It provides flexibility in\nspecifying the depth of traversal and allows you to save the scraped URLs to a\ntext file for further analysis.\n\n## ⚡️ System Dependencies\n\nBefore using the WebScraper tool, make sure you have the following dependencies\ninstalled on your system:\n\n- [Deno](https://deno.land): The runtime environment required to build and run\n  the tool.\n\nFollow the steps below to install Deno:\n\n1. Visit the [Deno installation guide](https://deno.land/#installation) for\n   detailed instructions based on your operating system.\n\n2. Install Deno according to the provided instructions.\n\n3. Verify that Deno is installed correctly by running the following command in\n   your terminal:\n\n   ```bash\n   deno --version\n   ```\n\n_At the time of writing the latest stable version of Deno is 1.33.4_\n\n## 🎲 Usage\n\nTo use the WebScraper tool, follow the steps below:\n\n1. Ensure that you have Deno installed on your system. If not, refer to the\n   System Depencencies section above for installation instruactions.\n\n2. Open your terminal or command prompt and navigate to the directory where the\n   `mod.ts` file is located.\n\n3. Run the following command, replacing the `\u003cwebsite-url\u003e` placeholder with the\n   URL you want to scrape:\n\n   ```bash\n   deno run --allow-net --allow-write --allow-read mod.ts \u003cwebsite-url\u003e [options]\n   ```\n\n   | Option            | Description                                                                                                                       | Default  |\n   | ----------------- | --------------------------------------------------------------------------------------------------------------------------------- | -------- |\n   | `\u003cwebsite-url\u003e`   | The URL of the website you want to scrape.                                                                                        |          |\n   | `--levels=\u003cn\u003e`    | (optional): Specify the number of levels deep to scrape. By default, the tool will go up to 4 levels deep.                        | 4        |\n   | `--output=\u003cfile\u003e` | (optional): Specify the output file to save the scrapedå URLs. If not provided, the URLs will be printed to the console (stdout). | `stdout` |\n\n   For example, to scrape the https://monzo.com/ website up to 3 levels deep and\n   save the URLs to a file named urls.txt, use the following command:\n\n   ```bash\n   deno run --allow-net --allow-write --allow-read mod.ts https://monzo.com/ --levels=3 --output=urls.txt\n   ```\n\n4. Wait for the scraping process to complete. The tool will navigate through the\n   specified levels of URLs, discovering more URLs along the way.\n\n5. Once the process finishes, you will find the scraped URLs either in the\n   specified output file or printed in the console, depending on your chosen\n   configuration.\n\nNote: The --allow-net, --allow-write, and --allow-read flags are used to grant\nnecessary permissions to the tool for network access, writing to files, and\nreading files, respectively. Make sure to include these flags when running the\ncommand.\n\n## 🧪 Testing\n\nTo ensure the correctness of the WebScraper tool, unit tests are provided.\nFollow the instructions below to run the tests:\n\n```\ndeno test -A\n```\n\n## 🚨 Linting\n\nDeno provides built-in linting and formatting tools to ensure code consistency\nand maintainability. Follow the instructions below to run the linters and\nformatters on your WebScraper tool codebase:\n\nRun the following command to format the code using Deno's built-in formatter:\n\n```bash\ndeno fmt\n```\n\nRun the following command to run the Deno linter:\n\n```bash\ndeno lint\n```\n\nThe linter checks your code for potential issues, enforces best practices, and\nalerts you to any deviations from the recommended coding standards.\n\n## 🎓 License\n\nMIT: https://kylewelsby.mit-license.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkylewelsby%2Fmonzo-code-challenge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkylewelsby%2Fmonzo-code-challenge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkylewelsby%2Fmonzo-code-challenge/lists"}