2.0: Module 2 Overview

Backend Fundamentals

In Rocket's Bootcamp we will learn to build applications that interact with the Internet. To start, we will learn how these applications run and important fundamentals about the Internet.

What is a Backend?

The word backend defines the over-all architecture of a system. It can mean different things depending on the context, but for the context of this course it will always refer to the web server application. In Bootcamp this also means a JavaScript program. The word backend and frontend also distinguish the client and the server- that is, the part of the application doing the requesting (the client) and the part that listens for incoming requests (the server).
In this module "backend" also implies discussing the properties of an application that runs in a backend environment- an environment that has different properties to a frontend (browser) environment. In this environment we can write JavaScript that interacts more directly with important hardware representations of the computer, such as the hard drive and the networking card. Being in a backend coding context means dealing more directly with the machine that the code is running on. This is in contrast to running JavaScript in a browser environment, which is mostly agnostic to which operating system or browser brand it is running on.
This context means doing away with all of the GUI representations of the running code, like buttons, images and emojis. The transition to a backend environment means that all the code is run from the terminal- the environment where we can programmatically interface directly with the computer.
In addition, this backend context allows us to introduce and talk about the basics of how the internet works- a crucial piece of how all our applications behave.
Diagram of how the frontend communicates with the backend

Where We Are Going

This module is a transitional section that puts in place some fundamental concepts as we work our way towards the cornerstone application we'll be building upon: the backend web application. We'll begin working on that code starting in module 3.

Learning Objectives

  1. 1.
    Write JS code that permanently saves files and content on the hard drive.
  2. 2.
    Understand the fundamentals of how relevant data is sent through the internet (i.e., HTML)
  3. 3.
    Understand the basic workings of a real internet website- the domain name, IP address, ports, etc.
  4. 4.
    Put code onto the real internet using a real domain name using AWS EC2.
  5. 5.
    Write JS code that can listen, take in and respond to a request from the internet.

Setup: Install Packages


If you have not already, install Node.js on your computer.


Install ngrok using the commands below. We will use ngrok for one of in-class exercises to expose our local servers to the Internet.


brew install --cask ngrok


sudo npm install -g ngrok

Setup: Create Accounts


Sign up for an AWS account if you don't have one already. We will use this to set up servers in the cloud to which we will deploy our code.


Sign up for a Namecheap account to buy a domain name.

Setup: Windows Subsystem for Linux (Windows Only)

If you have not already, install WSL on your Windows machine. For Windows, Module 2 marks a point that we will change the way files are stored and edited. From now on all files will be created and saved inside the Ubuntu / WSL part of the computer.

Working between WSL and Windows files

Apart from the terminal, all the files in your WSL Ubuntu instance can also be accessed from a Windows file explorer window. Type the following path into the address bar of any file explorer window:

Opening a Windows file explorer from VSCode Terminal

Directly access files from a Windows file explorer window from the terminal by running explorer from within Ubuntu:
/mnt/c/windows/explorer.exe <SOME_UNIX_PATH_TO_FILE>
Example: Open the current terminal directory:
/mnt/c/windows/explorer.exe .
Open a new VSCode window for the current directory from the terminal:
code .

Further Reference