• Post category:StudyBullet-17
  • Reading time:25 mins read

GO (golang): Develop Modern, Fast & Secure Web Applications
A comprehensive introduction to developing fast & secure web applications in GO (beginners & fairly advanced developers)

What you will learn

How to build modern, fast, and secure web applications in Google’s GO programming language

How to code your programs in the GO (golang) programming language

How to organize your application in GO while developing correctly

Integrate 3rd party packages with GO Modules

Write plain JavaScript without depending on something like jQuery

Creating HTML pages using HTML5

Creation and usage of Cascading Style Sheets (CSS)

How to write tests in GO

Brief insight in creating Entity Relationship Diagrams

Using “migrations” (and FIZZ) to build a develpoing environment for a PostgreSQL database

How to setup and connect to a PostgreSQL database (server) in GO

Managing sessions in GO

Learn best practices for security in web applications

Create and use of middleware in GO

Implementation of secure user authentication in GO

Deployment of a GO web application to a real server

Setup of Caddy 2 as Reverse Proxy with HTTPS

Many other competencies a full-stack developer should have

Description

You are invited on an exciting journey where you will learn, with guidance, to use Google’s GO programming language to develop modern web applications that are highly scalable in both depth and scope. You’ll take advantage of the extraordinary capabilities GO holds for full-stack developers to build all sorts of server/client-based applications.

This course is intended as a rich resource for learning programming basics as well as concepts in general and developing modern and fast web application with Google’s GO (golang) programming language in particular – a comprehensive learning experience.

The easiest way to learn new programming techniques and modern concepts in software design is to apply them using real-life examples. In this course you will learn how to plan, implement, test, debug and finally install a modern web application – a homepage for renting out bungalows as vacation homes – on a web server.

You will learn about the advantages of the GO programming language and, on the way to a working application, how to integrate other elements such as SQL/PostgreSQL databases, JavaScript (client-side and server-side), AJAX techniques, HTML, CSS and how to use essential tools for full-stack developers.

Besides programming in GO, this course also deals with

  • HTML5 / CSS / DOM
  • JavaScript (Vanilla, without jQuery dependence)
  • SQL / PostgreSQL
  • Migrations / FIZZ
  • JSON
  • Routes, Handlers, Models
  • Tests, Error Handling
  • Linux (bash), Windows (Command Line), macOS (bash)
  • git / github
  • Installation on a webserver
  • and much more

While suitable for beginners with basic programming experience, it is designed to be a resource for fairly advanced developers. It’s filled with examples, explanations, and clarifications of concepts needed to develop modern, fast and secure web applications, and comes with a code repository on Github and a detailed course outline as PDF, which serves as part of the course.

Included external packages an dependencies:

  • go-chi | Router
  • scs | Sessions
  • nosurf | CSRF-Token
  • govalidator | Validator (server-sided)
  • pgx/v5 | PostgreSQL Driver & Toolkit
  • go-simple-mail | Golang package for sending e-mail
  • Caddy 2 | a powerful, enterprise-ready, open source web server with automatic HTTPS written in GO

Also playing a part:

  • bootstrap | Bootstrap – HTML, CSS, and JavaScript framework (no jQuery)
  • RoyalUI-Free-Bootstrap-Admin-Template | Free Bootstrap 4 Admin Template
  • Simple-DataTables | DataTables but in TypeScript transpiled to Vanilla JS
  • postgres | PostgreSQL Server (mirror only)
  • pop | Soda/Migrations – standardization of database tasks
  • dbeaver | Dbeaver – free multi-platform database tool
  • vanillajs-datepicker | Vanilla JavaScript datepicker
  • notie | unobtrusive notifications – clean and simple JavaScript
  • SweetAlert2 | so many options for JavaScript popups
  • MailHog | Web and API based SMTP testing
  • Foundation for Emails 2 | Quickly create responsive HTML e-mails that work
  • Cobra | A Framework for Modern CLI Apps in GO
  • GoDotEnv | A GO port of Ruby’s dotenv library

When you sign up for this course, you have lifetime access to the course. You can learn at your own pace and return to content at any time for deeper insights or to learn additional concepts when you are ready.

  • This course also comes with a 100% money back guarantee.
  • I think this is one of the most comprehensive courses in English for developing modern, fast, and secure web applications from scratch.
  • And if for some reason the course doesn’t work for you, you can get a full refund within the first 14 days*.

Enroll now!


Get Instant Notification of New Courses on our Telegram channel.


