This course has been updated! We now recommend you take the Full Stack for Front-End Engineers, v3 course.
Table of Contents
Introduction
Introduction
Jem Young gives an overview of what front end is, what back end is, and what full stack is. Full stack means building an application from start to finish.Why Full Stack
Jem demonstrates how an understanding of full stack makes better engineers.Command Line Overview
Jem explains that the command line proficiency allows engineers to not have to rely on GUIs. Command line is also easier to script.Command Line Practice
Jem demonstrates common commands needed to use the command line, including cd, ls, pwd, mkdir, rmdir, and man.Shells
Jem explains the difference between a shell and a terminal, and states that the course will focus on bash, a unix shell.
Understanding the Internet
Understanding the Internet
Jem defines the internet as a series of globally and publically interconnected devices, and defines the intranet, which is a private internet.IP Addresses & Protocols
Jem explains what an IP address is, explores different kinds of protocols, namely TCP and UDP, and demonstrates how to ping a website from the terminal.Domain Name System
Jem explains the DNS domain name registration system and how domain names make the internet more accessible through nameservers. Subdomains are also discussed.Trace Routes Practice
Jem demonstrates how to use trace routes to observe the different server hops for a website, and explains that trace routes conduct ICMPs Internet Control Message Protocol.Packets
Jem explains that a packet is a folder containing data, metadata in the form of headers, and information about where the packet is coming from and where it is going.Understanding Net Neutrality
Jem reviews what the internet is, and what net neutrality is, and why it is important to understand it.
Servers
VIM Overview & Modes
Jem explains what VI Improved, VIM, is, and gives an overview of basic VIM modes.VIM Practice
Jem demonstrates how to create and access a file, insert information, save, and quit in VIM.Server Exercise
Jem explains that servers can have different forms as long as they can take requests, and instructs the students to build a simple server using VIM through their terminal.Server Solution
Jem live codes the solution to the server building exercise.Data Centers & the Cloud
Jem explains what data centers are, and how servers work, then explains how the cloud works, and what an elastic cloud is.Virtual Private Server Setup
Jem demonstrates how to create a cloud server on the DigitalOcean platform. This setup is essential to be able to follow along with the rest of the course.Operating Systems
Jem explains what a kernel is, what utilities are, and covers the two main operating systems: windows and unix, and introduces linux.SSH
Jem explains that there are two ways of logging into servers, secure socket shell and username/password, and dives into how SSH works.SSH Key Practice
Jem demonstrates how to create an ssh key, save it on a DigitalOcean server, and how to use grep to find it.Connecting to the Server
Jem shows how to connect to a server using an SSH key.
Server Setup
Buying a Domain Name
The students are instructed to buy a domain. Jem explains how domains get resolved, what DNS records are, and what are CNAME and A record.Domain Setup
Jem demonstrates how to create an A record, and a www record through the domain provider.Server Setup
Jem demonstrates how to update the apt command line tool, how to upgrade it, and how to add a new user to the server.User Setup
Jem demonstrates how to give superuser access to the server that was setup earlier.Setting User Permissions
Jem demonstrates how to add the SSH public key created previously to another file.Disabling the Root User
Jem demonstrates how to disable the root user through the new super admin user account created previously, and add the public key to a file in the server using VIM.Nginx Overview
Jem demonstrates how to install Nginx(engine x), an HTTP and reverse proxy server that helps route proxies.Nginx Configuration
Jem demonstrates how the Nginx server is configured, how to create an HTML page, and how to make it the default page that will appear on the browser when connecting to the server.Node.js Configuration
Jem defines Node.js as a JavaScript runtime system that runs on the Chrome V8 engine, explains why node is useful to install on a server, and how to install it.Application Architecture
Jem explains the importance of an application's architecture and stack, and its consequences on an application's sustainability.Application Setup
Jem demonstrates how to install the Express framework, move into the app directory, initialize an empty git repo, create a ui file, and update a file using VIM.Proxy Passing Traffic
Jem explains that Nginx needs to be connected to the Express framework installed earlier, and demonstrates how to point Nginx to the correct port by using a proxy pass.Process Manager
Jem demonstrates how to install pm2, a Node process manager that helps to keep an application online and up to date, even when the server restarts.Version Control with git
Jem creates a repository, a new SSH key, adds the key to GitHub, and pushes code using an SSH connection.Server Setup Recap
Jem reviews the different server setups taught during this section of the course, shares resources about installing an intrusion detection system, and about best practices when using the Express.js framework.
Bash Basics
Standard Streams & Redirection
Jem describes the different types of standard streams, standard output (stdout), standard input (stdin), and standard error (stderr). Redirection, namely, read, write, and append to file, is also discussed.Finding Files & Directories
Jem demonstrates how to use the bash command find to access directories, files, and print logs in the terminal.Bash History Tips
Jem returns back to the server history, and shares new Bash commands to access the server log.Searching File Contents with grep & zgrep
Jem demonstrates how to use grep to conduct a search inside a file.
Nginx Config Basics
Nginx Redirect
Jem compares temporary redirects with permanent redirects, and when to use them.Nginx Subdomain
Jem explains that a subdomain is part of a main domain, and can be allocated to a specific section of the main server, and function on its own.Nginx File Compression
Jem explains what compressed files are, how Nginx automatically compresses files, and describes the positive effects of compression.
Security
Why Security
Jem describes security best practices, and what types of attacks a hacker can try once they access a server.Read Auth.log
Jem explains how to use MaxMind to track from which IP addresses from the auth.log are from.Security Checklist
Jem shares a security checklist to keep a server safe, and talks about the zero day attack, which results from unpatched system vulnerabilities.Unattended Upgrades
Jem demonstrates how to enable unattended upgrades in a server to prevent some attacks.Security Ethics
Jem discusses security ethics with the audience , and when or how to hold companies accountable for their bugs and security breaches.Firewalls
Jem defines what a firewall is, and demonstrates how to install Nmap.Ports
Jem defines what ports are, and shares what the best practices for ports are to keep a server secure.Uncomplicated Firewall
Jem explains what uncomplicated firewalls are, demonstrates how to check a server's firewall status, enable ssh, and enable the firewall.Permissions
Jem demonstrates how to look into the server's permissions log.Upgrade Node.js
Jem demonstrates how to upgrade Node.js in the server, shares a resource that explains what a shell command does, and briefly reviews the security best practices he discussed in this section.
HTTP
Defining HTTP
Jem defines what HTTP is, and why this is an important protocol for UI engineers.HTTP Headers & Cookies
Jem defines the different headers that are included in an HTTP request, focuses on the header set-cookie, and explains why cookies are important elements of the web.Custom Header & Status Code Exercise
Jem defines the different status codes. The students are asked to create a custom header and status code.Custom Header & Status Code Solution
Jem shares the solution to the custom header and status code exercise.HTTPS
Jem explains what HTTPS is, and what certificate authorities are.Adding HTTPS to NGINX
Jem demonstrates how to enable https on a server using Certbot.HTTP/2
Jem explains what the requirements are to enable HTTP 2, and explains the main differences between HTTP and HTTP 2.HTTP/3
Jem introduces HTTP 3, and explains that it is not widely used yet.
Containers Basics
Containers & Microservices
Jem introduces containers, microservices, and the relationship between the two.Docker & Orchestration
Jem introduces Docker, a container service, explains what orchestration is, and how it helps make the roll out of multiple containers run smoothly.Load Balancers
Jem defines what load balancers are, and how they determine to which server they go to, using scheduling algorithms.Deployment
Jem shares a few resources that allow quicker deployment with the help of a configuration script.
Saving Data
Files & Databases Overview
Jem explains why it is important to save data in a way that is queryable.Database Types
Jem compares relational databases and non-relational databases, explains their main differences, and describes the context in which each one is used.Redis
Jem demonstrates how to install Redis on the server.WebSockets
Jem explains what websockets are, the difference between them and long polling, and explains that websockets will be used in this course's final project.Chat Bot: Exercise
Jem instructs the students to build a chat bot using websockets.Chat Bot: Solution
Jem live codes the solution to the chat bot exercise.