Autoplay
Autocomplete
Previous Lesson
Complete and Continue
PROFESSIONAL Full Stack Developer
Java Master Class
1 - Java Master Class
Full Stack Professional Plus
1 - The Next Steps
TODO's
1 - Practise as I teach
2 - Discord
3 - Linkedin
4 - Textbook
5 - Exercises and Textbook
6 - Exercise Solutions
7 - Commit Your Changes
8 - Linux and Terminal
9 - JetBrains All Products - 1 Year Licence
10 - Intellij New Theme
11 - Repo
12 - Newsletter
Project and Environment Setup
1 - What we are about to cook
2 - Spring Initiliazer
3 - Open the project with IntelliJ
4 - pom.xml
5 - Lets clean up few things
6 - JDK
Getting Started with Spring Boot 3
1 - Your first Spring Boot Application
2 - Embedded Web Server
3 - Configuring Embedded Web Server
4 - Your first API
5 - @SpringBootApplication @RestController and @GetMapping
6 - Spring Web MVC
7 - JSON For Java
8 - Java Objects to JSON Objects
Code
HTTP, REST and APIs
1 - Introduction to HTTP
2 - The Evolution of HTTP
3 - HTTP Request and Response Messages
4 - HTTP Methods
5 - HTTP Status Codes
6 - URL
7 - API and REST API
8 - Public APIs and Other Types
9 - Why build APIs
Developer Tools
1 - Chrome Developer Tools
2 - Exploring XHR for our API
3 - Inspecting Instagram Network Activity
4 - Postman
5 - IntelliJ REST Client
CRUD - Read
1 - CRUD and Section Overview
2 - Customer Model
3 - Fake Database
4 - API Endpoint
5 - @PathVariable
Code
Structure the Backend
1 - N Tier Architecture
2 - Refactor - Controller Service and DAO
3 - @RestController @Service @Repository @Component
Code
Application Context and Beans
1 - Application Context
2 - Inspecting beans
3 - Bean Scopes
4 - Creating Beans
Code
Error Handling
1 - We are not handling error the right way
2 - Custom Exception
3 - @ResponseStatus
4 - Include error Message to Responses
Code
Databases
1 - Section Intro
2 - Postgres and Docker
3 - Verifying Docker Installation
4 - Postgres DB with Docker compose
5 - Connecting to Database
6 - Connecting to DB using IntelliJ IDEA
7 - Data Source & JPA
8 - Installing PostgreSQL Driver and Spring Data JPA Dependencies
9 - Configuring Datasource Properties
10 - Create Customer Table
11 - PSQL & SQL Cheatsheet
12 - Outro
Spring Data JPA
1 - Entity
2 - Inspecting The Database
3 - Column Contraints
4 - CustomerRepository
5 - CustomerJPADataAccessService class
6 - @Qualifier
7 - Saving Entities
8 - Exploring JPA Methods
9 - Outro
Code
Get Customer By Id Exercise
1 - The Problem
2 - Exercise Solution
CRUD - Create
1 - Intro
2 - Changing CustomerDao Interface
3 - Override insert customer
4 - Business Logic for Adding new Customer
5 - Controller @RequestMapping and @RequestBody
6 - Testing POST Request
Code
CRUD - Delete (Exercise)
1 - Exercise
2 - Exercise Solution
CRUD - Update (Exercise)
1 - Exercise
2 - Exercise Solution
Let's Pause
1 - Few Words
Datasources, JDBC & Flyway
1 - Intro
2 - JPA and Hibernate under the hood
3 - JDBC and JDBCTemplate
4 - DataSource and Connection Pools
5 - Flyway and Liquibase
Flyway
1 - Flyway
2 - Installing Flyway
3 - Applying and Understanding Flyway Migrations
4 - Lets Start Again but Right
5 - Create Customer Table
6 - Inspecting the Customer Table
7 - Working with Sequences
8 - Exercise
9 - Exercise Solution
10 - Migrations Documentation
11 - Match Entity Containts schema
12 - Validating Schema With Hibernate
13 - Exercise Solution
Code
JDBC Template
1 - Intro
2 - CustomerJDBC class
3 - JDBC Template Documentation
4 - Insert Customer
5 - Test Insert Customer
6 - Select All Customers
7 - RowMapper and ResultSet
8 - Refactor Row Mapper
9 - Exercise
10 - Exercise Solution
11 - Exercise
12 - Exercise Solution
13 - Why multiple DAO implementations
14 - More on databases later
Code
Spring JDBC vs JPA
1 - When to use JDBC over JPA
Important Question
1 - Would you 🤔?
Testing - Setup
1 - Intro
2 - Testcontainers
3 - H2
4 - Intalling Testcontainers
5 - Let's Write a test Testcontainers
6 - Inspecting DB created by Testcontainers
7 - Apply migrations with Flyway
8 - @DynamicPropertySource
9 - Don't Use @SpringBootTest for Unit Tests
10 - Abstract Testcontainres Logic
Code
Testing JDBC Template
1 - Intro
2 - JDBCTeamplate Test Class
3 - Configure JDBC Template
4 - selectAllCustomers Test
5 - selectCustomerById Test
6 - selectCustomerById Test 2
7 - Exercises
8 - Test Coverage
9 - Exercise Solution
Testing JPA Repositories
1 - Intro
2 - What do we need to test
3 - The Wrong Way
4 - @DataJpaTest and @AutoConfigureTestDatabase
5 - Writing Tests For CustomerRepository
Code
DAO Mock Testing
1 - No Need to Test DB Backed by List
2 - Mockito
3 - @Mock
4 - Test Select All Customers
5 - Test selectCustomerById
6 - Exercise Solution
Code
Testing Business Layer
1 - Intro
2 - Create CustomerServiceTest and MockitoExtension
3 - Test GetAllCustomers
4 - Test getCustomer
5 - Test if getCustomer Returns Empty Optional
6 - Test addCustomer
7 - addCustomer Test Code Explanation
8 - Test addCustomer 2
9 - Exercises
10 - Exercise Solution (Part 1)
11 - Exercise Solution (Part 2)
12 - Exercise
13 - Exercise Solution
Code
Integration Testing
1 - Intro
2 - @SpringBootTest
3 - WebTestClient
4 - The First Integration - canRegisterCustomer - Part 1
5 - Running canRegisterCustomer Integration Test
6 - The First Integration - canRegisterCustomer - Part 2
7 - canDeleteCustomer Integration Test
8 - Exercise Solution
Code
The Upcoming Sections
1 - Intro
The Jar file
1 - Intro
2 - Spring Boot Maven Plugin Jar
3 - Running Jar
Maven & Tests
1 - Intro
2 - Surefire Plugin
3 - Configuring Surefire Plugin
4 - Maven Failsafe Plugin
5 - The Jar File
6 - Section Outro
DevOps
1 - Intro
2 - What is DevOps
3 - DevOps Key Practices and Benefits
4 - Slides
5 - Outro
Docker
1 - Intro
2 - What is Docker
3 - Docker vs VM
Docker Commands Cheatsheet
4 - Undestanding Containers
5 - Docker Images and Containers
6 - Docker Architecture
7 - Docker Registries
8 - Docker Login
10 - Outro
Jib
1 - Intro
2 - What is Jib
3 - Configuring Jib Plugin
4 - Building Docker Image
5 - Pulling Image and Running Container
6 - Container Comunication
7 - Docker Network In Action
8 - Docker Compose
9 - Section Outro
10 - Outro
Code
AWS
1 - Intro
2 - Infrastructure Components Overview
3 - AWS Free Tier
4 - AWS Console Overview
5 - Elastic Beanstalk
6 - Elastic Beanstalk Key Terms
7 - Generate New Key Pair
8 - Saving Private Key
Elastic Beanstalk
1 - Getting Started With Elastic Beanstalk
2 - Elastic Container Service
3 - Dockerrun aws json
4 - Configure More Options
5 - Infrastructure Provisioned By EB
6 - Updating DB Host and Inspecting Logs
7 - SSH MAC & LINUX & Windows
8 - Bastions
9 - Create Customer DB
10 - Hooray we deployed the API
11 - Exploring EB
12 - Cloudformation
13 - Infrastructure As Code
14 - Multiple Environments
15 - There Are Many Other Ways To Deploy
Code
Git and Github
1 - Intro
2- What We Need To Do
3 - Organizing Folders (Monorepo)
Git Cheatsheet
4 - Create Github Repository
5 - Pushing code to Github
6 - Open the new Folder and Run Application
Code
Github Actions
1 - Intro
2 - Github Actions Overview
Continuos Integration
1 - Intro
2 - Creating the workfow
3 - Github Actions Services
4 - Checkout Action
5 - Setup Java Action
6 - Run Shell Command
7 - Commit and Push Workflow
8 - New Feature Branch
9 - Triggering the Workflow With Pull Request
10 - Make Build Workflow Fail
11 - Outro
Code
Continous Delivery
1 - Intro
2 - Create Deploy Workflow
3 - Postgres Service
4 - Setting Working Directory
5 - Clone Java and Login to Docker Hub
6 - Generate Custom Build Number
7 - Build Number Step
8 - Maven Verify Step
9 - SED Command
10 - Step to Replace tag in Dockerrun aws json
11 - The Deployment Process
12 - Create AWS Github Actions User with Programmatic Access
13 - Github Secrets for AWS
14 - AWS Elastic Beanstalk
15 - Commit and Push Dockerrun.aws.json STEP
16 - Continuous Delivery In Action
17 - Outro
Code
Slack Integration
1 - Intro
2 - Installing Slack
3 - Workspaces
4 - Webhooks
5 - Exercise
6 - Exercise Solution
7 - Deployment In Action With Slack Messaging
8 - Discord Webhooks
Javascript
1 - Intro
2 - Your First Javascript Code
3 - What is Javacript and How it works
4 - Visual Studio Code (VS Code)
5 - NodeJS and NPM
6 - Running JS with using Node
7 - Code Runner
8 - Comments
9 - Quotes and Colons
10 - Variables
11 - Datatypes
12 - Strings
13 - Objects
14 - Boolean
15 - Arrays
16 - Functions
17 - Built in functions
18 - Loops
19 - Other types of For Loops
20 - While Loop
21 - Comparison Operators
22 - Logical Operator
23 - If Statement
24 - Ternary if statement
25 - Switch Statement
26 - Hoisting
27 - Let Keyword
28 - Const Keyword
29 - When to Use Const vs Let
30 - Type Coercion
31 - Triple Equals
32 - Functions Overview
33 - Arrow Functions
34 - Function Default Parameter
35 - Callbacks
36 - Working with Objects
37 - Object Destructing
38 - Spread Operator on Objects
39 - Working with Arrays
40 - Arrays.Map
41 - Array Destructuring
42 - Default Exports
43 - Name Exports and Imports
44 - Your first Promise
45 - synchronous vs asynchronous code
46 - Async Await
47 - Promise all
48 - Promise base http client
49 - Outro
Code
React
1 - What is React
2 - Vite
3 - Scaffolding React App with Vite
4 - Application Folder Stucture
5 - SRC folder
6 - Understanding Available Scripts
7 - Clean up code to start fresh
Basics of React
1 - Intro
2 - JSX
3 - Components
4 - Creating Components
5 - Components and Props
6 - Props Children
7 - Tranformations with Map
8 - UseState hook
9 - UseEffect Hooks
10 - Outro
Code
React Building Our Web App
1 - Intro
2 - UI Libraries
3 - Installing Chakra
4 - Testing ChakraUI installation
5 - SideBar
6 - Customize The SideBar
7 - Axios and getCustomers method
8 - Vite environement variables
9 - Lets try to fetch data from the server
10 - CORS
11 - Allow CORS on the backend
12 - Render Customers & Loading Spinner
13 - Card Component
14 - Wrap and Wrap Item
15 - Customizing Card
16 - Include sha and commit to CD workflow
17 - Watch CD Workflow Deploy CORS changes
Backend and React - Gender Exercise (Challenging)
1 - Intro
2 - Exercise
Backend and React - Gender Exercise Solution
1 - Add New Migration
2 - Updating Customer Contructor to Include Gender
3 - Fixing Tests
4 - Fixing Integration Tests
5 - Add Gender and Profile Picture to Frontend
6 - Deployment
7 - Pull Lastest amigoscode-api version
8 - Outro
Code
React - New Customer Feature
1 - Intro
2 - Create Customer Button
3 - Drawer
4 - Installing Formik and YUP
5 - CreateCustomerForm component
6 - Customise Form (Part 1)
7 - Customise Form (Part 2)
8 - Disable submit button if form not valid
9 - Axios Post
10 - onSubmit
11 - Fetch customers on save
12 - Toasts and Notifications
13 - Using success and error notifications
React - Delete Customer Exercise
1 - Exercise
2 - Exercise Solution
React - Update Customer Exercise
1 - Exercise
2 - Exercise Solution
3 - Final Touches
Code
Dockerise React App and Docker Compose
1 - Intro
2 - Dockerfile react frontend
3 - Building React Frontend Docker Image
4 - Running React Frontend Container
5 - Looking inside the container
6 - Adding react service to docker compose
Code
React Frontend Deployment
1 - Intro
2 - Docker Build Args
3 - React Frontend Container Definition
4 - Deploying
5 - AWS Security Group and Rules
6 - Adding Security Group Rule
7 - Outro
Code
AWS - Exercise
1 - Exercise
2 - Exercise Solution
Security & JWT Overview
1 - Intro
2 - The Problem
3 - Spring Security
4 - Exploring Spring Security Documentation
5 - Introduction to JWT
6 - The Structure of JWT
7 - How We Are Going to Secure Our Endpoints
Implementing Security
1 - Installing Dependencies
2 - Starting the server
3 - Generate JWT Token
4 - Generate JWT Token - Signing
5 - Important
6 - Send Signed Token to Client
7 - Allow Only POST Requests to Register Customers
8 - Inspecting JWT Token
9 - Security FIlter Chain
10 - The Next Steps
11 - UserDetails
12 - Implement UserDetails
13 - Fixing Tests
14 - UserDetailsService
15 - Password Encoder and BCrypt
16 - Hashed Passowords In Action
17 - Authentication Provider
18 - DaoAuthenticationProvider
19 - JWT Token Validation Overview
20 - JWT Auth Filter and Extract Token
21 - Extract Subject From Token
22 - Validate Token and Set Authentication
23 - Registering The Filter
24 - Attatching JWT to Requests
25 - Fixing CustomerRepositoryTest
26 - Lets Pause
27 - Spring Security Architecture Explained
Code
28 - Outro
DTO Pattern
1 - Intro
2 - DTO Pattern
Code
Implementing Security PART 2
1 - Fixing canRegisterCustomer Integration Test
2 - We Have A Problem With Spring Security
3 - Authentication Entrypoint
4 - @ControllerAdvice and @ExceptionHandler
5 - Handle InsufficientAuthenticationException and Exception
6 - Exercise
7 - Exercise Solution canDeleteCustomer
8 - Exercise Solution canUpdateCustomer
9 - CORS Issue Again
10 - Spring Security CORS
11 - Login Exercise
12 - Login Exercise Solution
13 - Login Integration Test
14 - Test Login using Postman
15 - POST Mistake
16 - Deployment
17 - Testing API
Code
18 - Exercise
19 - Exercise Solution
20 - Outro
React - Login & Registration
1 - Intro
2 - Section Intro
3 - Installing React Router
4 - React Router Routes
5 - Login Page
6 - Syling Right Side of Login Page
7 - Login Form P1
8 - Login Form P2
9 - Login Post Method
10 - React Context
11 - AuthProvider
12 - Using Context
13 - Performing Login
14 - Local Storage
15 - Adding to Local Storage
16 - Redirected After Successful login
17 - Attach Authorization Header to HTTP Requests
18 - Add Password To Create New Customer
19 - Logout
20 - Add Details about Current Logged in Customer
21 - Protected Route
22 - Check Token Expiration with JWT Decode
23 - UseEffect in AuthProvider
24 - Redirect to Dashboard if logged in
25 - Testing when token expires
26 - Login Page Deployment
Code
27 - Exercise
28 - Exercise Solution (Part 1)
29 - Exercise Solution (Part 2)
30 - Deployment for Registration
AWS Load Balancers, Route53, Certificate Manager and SSL/TLS
1 - Intro
2 - Section Overview
3 - Load Balancers Overview
4 - The Need For a Brand New Environment
5 - Create new EB Environment with ALB
6 - Deploy new version with correct DB details
7 - Understanding ALB health checks
8 - Actuator and Health Endpoint
9 - Update Github Secrets
10 - Deploy Actuator Changes
11 - Changing LB Health Endpoint
12 - Route 53 - Register Domain
13 - Create A Record for Load Balancer
14 - SSL and TLS
15 - Issuing Certificate with Certificate Manager
16 - HTTPS Listener
17 - HTTP to HTTPS Redirects
18 - Outro
Code
AWS Amplify - React Deployment
1 - Managed Hosting Services for Web Apps
2 - Installing AWS Amplify
3 - Choosing Repo and Branch
4 - Build Settings (Part 1)
5 - Build Settings (Part 2)
6 - Deployment
7 - Custom Domain
8 - Protect Web App
9 - Previews
10 - Change React UI
11 - Raise PR
12 - Merge PR
Typescript
1 - Intro
2 - Your first Typescript code
3 - Nodejs installation
4 - VS code
5 - Install Typescript
6 - TS-node code runner settings
7 - Comments
8 - Declare variables
9 - String type
10 - Number type
11 - Boolean type