## Welcome Welcome Students to the Tier 1 of The Heartbroken Dev’s full-stack software engineering curriculum!! This is the first of several instructor led tiers which are specifically designed to give students the ability to build and deploy full stack software applications from scratch in 2024 and beyond. If you’re here, you’ve already completed pre-work. That pre-work, for many of you was your very first taste of writing anything that even remotely resembled computer code. I cannot begin to describe just how awesome this is… Whether you are starting from zero or have a decade of experience under your belt, the fact that you are here right now in tier 1 represents a willingness to be vulnerable and learn something new. It represents a willingness to take a chance on yourself. Things that you should be EXCEPTIONALLY proud of yourself for doing… Things I’m exceptionally proud of you for doing… Tl;dr - I love you all, and it means the world to me that you’re here. Okay, on to the code… ## What you’ll Learn **In this tier we will focus on these 3 things:** 1. Setting up your machine to successfully write full-stack javascript code and complete the curriculum. 2. Setting up some accounts in free services we will be using to deploy software throughout the course. 3. Getting a primer on the Javascript programming language and writing your first working javascript code. ## 1. Getting You Computer Setup for Javascript Development >[!TIP] Do ALL of the steps in this section >You may have done some of the steps to setup your machine and accounts which are detailed below during your pre-work assignments or in life before The Heartbroken Dev’s Bootcamp. > >However, each student should read through and understand each of these steps to ensure their machine is setup the way this curriculum is expecting. > >Future you thanks you for doing these things :) ### 1. GitHub Setup 1. **Create and/or Login to your GitHub Account:** 1. If you do not have a github account, head to: https://github.com/signup and create an account. Choose a username you wouldn’t mind a future employer or colleagues seeing. 2. If you already have a github account, login and return to this page once you’re logged in. ### 2. Terminal Setup *Mac Instructions:* Your machine should come with an application called “Terminal” - just confirm you have this app installed and can open it.  1. Use Spotlight (cmd + space) to search for “terminal" 2. Open the app. 3. Come talk to me if you can’t find the app. *Windows Instructions:* #### Native Command Prompt (Shell) Your system comes with a program called “Command Prompt.”  1. To access it, click on the Start menu or press the Windows key. 2. Type `cmd` into the search bar and press Enter. 3. The Command Prompt should appear in the search results. Click on it to open. 1. Alternatively, you can also find it by navigating to Start > All Programs > Accessories > Command Prompt. 4. If you have trouble finding or opening Command Prompt, it’s possible to download and install Windows Terminal from the Microsoft Store for a more modern experience. 1. Go to the Microsoft Store app on your PC and search for “Windows Terminal.” 2. Select the app from the search results and click on the “Get” button to download and install it. 5. Once you have either Command Prompt or Windows Terminal open, you're ready to proceed with the necessary commands or operations. 6. If you encounter any issues opening Command Prompt or Windows Terminal, please reach out for assistance. #### Windows Subsystem for Linux Alternatively you can install the windows subsystem for linux to be able to run a shell and have an environment more similar to mac. 1. Enable the WSL by going into the control pannel / settings and then select Apps (or it might be named Programs).  2. Select "Programs and Features"  3. Enable the  4. Scroll down and enable the Windows Subsystem for Linux  5. This will ask you to reboot, say yes. 6. After you reboot, run a admin powershell by typing it in the search bar next to the start menu and right clicking it from the list "Run as administrator" 7. This opens up a PowerShell. Type `wsl --install -D Ubuntu`. This will download the distro and prompt you for a username and password to use in your WSL environment. 8. Type `wsl` from a PowerShell to run the default shell. 9. Git will already be installed. You can install node with `sudo apt install nodejs` ### 3. Install Git First, some quick vocab for y’all: - **VCS:** “Version Control System” - A VCS is a tool to help keep track of versions of things, typically versions of code. - As an example, you might use a VCS tool to help you save an original copy of the HTML file you created for your resume in the pre-work assignment then use it to help you manage updates to your resume file as you modify that file over time. - VCS tools commonly provide a way to “commit” new changes, “clone” existing codebases, create variations of code and keep them separate in “branches”, and all sorts of other fun things we’ll learn about when we dig in to Git a bit later. - **Git:** is an open source VCS. Think of it like a program that runs on your computer that you can use in your coding projects to help manage versions of that project. - Managing versions of code becomes especially important the more iterations the code goes through, the more complex/large the codebase becomes, and the more people you have working on it. - Git is the most common VCS for code today, by a large margin. - We will have a section in a-bit digging in and understanding Git. - Git is NOT GitHub. - Git Bash is the name for the command-line terminal environment - Read about git here: https://git-scm.com/ - **SCM:** “Source Code Manager” - A SCM is a tool to help *manage* source code. In particular, to help manage the sharing and using and collaboration on source code. - GitHub is an example of an SCM (and the most popular in use by software engineers today). - **GitHub:** GitHub.com is a for profit company, owned by Microsoft, who provides Source Code Management services for its customers (amongst other services now too). - GitHub store Git Repositories for us in a centralized place (the “cloud”). - It enables multiple people to collaborate on the same codebase and help make the processes of merging different peoples changes into the codebase more seamless and error free. **Okay, now we’ll install Git - the Version Control System - on our computers…** 1. Head to https://git-scm.com/ 2. Click on “Downloads”  3. Download the version for your Operating System (Windows, Mac, Linux). 1. Click the Download icon for your OS under the “Download” banner. 1. DON’T download the GUI shown lower on the page. 2. This will download an installer, when finished, open and run the installer, following its instructions and using the default settings. Let me know if you have problems installing Git. ### 4. Install Node.js First, some more vocab for you! - **JavaScript:** - A programming language that runs in web browsers (and elsewhere in 2024). It sounds like Java, but its a totally different programming language. It was invented back in the Netscape Navigator days and has seen a ton of changes and innovations over the last few decades. Fans of the language might refer to it as “The language of the web.” Like other programming languages, its purpose is to allow people to write in human-readable ways instructions for computers to follow. The interactivity and dynamic features of modern web pages use javascript to code that interactivity. - **Client:** - A term used to describe the other half of the “client-server” model of computer networks. - Clients make requests and receive responses from Servers. - Web Clients typically fetch HTML, CSS, and Javascript files the web servers. - Your web browser (Chrome, Safari, Firefox, Etc.) is an example of a type of client you would call a “Web Client”. - Email Clients are another example of a Client. - The “Mail” app on an iphone is an example of an Email Client, it sends and receives data to and from Email Servers like Gmail, Yahoo Mail, and others. - A client could be just the “front-end” of the client-server model, your laptop might be drawn as the “client” on some diagrams. - A client can also be more specific, like the example of applications running on your computer/smartphone/etc like mail, chrome, etc… - **Server:** - A term used to describe the “back end” of the client-server networking model. Its just like any other computer, because any computer can be a server, and all servers are computers. Servers serve assets to typically many clients, its their main job to handle often LOTS of requests from LOTS of clients at the same time. - **Web Browser** - An application which fetches web pages from web servers, traditionally in the form of html, css, and javascript files. - Web browsers then handle the rendering of these html, css, and Javascript files (because looking at `