You will learn the skills required to become a successful full stack developer. Learn how to create UI and UX, APIs, and server-side business logic, as well as the persistence layer for storing, processing, and retrieving data.
Course 1: Backend Development with Node.js
Getting Started with Node.js
- Understand why to use Node.js.
- Install and understand how Node.js is updated.
- Understand the event loop and control how asynchronous code is processed.
- Use Node.js REPL to write js expressions, then just Node.js to run a js file.
- Use NPM init to create a package.json/lock to install dependencies and configure scripts.
Developing with TypeScript
- Take advantage of strict typing to reduce error by installing TypeScript to work with Node.js.
- Create valid, formatted, readable TypeScript by configuring ESLint/Prettier to work with TypeScript.
- Type variables, functions and objects with TypeScript.
- Manage async/await, promises and error handling with TypeScript.
Unit Testing with Jasmine
- Organize, write and run unit tests.
- Create asynchronous tests and use Supertest to perform endpoint tests. LESSON FOUR Building a Server
- Build a server by applying the top features of Express’s root app object.
- Improve an application by creating and applying middleware.
- Take advantage of the file system by learning to write and read files from disk.
Project: API for Image Processing
API for Image Processing Students will create an API for image processing that allows the user to visit a url and resize the image based on the parameters provided using URL parameters. When you view an image that has already been resized, a cached image is served. This is the basic functionality of placeholder image websites, and it can be combined with a frontend to better serve appropriately sized images. The API provides the first opportunity to bring together the course's technologies and tie them together in a commonly used application.
Course 2: Creating an API with PostgreSQL and Express
Databases and SQL
- Understand what databases are.
- Gain visibility into the most popular types of databases, their respective strengths and use cases.
- Become familiar with Relational Databases.
- Connect to a database with interactive terminal psql.
- Write basic database queries with SQL.
- Create, structure and fill a Postgres database.
- Know what CRUD is and how it pertains to database actions.
- Understand when and how to use SQL filters and foreign keys.
Creating an API with Postgres Connection
- Set up a Node application to connect to a postgres database.
- Install a Node package dotenv for environment variables.
- Learn best practices for using environment variables.
- Create Models in Node.
- Understand the need for database migrations.
- Install a Node package for database migrations.
- Set up a testing environment with a separate testing database.
- Testing models with Jasmine.
Creating an API with Express
- Understand RESTful APIs and how to design one.
- Understand the full stack request/response loop through the API.
- Be introduced to what CORS is and when it is necessary.
- Write Express custom middleware.
- Write clean, well organized Express routes that mirror API structure.
Authentication and Authorization in a Node API
- Be familiar with password hashing, salt and pepper.
- Understand why these practices are important for data security.
- Install a Node package Bcrypt and learn to set up Bcrypt for password hashing at user creation.
- Understand what JWTs are and how they work.
- Implement route authorization with JWTs.
SQL for Advanced API Functionality
- Understand database relationships and when to implement them.
- Create RESTful routes that demonstrate relationships between data via well organized routes.
- Write custom model and handler methods for extending API endpoints.
- Understand SQL Joins and result ordering.
- Write informational API endpoints to support dashboard functionality.
- Organize more advanced business logic in a Node API for cleaner code and separation of concerns.
Project: Build a Storefront Backend
Students will imagine themselves as a full stack developer at a small company who has been tasked with creating an API to meet a set of requirements created by business stakeholders and to be consumed by a front end developer coworker. You will apply your knowledge and skills from the course to determine the best architecture, endpoint structure, and database schema to complete the task.In this project, which is modelled after a workplace environment and a real-world task, you will demonstrate your ability to reason through the design of an API and write the code and logic required to meet requirements.
Course 3: Angular Fundamentals
- Set up and install the Angular CLI.
- Scaffold a new application using the Angular CLI.
- Generate a component.
- Organize components into closely-related sets of capabilities (i.e., modules).
- Build a component by defining a class containing application data and logic.
- Build templates to represent an application’s user interface.
- Use data binding to re-render the application by detecting changes in state.
- Extend the style or behavior of HTML elements with directives.
- Use the Angular router to handle navigation between views.
Libraries & Services
- Extend Angular’s base functionality by importing libraries and modules.
- Use dependency injection to provide custom services and capabilities.
- Find, add and manage an application’s dependencies.
- Fetch data via HTTP with the HTTP Client Module.
- Collect user input by building template-driven forms.
- Validate user input.
Project:- My Store
Students will create a full single-page Angular ecommerce application called MyStore for this project. Your application will include a variety of Angular components that communicate with one another, such as a product list component that displays a list of items for which a user can shop.You'll get this information by sending requests to a backend API, and then populate your page with items that can be added to the shopping cart. You'll create and nest these components in a logical structure to allow for optimal navigation and routing, such as directing users to a product detail page.You will be able to share data with any component that requires it, such as your shopping cart, by using services and other tools. Through Angular's powerful template-driven forms, your application will also be able to handle and respond to user input.
Course 4: Deployment Process
Setting Up a Production Environment
- Create and configure a Postgres database in RDS.
- Start an elastic beanstalk environment using the pre-configured node template.
- Create environment properties in Elastic Beanstalk.
- Create an S3 bucket and configure it for web hosting.
Interact with Cloud Services
- Ensure an application is healthy by using the Elastic Beanstalk CLI.
- Apply code changes in an S3 bucket by using the AWS CLI to update the bucket content.
- Apply code changes in Elastic Beanstalk by using the EB CLI to deploy a new application version.
Write Scripts For Web Applications
- Create scripts to build the back-end and front-end applications.
- Create scripts to deploy different pieces of a full-stack application.
- Create scripts that ensure a build follows quality standards.
- Create a root level script to install all application dependencies.
Configure and Document a Pipeline
- Connect a repository to Circe.
- Create a manual approval step for deployments.
- Create an automated integration process.
- Create documentation using markdown files and diagrams.
- Create an automated deployment process.
Project: Hosting a Full Stack Application
Students will host a full-stack application and build an automated deployment pipeline. You will have the option of using your own project or a full-stack application that will be provided. Students will provision AWS infrastructure and prepare the application for hosting during the project. Following this, you will create various scripts for deploying the application as well as a deployment pipeline. This project will introduce students to a critical process that is present in the majority of software development projects.