You can get great value from this course and, more importantly, you’ll have a great time learning one of the best programming languages ever – the GO programming language, the fastest growing programming language with the highest paid programmers in the US within the last years.

GO is an open-source programming language that makes it easy to develop simple, reliable, and efficient software.

GO was developed by computer science luminaries at one of the best, if not the best, software development companies ever – Google. The design and implementations are by Robert Griesemer, Rob Pike and Ken Thompson.

GO is a very good choice for learning a programming language because it was developed by some of the same people who created the C programming language, Unix, and UTF-8 – some of the most influential contributions to computer science. With GO Robert Griesemer, Rob Pike, and Ken Thompson created a modern programming language that can easily run on multiple processors in parallel, works smoothly in different environments, and makes it easy for programmers to write programs with a very streamlined and user-friendly syntax.

Why did Google develop a new programming language?

In Google’s words, “GO was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either

  • efficient compilation,
  • efficient execution, or
  • ease of programming;

all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java. GO is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing.

Finally, working with GO is intended to be fast: it should take at most a few seconds to build a large executable on a single computer. To meet these goals required addressing a number of linguistic issues: an expressive but lightweight type system; concurrency and garbage collection; rigid dependency specification; and so on. These cannot be addressed well by libraries or tools; a new language was called for.

Learn with me the advantages in web programming of one of the best programming languages ever developed. You will get knowledge, ideas, concepts, inspiration and code examples to design software and applications yourself according to your wishes.

* Check Udemy’s Terms and Conditions for details.

English
language

Content

Introduction

Allow Me To Introduce Myself – The “whoami” For Udemy Courses
Why GO Of All Things? Why Not Node.js Or Another Programming Language?
Installation Of GO And Setup Of A Free Integrated Development Environment (IDE)
Learning Notes On This Course
Accompanying Course Outline As PDF (Also Available On Github)
Brief Section And Content Overview
Basic Sources Of Information On The Web About GO And Used Software

Brief Dive Into Go As A Crash Course

Take This Hint And This One, And This One Too!
Hello, World
Variables – First Things First
All Functional?
Pointer – Pointing The Finger At Others
The Shadow World – It’s Always About Types And Structs
Receiver – The Madness Gets Method
Maps And Slices
Decisions & Conditionals – If, Else, Else If, Switch
In Da Loop: “For” And “Range” As A Team
Polymorphism: Interfaces – The Name Says It All
Go Modules
Channels Are The Key To Concurrent Communication In Go!
Import And Export Of Data In Json Format
Unit Tests

Basic Web Application – The Beginning

The HTTP Request/Response Cycle
The First Web Application: “It’s Alive! It’s Alive!”
Unleash The Full Potential Of Handlers With The Magic Of Functions!
Errors Have Value And Are A Value
HTML Templates: Because Ain’t Nobody Got Time To Code That From Scratch!
Organize And Conquer: Let’s Tidy Up And Optimize Our Space!
Restructuring – A Structure Like From The Textbook
Layouts Like A Boss
A Dynamic Cache For Effective Template Processing
Creating A Static Cache #1: Efficient Template Processing
Creating A Static Cache #2: Introducing Configuration File For Global Variables
Creating A Static Cache #3: Final Step Of Implementation Using Global Variables
What Else You Can Do With A Configuration File
Sharing Is Caring: Sharing Data With Templates

GO With The Flow: An Introduction To Middlewares In GO!

Introduction Of Middleware And Routing In GO
Implementation Of A Simple Routing Package (bmizerany/pat)
Developer’s Favorite: go-hhi/chi As New External Routing Package
Middleware: DIY Your Own Middleware Today And Be The Coolest Coder In Town
State Management With Session(s)
Brief Function Test For Session Data

Project Picking And Working With Forms: A Paperless Dream!

Thoughts On Project Selection
Brief Note On Github
Static Files: Hold Still And Get Integrated!
HTML – A Trip To The 1990th
Spot Landing! We Create A Landing Page
Preparing The HTML Of The Bungalow Pages
Create And Pimp An Availability Check HTML Page
make-reservation.html Is Our Answer To: “Do You Have A Reservation?”

Code-Kaboom! JavaScript And CSS Come Into Play

JavaScript: Friend Or Foe?
Effortlessly Pick Dates: Grabbing A Vanilla JS Datepicker Package Now!
Notie By Nature: Show Simple Messages
Sweetalert: Candy Time!
Sweetalert Is A Candy Store – Our Own JavaScript Module
From Boring Button To Superstar: A New Functionality In Our JS Mod
CSS: Making Websites Less Ugly Since 1996

