Become a Full-Stack Golang Developer - Learn everything from Front & Back-End Programming to deployment
Go is one of the most powerful, efficient, and highly performant programming languages. Go has seen an increased rate of adoption mainly because it is lightweight, easy to use, and displays great robustness when performing in a variety of domains. If you're a developer who wish to learn Go programming language to become a full-stack Go developer, then this learning path is for you.
This comprehensive 4-in-1 course is designed to teach you full-stack web development with Golang. You will learn to design the frontend and backend of any application along with deploying it to a cloud-based, production environment with hands-on examples. You will also learn to build various applications and enhance them in real-time.
This training program includes 4 complete courses, carefully chosen to give you the most comprehensive training possible.
The first course, Go Essentials for Full Stack Web Development, will start by introducing you to programming with Go. You will then learn how to install Go and how to configure your workspace and development environment. You will also learn basic Golang concepts and will explore arrays, slices, maps and user-defined types in Golang. Next, you will learn Go's built-in concurrency constructs and tools included in Go. Finally, you will implement a simple web server using Go.
The second course, Back-End Web Development using Go, starts off with covering essential concepts which include web templates, the model view controller pattern, managing requests and responses, and building web forms. You will learn uploading image/video files, implementing a datastore for a variety of databases (relational, document, and in-memory), creating secure cookies, implementing authentication middleware, and implementing an asynchronous task queue to perform long-running tasks in the background.
The third course, Front-End Web Development using Go, starts off with covering the fundamental mechanics of front-end web development such as performing common DOM operations, accessing native JavaScript functionality, making XHR calls, rendering templates on the client-side, transmitting Gob encoded data, and communicating over a WebSocket connection. You will then learn how to make your Go programs interoperable with JavaScript and how to read and write to the web browser's local storage. You will also learn how to create a single page application by implementing client-side routing and directly rendering templates in the web browser itself. Finally, you will learn how to build GopherFace, a fully functioning social media website with incredible features.
The fourth course, Go Production Deployments, starts off by showing you how to provision a virtual server instance on the Linode cloud, install MySQL and Nginx, and obtain and install a free SSL certificate from Let's Encrypt. You will then be introduced to Linode, a major cloud provider of virtual private servers. You will also see how to cross-compile a Go application, prepare and deploy a production deployment bundle. Next, you will find out how to dockerize a Go application and use the Docker Compose tool to define and run a multi-container Docker application. Finally, you will see how to turn a dockerized Go application into a system service.
By the end of this Learning Path, you'll become a full-stack web developer who'll be able to design the frontend and backend of any application along with deploying it to a cloud-based, production environment.
About the Author
Kamesh Balasubramanian
Kamesh Balasubramanian is the Founder and CEO of Wirecog, LLC. He is the inventor of Wireframe Cognition (Wirecog), an award-winning, patented technology that allows machines to understand wireframe designs and produce source code from them. He has over 20 years of software development experience and has implemented numerous solutions in the advertising, entertainment, media, publishing, hospitality, video game, legal, and government sectors. He is an award-winning, professional member of the Association for Computing Machinery and an InfyMaker Award winner. He was recognized as a “Maker of Change” at the 2016 World Maker Faire in New York and, upon request, has demonstrated Wirecog at MIT.
- No prior knowledge of Golang is required
- Learn the essentials of Golang for frontend, backend development and deployment of apps to a cloud-based, production environment
- Learn how to build custom packages, types, interfaces, and unit test suites
- Create custom middleware and implement an asynchronous task queue
- Understand how to develop powerful, feature-rich, client-side web applications
- Build a feature-rich social media website
- Deploy the Go application as a multi-container Docker application
- Run the Dockerized Go application in the cloud as a system service
This video provides an overview of the entire course.
This video is intended to teach some basic programming concepts for viewers that are completely new to programming.
- Know what a computer program is
- Understand why programming languages are important
- Learn basic programming concepts
This video shows the benefits of learning Go.
- Learn Go’s design considerations
- Know about Go’s simplicity
- Get to know the other top benefits found in Go
This video shows how to install Go on your computer.
- Go through the Go installation process
- Know the important Go installation details
- Get introduced to the go command
The video shows how to setup your own Go development environment.
- Learn how to set up the proper environment variables
- Walk through writing and running a Go program
- Get introduced to vim-go to the user
The viewer is in need of knowing Go basics, including performing variable declaration, knowing Go’s built-in types, and working with constants.
- Show the viewer how to declare variables
- Show the viewer Go’s available built-in types
- Show the viewer how to declare and use constants
The viewer needs to know how to both import packages and create their own.
- Show the viewer the significance of importing packages
- Show the viewer how to create their own package
- Show how to use the package the user created
The viewer needs to learn what a function is, how to declare them in Go.
- Inform the viewer of what a function is
- Show viewer how to declare a function in Go
- Explain details about the various function types in Go
The viewer needs to know how to make use of Go’s control structures.
- Demonstrate conditional if-else blocks to the viewer
- Demonstrate the switch statement to the viewer
- Demonstrate the for loop and its various uses
The viewer needs to know how to create a command line program that accepts command line arguments and prints usage information to the user of the program.
- Demonstrate how to accept command line arguments
- Demonstrate how to accept command line flags
- Demonstrate the help flag included in the program
The viewer needs a practical example showcasing all the things that they learned in this section.
- Introduce regex pattern to check username syntax
- Guide the viewer through how the program works
- Show user both a failure and success scenario
The viewer needs to know how to declare and work with Go’s array data structure.
- Show the viewer how to declare an array
- Show the viewer how to create a matrix using arrays
- Show the viewer how to print the matrix using 2 for loops
The viewer needs to know how to declare and work with Go’s slice data structure.
- Show the viewer how to declare a slice
- Show the viewer how to create sub slices
- Show the viewer how to remove and add a new element to a slice
The viewer needs to know how to declare and work with Go’s map data structure.
- Show the viewer how to declare a map
- Show the viewer how to build the map with key-value pairs
- Show the viewer how to sort the map alphabetically by key
The viewer needs to know how to declare and work with Go's user defined types and interfaces.
- Show the viewer how to declare a type
- Demonstrate how a type can implement an interface
- Demonstrate the usefulness of the empty interface type
The viewer needs to know how to create an instance of their own user defined type.
- Show the viewer how to declare a type representing a Social Media Post
- Demonstrate how to create a map of string aliases to state value constants
- Demonstrate how to create a new instance of the Social Media Post
The viewer needs to know the difference between concurrency and parallelism.
- Define and illustrate an example of concurrency.
- Define and illustrate an example of parallelism.
- Reveal how the illustrated examples relate to single/multi core processors.
The viewer needs to what a goroutine is and how to invoke a function as a goroutine.
- Define what a goroutine is
- Show how a function can be invoked as a goroutine
- Demonstrate an example of making the program wait for the goroutine to finish.
The viewer needs to learn what a channel is, and how to use them.
- Define a channel and introduce the arrow operator
- Show an example of how to send and receive messages through it
- Show an example of a buffered channel.
The viewer needs to know how to range over channels.
- Inform the viewer that we can iterate over each element as it gets received from the channel.
- Show that we can call the close function on the channel before ranging over the channel.
- Show how to to drain the message queue by ranging over the channel
The viewer needs to know how to use Go’s synchronization primitives.
- Show the viewer an example of a race condition
- Show the viewer how to use a mutex to solve the race condition.
- Show the viewer how to concurrently get web site responses using wait groups
The viewer needs a practical example of using concurrency to compute the value of Pi.
- Introduce the viewer to the Nilakantha series to calculate Pi
- Show the viewer how to concurrently compute Pi using goroutines and channels
- Show the successful calculation of Pi to 11 decimal places using the program
The viewer needs a walkthrough of the tools that come included with Go.
- Show the user the full list of commands that come with Go
- Walk the user through each command in the list
- Show examples of the most commonly used commands
The viewer needs to know about Go’s documentation functionality.
- Introduce the user to accessing documentation using go doc
- Show how to view documentation by running the web server
- Show how the documentation gets automatically generated
The user needs to know how to how Go’s automated unit testing system works.
- Introduce the user to the go test command
- Show an example of an existing unit test
- Show an execution of a suite of unit tests
The viewer needs to know how to create a suite of unit tests to verify the functionality of a custom package.
- Acquaint the user to the custom package we will be testing
- Walk through the user through the tests in the suite
- Show the execution of all the test suite
The viewer needs a brief introduction to the most basic concepts of the hypertext transfer protocol (HTTP).
- Explain how a HTTP transaction works between client and server
- Show some commonly used HTTP request methods
- Show some common response codes and explain their meaning
The viewer needs an introduction to Go’s net/http package.
- Introduce the net/http package’s Get function
- Show an example of using the Get function
- Demonstrate the Get request in a sample run
The viewer needs to learn how to create their own web server instance using the net/http package.
- Show the viewer how to register handler functions
- Show the viewer how to create an HTTP server instance
- Show examples of the web server handling various requests
This video provides an overview of the entire course.
This video is intended to the user about the importance of web templates.
- Get educated on what a web template is
- Learn how the web templating process works
- Know the benefits of using templates
This video is intended to teach some basic programming concepts for viewers that are completely new to programming.
- Get informed on how to use templates in Go
- Learn how to render a template
- See what a template looks like in Go
This video is for the viewer doesn’t know how to create a custom template for a given data object.
- Get introduced to a custom template
- Know how to render a template with a data object
- See the data object representation rendered with a template
This video covers the model view controller software architectural pattern.
- Get introduced to the model view controller architecture
- Present the benefits of using the model view controller architecture
- Reveal the implicit model view controller architecture found in Go web applications
The viewer may not be aware of how to route requests using the Gorilla mix package.
- Get introduced to the Gorilla mux package
- Learn how to register routes using Gorilla mux
- Learn how to read a parameter value supplied to the route
This video covers Middleware in Go.
- Get informed of the need for middleware
- See an example of logging middleware
- See an example of panic recovery middleware
In this video we will cover the HTTP Request Context.
- See an example of middleware to pass a context
- Learn how to create a context object
- Learn how to retrieve the context object using the request
In this video, we will learn how to create a Rest API using Go.
- Get to know the importance of a Rest API
- Learn how to register the endpoints for the Rest API
- Learn an implementation of one of the Rest API endpoints
In this video, we will learn how to build a web form.
- Learn how to declare an HTML form
- See how to use a struct that represents the form
- Demonstrate the rendering of a web form
In this video, we will learn how to extract data from a web form.
- Introduce the user to the FormValue function
- Demonstrate how to keep track of form fields that need to be prefilled
- Demonstrate how to pre-fill form values
In this video, we will learn how to validate a web form.
- Show the viewer how to validate form fields with Go
- Show the viewer how to populate errors for form fields
- Demonstrate an incomplete form submission to see the errors
In this video, we will become aware of web form security and XSS attacks.
- Introduce the viewer to an XSS attack
- Demonstrate an example of a XSS error
- Show the viewer how to mitigate the security risk of an XSS attack
In this video, we will create a web form with a dropdown field.
- Show the viewer how to populate a dropdown field
- Show the viewer how they can populate the mood field with emojis
- Demonstrate the social media post preview
In this video, we will learn about the items needed to implement file upload functionality.
- Learn how to declare a multipart form
- Explore how to declare the proper enctype and file input field
- Learn to the ParseMultipartForm function
In this video, we will learn how to upload an image file.
- Learn how to upload an image file using Go
- Learn how to dynamically generate a thumbnail for the image
- Learn how to display the thumbnail image alongside the uploaded image
The viewer may not be aware of how to upload a video file.
- Learn how to upload a video file using Go
- Learn to the ffmpeg library
- Learn how to dynamically generate a thumbnail from a video frame
In this video, we will learn about the MySQL Database.
- Get introduced to MySQL
- Learn how to run MySQL using Docker
- Demonstrate how to import a database schema to the database
In this video, we will learn to implement a MySQL datastore in Go.
- Learn how to implement a datastore in MySQL
- Learn how to declare the MySQL datastore
- Verify that the data has been saved to the MySQL instance
In this video, we will get introduced to MongoDB.
- Get introduced to MongoDB
- Explore how to run MongoDB using Docker
- Demonstrate the MongoDB command line interface
In this video, we will learn how to implement a MongoDB datastore in Go.
- Know how to implement a datastore in MongoDB
- Learn how to declare the MongoDB datastore
- Verify that the data has been saved to the MongoDB instance
In this video, we will get introduced to the Redis Database.
- Get introduced to Redis
- Learn how to run Redis using Docker
- Demonstrate the Redis command line interface
In this video, we will learn how to implement a Redis datastore in Go.
- Learn how to implement a datastore in Redis
- Know how to declare the Redis datastore
- Verify that the data has been saved to the Redis instance
The viewer is unaware of how to run a TLS web server instance using Go.
- Present the security benefits of TLS to the viewer
- Show the viewer how to properly generate a self-signed TLS certificate
- Show the viewer how to run a TLS web server instance using Go
In this video, we will learn how to verify the user’s login credentials.
- Learn how to create a login form
- Learn how to verify the login credentials
- Demonstrate an unsuccessful and successful login attempt
In this video, we will learn how to create a secure cookie.
- Get introduced to the secure cookie package from the Gorilla web toolkit
- Learn how to create a secure cookie
- Verify that the secure cookie was created
In this video, we will learn how to create a server-side, user session.
- Get introduced to the sessions package from the Gorilla web toolkit
- Learn how to create a user session
- Learn how to verify that the user session was created
In this video, we will learn how to implement authentication middleware using Go.
- Learn how to secure routes using authentication middleware
- Learn how to determine if a user is authenticated
- Verify that the authentication middleware is functioning properly
In this video, we will learn how to implement an asynchronous task queue in Go.
- Explore the benefit of an asynchronous task queue
- Explore how to implement an asynchronous task queue in Go
- Learn how to start the asynchronous task queue’s task workers
In this video, we will learn how to perform image resizing tasks in an asynchronous manner.
- Explore how to extract the image resizing logic into its own task
- Learn how to send the image resize task to the asynchronous task queue
- Verify that the asynchronous task queue properly performed the task
This video provides an overview of the entire course.
In this video, we will look into GopherJS.
- Get introduced to GopherJS
- Install and use GopherJS
- Demonstrate some basic DOM operations
In this video, we will perform basic DOM Operations using GopherJS.
- Check out the classic alert dialog
- Explore how to fetch an element by ID
- Learn how to dynamically change the css style property of an element
In this video, we will delve into the jsbuiltin Binding.
- Get introduced to the jsbuiltin Binding
- Know what the type of operator is used for
- Demonstrate a type of operation using the jsbuiltin binding
In this video, we will learn how to make an XHR Call in GopherJS.
- Explore what the XHR object is
- Learn how to make an XHR call to the web server
- Read the result of the XHR call
In this video, we will understand how to render templates on the client-side.
- Explore benefits of rendering templates on the client-side
- Check out an example of an inline template
- Learn how to render the inline template
In this video, we will learn how to encode data in the Gob format and send it over an XHR call.
- Get introduced the encoding/gob package
- Learn the concept of a Go-specific Environment
- Encode Gob data and transmit it over an XHR call
In this video, we will learn how to use Websockets in Go.
- Delve into an example of the echo client server from the Gorilla project
- Learn how to port the websocket client program to the web browser
- Demonstrate how the Go calls can be converted to their respective GopherJS calls
What do we do when we don't have GopherJS bindings for a particular JavaScript library? The answer is that GopherJS is interoperable with Java and we can use functionality within the js.Global object to call JavaScript functionality.
- Learn how to tap into the ThreeJS library functionality with GopherJS
- Explore how to instantiate objects from the library
- Learn how to access functionality form the library to create a 3D scene
Now that we've created the 3D scene in the web browser, how do we go about re-rendering the scene when the window dimensions change? We add an event handler.
- Get to know the problem
- Learn how adds an event handler on the resize event
- Explore how the 3D scene gets re-rendered once the window is resized
A stationary 3D scene is dull. Let's make the scene livelier by having the camera pan around the 3D Gopher. Let's also add color to the 3D Gopher.
- Add color material to the 3DGopher
- Learn how to call the JavaScript function to pan the camera using Go and GopherJS
- Demonstrate the 3D scene with the camera panning around the 3D Gopher
Did you know that the web browser comes with a built-in key/value database? It's called LocalStorage and we're going to show you how it works.
- Get introduced to Local Storage and cover its benefits
- Learn how to set a key value pair in local storage
- Learn how to get all key-value pairs that exist in local storage and how to clear all entries
Now that we've been introduced to Local Storage, how do we make use of it in Go using GopherJS? We'll show you how by building a working demo from the ground up.
- See a preview of the user interface we will build to show key-value pairs stored in Local Storage
- Learn how to display the contents in Local Storage on the web page
- Demonstrate all the common operations associated with local storage
Issuing "go build" or "gopherjs build" commands can get tedious when we make a lot of changes to our code, and we want to see those changes reflected immediately upon refreshing the web browser. We can use Kick to provide instant kickstarts.
- Get introduced to the Kick tool from the Isomorphic Go Project
- Demonstrate how to use Kick with the GopherFace web application project
- Demonstrate how Kick provides an instant kickstart when a Go or template source file is changed
Currently, the GopherFace web application has to do a full page refresh as we move through the different sections. How can we remove the need for full page refreshes? The answer is to use Single Page Architecture.
- Get introduced to Single Page Applications
- Learn how Single Page Applications work and provide details on their benefits
- Present a strategy to consider GopherFace as a Single Page Application
Did you know that routes can be registered on the client side as well? This allows us to prevent a full page refresh when going from section to section.
- Get introduced to the isokit package from the Isomorphic Go project
- Learn how to register client-side routes using the isokit Router
- Learn how handler functions can be defined for client-side routes
Explore document generation capabilities with Dynamics 365 for all those redundant documents that you must prepare for completing a Sale.
- Understand the situations where Word Templates would be useful
- Explore what are Word Templates by creating one
- Explore Microsoft Office feature behind Word Templates I.e. Mail Merge
Now that we know how to use TemplateSets, how do we use them with GopherFace to pursue a single page architecture?
- Demonstrate how to render the page on the server-side
- Demonstrate how to render the page on the client-side
- Demonstrate when the template is being rendered on the server-side and when it's rendered on the client-side
How do we implement the functionality to allow the user edit their profile? We'll need to know how to implement a form to edit the profile.
- Present the Rest APi Endpoints that are needed to implement the profile page
- Learn how to implement the form for my profile section
- Demonstrate the functionality to save the user's profile
How can we allow the user to upload their profile image and now have to perform a full page refresh?
- Review the save user profile Rest API Endpoint
- Learn how the profile image is uploaded over XHR
- Demonstrate how we can change the profile image multiple times without causing a single page refresh
How do we go about implementing the search feature for GopherFace?
- Learn how we can retrieve the list of gopherface users from the database
- Cover the find gophers Rest API endpoint
- Demonstrate that the find new friends section is working properly
Now that we are able to search for friends, how do we follow them, unfollow them, and display them in a list?
- Learn how to implement the follow functionality
- Learn how to implement the unfollow functionality
- Explore how to display the list of friends on a given user's profile page
How can we display a set of posts on a given user's feed? Let's use the social media post object we made in the first video course.
- Learn how to fetch posts to be displayed on the user's feed
- Learn how to save a social media post
- Demonstrate the save post functionality
Now that the GopherFace web application has reached its first milestone, what are the ways that we can extend its capabilities?
- Present improvements that can be made to the feed section
- Present improvements that can be done to the friends section
- Present improvements that can be done to the my profile section
This video provides an overview of the entire course.
In this video, you will get introduced to Linode, a major Cloud provider.
- Explore the features and benefits of Linode
- Discover the factors for choosing a VPS Provider
- Deploy and Run GopherFace on a Linode instance
This video is a guide to getting started with a new Linode virtual server.
- Create a new Linode virtual server
- SSH into your Linode virtual server
- Provision your Linode virtual server
This video is a guide to installing and configuring MySQL on a Linode virtual server.
- Install MySQL on the Linode virtual server
- Configure the MySQL instance
- Import the GopherFace data to the MySQL instance
This video is a guide to installing and configuring Nginx on a Linode virtual server.
- Introduction to a reverse proxy server
- Installing Nginx on the Linode virtual server
- Configuring Nginx as a reverse proxy
This video is a guide to installing a free SSL Certificate from Let’s Encrypt.
- Install the Let’s Encrypt ACME client
- Obtain the Let’s Encrypt Certificates
- Configure SSL on the Nginx instance
In this video, you will learn how to cross compile a Go program.
- Specify the target operating system
- Specify the target architecture
- Verify the cross compilation
This video will demonstrate the process to prepare the deployment bundle.
- Learn how to transpile the client-side application
- Identify the static assets that should be included with the deployment bundle
- Learn how to create the deployment bundle
This video will demonstrate the process to deploy the deployment bundle.
- Secure copy the deployment bundle to the Linode instance
- Move the bundle to the destination folder
- Rename the binary file
This video will demonstrate how to run GopherFace in the Cloud.
- Set up the environment variables that GopherFace relies on
- Learn how to run GopherFace in the foreground
- Learn how to run GopherFace in the background
This video will demonstrate how to set up the GopherFace web application as a system service.
- Get introduction to systemd
- Learn how to create a unit file that defines the GopherFace service
- Learn how to run the GopherFace service and enable it on system boot
This video gives an introduction to Docker.
- Learn what a Docker containers and a Docker image is
- Learn about the advantages of Docker
- Learn how GopherFace can run as a multi-container Docker application
In this video, you will learn how to install Docker on the Linode Cloud.
- Install the prerequisite software needed by Docker
- Add the stable Docker repository and then install Docker
- Install the Docker Compose tool
In this video, you will learn the process to dockerize the GopherFace web application.
- Learn the process to run GopherFace as a multi-container application
- Introduce the Golang Docker image
- Learn how to create a Dockerfile
In this video, you will learn how to use the Docker Compose tool.
- Introduce the Docker Compose tool
- Learn how to create a docker-compose.yml file
- Learn how to run the Docker Compose tool
This video demonstrates how to set up the dockerized GopherFace as a system service.
- Create a unit file to turn the dockerized GopherFace into a system service
- Enable the dockerized GopherFace on system boot
- Run the dockerized GopherFace as a system service