

0 / 2 embers
0 / 3000 xp
click for more info
Complete a lesson to start your streak
click for more info
Difficulty: 4
click for more info
Not enough gems
Cost: 6 gems
1: Welcome
incomplete
2: TypeScript Setup
incomplete
3: Normalize URLs
incomplete
4: Extract Page Content
incomplete
5: Extract Links and Images
incomplete
6: Structure Page Data
incomplete
This lesson's interactive features are locked, please to keep using them
In this project, we'll be building a Web Crawler in TypeScript using Node.js! To rank well in Google Search, websites need to internally link pages one to another. For example, my blog post about the benefits of cheap haircuts should probably have a link to my other blog post about the best places to get haircuts.
We're going to write a TypeScript application that generates an "internal links" report for any website on the internet by crawling each page of the site.
If you try to complete this course without WSL 2 installed on Windows, you're gonna have a bad time.
Get hands-on practice with local TypeScript development and tooling
Practice making HTTP requests in TypeScript
Learn how to parse HTML
Practice unit testing
Before we dive into the project, let's make sure you are all set up properly. You will need:
A code editor. I use Zed, though you can use whatever you're comfortable with.
The Boot.dev CLI installed, and you'll need to be logged in.
NVM installed.
I recommend NVM because it allows you to have multiple installations of Node.js on the same machine. After installing NVM, add an .nvmrc file to the root of your project directory that contains a snippet of text:
22.15.0This allows you to simply type nvm use in your CLI while in the root of your project to activate the correct version of node! You may get an installation command to run if you don't yet have that version of node, but it's just another one-liner.
Check to make sure you've activated the correct version of node by typing:
node --version
# Prints: v22.15.0Submit the CLI tests. There's no penalty on failure for this lesson.