Turn HTML Into GO Templates, Server-Side Validation And Even More Handlers

Brief Overview What’s Going On In This Section
From HTML To “Happily Ever After”: Conversion Into GO Templates
CSRF-Token – Implementation
Unlocking The Power Of JSON In Golang: A Handler That Returns Data In JSON
Preparations For Submitting And Processing AJAX Requests
From GET To POST: Let’S Teach The AJAX Requests Some Manners!
Pimp Your Code: Refactoring Made Easy!
Server-Sided Validation – The What, The How And The Why Of It All!
Implementation Server-Side Form Validation I – Form Field Data & Errors
Implementation Server-Side Form Validation II – Forms Model & Error Displaying
Implementation Server-Side Form Validation III – More Fields & A Required Func
Implementation Server-Side Form Validation IV – More Validators & govalidator
Display Of An Overview Of The Reservation Data (By Using Sessions)
Fast Feedback: Output Alerts As Feedback To The User Via notie
Alternative Template Engine: Use The Power Of A Jet Engine

Putting Your Code To The Test: How Writing Tests Can Save The Day (Or Days!)

Testing In GO: The Why And Wherefore
Testing Success: Mastering Tests For Package Main Of Our Web Application
Handlers Tests I – The Beginning: Initial Setup/Handling GET-Request Handlers
Handlers Tests II – Continued: Handling Post Request Handlers
Render Tests I – Creating A Test Environment And Function Testadddefaultdata()
Render Tests II – Creating Tests For Function Testrendertemplate() And The Rest
Coverage Of Package Handlers And Package Render Tests
Hands-On Exercise: Write A Basic Test For Package “forms”
A Solution: [Solved] Testing For Package “forms”
Final Notes And Tips For Starting Our Web Application

Striving for Improvement: ErrorHandling

Consolidation Of Error Handling In A Package “helpers”
Use Of ClientError And ServerError And Updates Of The Relevant Tests

Database I – Introduction To Database Usage And SQL With PostgreSQL And DBeaver

Brief Section Overview And Download/Installation Of PostgreSQL And DBeaver
Linux: Installing PostgreSQL And DBeaver And Making A Connection
macOS: Installing PostgreSQL And DBeaver And Making A Connection
Windows: Installing PostgreSQL And DBeaver And Making A Connection
CRUD – Now It’s Getting Dirty! SQL-Statements In Action
SQL Queries For Advanced Users – Not Necessarily Complicated, But Complex

Database II – Creation and Necessary Structuring of the Database

Fascination Database Structure: Creation Of An Entity Relationship Diagram!
*pop* “Want A Soda?” – Installation Of gobuffalo/pop Called Soda!
Migrations I – Creation Of The “Users” Table
Migrations II – Mass Production: Creation Of All Other Tables
Migrations III – Creation Of A Foreign Key For The “Reservations” Table
Migrations IV – To Be Continued … The Remaining Foreign Keys
Hands-On Exercise: Add The Missing Foreign Key To “bungalow_restrictions”
A Solution: [SOLVED] The Missing Foreign Key For “bungalow_restrictions”
Migrations V – Nitro Injection: Index For “users” And “bungalow_restrictions”
Hands-On Exercise: Add Useful Indexes To The “reservations” Table
A Solution: [SOLVED] Useful Indexes For The “reservations” Table
Migrations VI – “The Sting” For The Development Phase Of The Database

Database III – Connection of the PostgreSQL Database to the Web Application

Example: How To Connect An Application To A Database In GO
PostgreSQL Connection: Just like Golf! No Driver When You Need One Urgently!
Integration Work: Inserting the Driver/Database Connection (Repository Pattern)
An Easy Time: Creation Of The Necessary Models
Cleaning up Your Code: Regular Maintenance and a Tiny Makeover For Your Project
Don’t Make It Complicated – But You Can If You Like: Object-Relational Mapping
Double Trouble: Reservation Creation And Storage In The Database
Poking With A Stick: Short Functional Test Of The Reservation Function
One Small Step For Man… Database Entry In BungalowRestrictions
Availability Check: Check Availability For A Specific Date Range Per Bungalow
Availability Check: Availability For A Specific Date Range For All Bungalows
Delicate Ties: Creating Connections Between Database Functions And Handlers
What Can It Be? Connection Of The Availability Check To The Reservation Page
Mission Accomplished: We Sucessfully Make A Reservation!
Aftermath: Finalize Overview Page, Restrict Date Selection, Debugging
Migrations VII – Preventing “Horsing Around” With Database Entries
JavaScript On A Date With JSON: Availability Check And A JSON-Processing Handler
Displaying the Result Of The Bungalow Availability Query To The User
Session Creation: A Connector Between Availability Check And Reservation
Data transfer: Copy JavaScript Into Templates, Idea For Code Abstraction

