Web Development with Go

Web Development with Go

English | MP4 | AVC 1920×1080 | AAC 44KHz 2ch | 113 Lessons (16h 26m) | 5.60 GB

Web Development with Go – 2022 Update

Learn to build real, production-grade web applications from scratch.

No trivial TODO apps that barely touch the complexity of a real app.

No frameworks that hide all the details.

In this course we build and deploy a photo sharing application complete with users, authentication, image uploads, a database, and more. We even deploy to a production server and set up automatic HTTPS.

Web Applications are Complex Systems
No matter how many tutorials I read, I always felt like there was something left out. Some part of the bigger picture that wasn’t explained, leaving me unsure of how to proceed. Or the tutorial was oversimplified to the point that it felt useless in the grand scheme of things.

After building several TODO apps I nearly gave up. My progress was painfully slow, and every time I figure out one major problem I would be left with two new questions that weren’t addressed by the oversimplified tutorials.

In the end, I was lucky. I happened to have a history building web applications using other programming languages, and with that knowledge I was able to piece things together. It wasn’t quick or easy, but it all slowly started to make sense.

What if you didn’t have to struggle through hundreds of tutorials?
What if you didn’t have to go through the painful process I did to learn how to build web services in Go? What if you could skip reading hundreds of tutorials all teaching roughly the same thing just to get one new tidbit of information out of it? You would finally be ready to build that application you have been considering, or apply for that job you had your eye on.

Web Development with Go will help you cut through all the complexity and finally become the developer you know you should be.

Table of Contents

1 A Basic Web Application
2 Troubleshooting & Slack
3 Packages and Imports
4 Editors and Automatic Imports
5 The “Hello, World” Part of our Code
6 Web Requests
7 HTTP Methods
8 Our Handler Function
9 Registering our Handler Function and Starting the Web Server
10 Go Modules
11 Dynamic Reloading
12 Setting Header Values
13 Creating a Contact Page
14 Examining the http.Request Type
15 Custom Routing
16 url.Path vs url.RawPath
17 Not Found Page
18 The http.Handler Type
19 The http.HandlerFunc Type
20 Exploring Handler Conversions
21 FAQ Exercise
22 Defining our Routing Needs
23 Using git
24 Installing Chi
25 Using Chi
26 Chi Exercises
27 What are Templates?
28 Why Do We Use Server Side Rendering?
29 Creating Our First Template
30 Cross Site Scripting (XSS)
31 Alternative Template Libraries
32 Contextual Encoding
33 Home Page via Template
34 Contact Page via Template
35 FAQ Page via Template
36 Template Exercises
37 Code Organization
38 MVC Overview
39 Walking Through a Web Request with MVC
40 MVC Exercises
41 Creating the Views Package
42 fmt.Errorf
43 Validating Templates at Startup
44 Must Functions
45 Exercises
46 Embedding Template Files
47 Variadic Parameters
48 Named Templates
49 Dynamic FAQ Page
50 Reusable Layouts
51 Tailwind CSS
52 Utility-first CSS
53 Adding a Navigation Bar
54 Exercises
55 Creating the Signup Page
56 Styling the Signup Page
57 Intro to REST
58 Users Controller
59 Decouple with Interfaces
60 Parsing the Signup Form
61 URL Query Params
62 Exercises
63 Intro to Databases
64 Intalling Postgres
65 Connecting to Postgres
66 Creating SQL Tables
67 Postgres Data Types
68 Postgres Constraints
69 Creating a Users Table
70 Inserting Records
71 Querying Records
72 Filtering Queries
73 Updating Records
74 Deleting Records
75 Additional SQL Resources
76 Connecting to Postgres with Go
77 Imports with Side Effects
78 Postgres Config Type
79 Executing SQL with Go
80 Inserting Records
81 SQL Injection
82 Acquire a new Record’s ID
83 Querying a Single Record
84 Creating Sample Orders
85 Querying Multiple Records
86 ORMs vs SQL
87 Exercises
88 Syncing the Book and Screencasts Source Code
89 Steps for Securing Passwords
90 Third Party Authentication Options
91 What is a Hash Function?
92 Store Password Hashes, Not Encrypted or Plaintext Values
93 Salt Passwords
94 Learning bcrypt with a CLI
95 Hashing Passwords with bcrypt
96 Comparing a Password with a bcrypt Hash
97 Defining the User Model
98 Creating the UserService
99 Create User Method
100 Postgres Config for the Models Package
101 UserService in the Users Controller
102 Create Users on Signup
103 Sign In View
104 Authenticate Users
105 Process Sign In Attempts
106 Stateless Servers
107 Creating Cookies
108 Viewing Cookies with Chrome
109 Viewing Cookies with Go
110 Securing Cookies from XSS
111 Cookie Theft
112 CSRF Attacks
113 CSRF Middlewar