Checkup: Updating Tests To Keep Your Code Fit And Healthy

No Database For Your Test Setup? Fake One!
Repairing The Tests For The Handlers – Reservation In Sessions As Context
Improving Test Coverage And Multiple Test Cases For GET-Request Handlers
An Example How To Write Tests For POST-Request Handlers
Special Case: Testing POST Request Handler ReservationJSON
Brief Look At The Rest Of The POST-Request Handlers Tests if you please
Exchange and Type Change: reqBody Becomes postedData Of Type url.Values{}
Houston, We Have A Problem! Emergency Debugging On The Fly!

The Postman Always Rings Twice: Integration Of E-Mail Into The Web Application

What Was That Again? How E-Mail And The SMTP Protocol Work…
MailHog Installation For Testing Purposes: Go The Whole Hog!
Sending E-Mails With The Standard Library – Just For The Sake Of Completeness!
Go Simple Mail: Open An Application-Wide Channel For Sending E-Mails
#MEGA – Make E-Mail Great Again! – Creating And Sending E-Mail Notifications
Stay Informed: A Solution To Send E-Mails To The Operator
… Once Again With Feeling: Beautifully Formatted E-Mails With Foundations
Updating The Tests – Doesn’t Help, It’s Got To Be Done!

Prove It’s You: Authenticate Your Identity And Access All The Goods!

Elevate Your App: Craft an Easy Login Screen!
Navigate To Success: Crafting A Login Route And Handler
Unlocking Security: Building Authentication And DB Functions
After The Form: A Login Handler That Delivers!
Getting Middle-witty: Cooking Up Some Middleware Magic!
Database Table For Awesome: Crafting A User With Migrations!
Putting The Login Page To The Test: Success Awaits!
Unveiling Authenticated Users And Log Out In Style!
Fortify Your App: Building A Secure Admin Zone With The Middleware!
Cleaning up Your Code: Smaller Cleaning Actions – Sweep Through Again Quickly!

Home, Sweet Home: A Customized Backend For Easy Maintenance With Security

Creating An Admin Dashboard In A Ready-Made Way – Choosing A Template
Like On An Assembly Line: Bulk Creation Of Routes, Handlers And Templates
Displaying All Reservations: Where DB Records Get A Seat At The Stylish Table
A Copy & Paste Orgy: Creating A List With Only New Reservations
Interlude: Makeover And Iron Out Small Mistakes
Displaying A Single Reservation: Preparation For More To Come
New Possibilities: Creating the Database Access Functions
Very Concrete: Implementation Of The Editing Function
Shift Up A Gear: Change The Status Of A Reservation
Delete a Reservation: Is This Art Or Can It GO Away?
Reservation Calendar I: Heading and Navigation
Reservation Calendar II: Bungalows, Days and Checkboxes
Reservation Calendar III: Reservations and Blocked Days
Reservation Calendar IV: Render That! Display The Calendar!
Reservation Processing I: Post Request, Route, And Handler
Reservation Processing II: Correct Return After Processing
Reservation Editing III: Handlers To Perform Actions
Reservation Processing IV: Database Functions For Actions
Quo Vadis? Correction Of Redirects After Editing
Making The Handler Tests Run Again And A Few Tests

Going Live: Deploying Your Web Application To A Server On The Internet!

Launch Your Web Application Flexibly: Use Command Line Flags
Note On Using .env Files For Your Web Application
Text Editors Nano And Vi/Vim: Short Operating Remarks
Get Server And Set Up The Necessary Server-Side Software
Install Go And Get The Web Application On The Server
No Mail Transfer Agent (MTA) Available? Fake It Till You Make It!
Supervisor – Someone Has To Watch While You’re Away
Logo, Footer Content: Final Touches Before The Curtain Rises!

Farewell & How It Could Go On From Here (And Room For Bugfixes)

Goodbye And How It Could Go On With Your Web Application