Let's Build a Go version of Laravel

19h 22m 16s
English
Paid
June 7, 2024

Laravel is one of the most popular web web application frameworks in the PHP world, and with good reason. It's easy to use, well designed, and lets developers work on their applications without worrying about re-inventing the wheel every time they start a project. Go, often referred to as Golang, is one of the most popular programming languages in the world, and has been used to create systems at Netflix, American Express, and many other well known companies.

More

It's extremely fast, type safe, and designed from the ground up to be used on the web.

This course is all about taking some of the most useful features found in Laravel, and implement similar functionality in Go. Since Go is compiled and type safe, web applications written in this language are typically much, much faster, and far less error prone that a similar application written in Laravel/PHP.

The key features we'll work on in this course include:

  • Implementing an Object Relation Mapper (ORM) that is database agnostic, and offers much of the functionality found in Laravel's Eloquent ORM.

  • A fully functional Database Migration system

  • Building a fully featured user authentication system that can be installed with a single command, which includes:

    • A password reset system

    • Session based authentication (for web based applications)

    • Token based authentication (for APIs and systems built with front ends like React and Vue)

  • A fully featured templating system (using both Go templates and Jet templates)

  • A complete caching system that supports Redis and Badger

  • Easy session management, with cookie, database (MySQL and Postgres), Redis stores

  • Simple response types for HTML, XML, JSON, and file downloads

  • Form validation

  • JSON validation

  • A complete mailing system which supports SMTP servers, and third party APIs including MailGun, SparkPost, and SendGrid

  • A command line application which allows for easy generation of emails, handlers, database models

  • Finally, the command line application will allow us to create a ready-to-go web application by tying a single command: celeritas new <myproject>

The only requirements for this course are:

  • A basic understanding of Go

  • A basic understanding of SQL databases

  • A Windows, Mac, or Linux computer

  • An internet connection

  • Docker

  • Visual Studio Code (or the IDE of your choice)

Watch Online Let's Build a Go version of Laravel

Join premium to watch
Go to premium
# Title Duration
1 Introduction 08:16
2 A bit about me 01:02
3 How to ask for help 01:15
4 Install Go 01:40
5 Install VS Code 01:18
6 Install Make 01:28
7 Setting up project structure 08:23
8 Keeping our application and package in sync with Make 04:19
9 Starting work on Celeritas 09:06
10 Creating application folders 05:45
11 Creating and reading the .env file 08:52
12 Creating logs 07:13
13 Setting up Celeritas configuration 03:30
14 Getting a simple web server up and running 11:16
15 Implementing a page renderer in the Celeritas package (for Go templates) 13:13
16 Trying out the Go render functionality 12:39
17 Cleaning up Celeritas 01:27
18 Adding Jet support to our page rendering package 09:35
19 Rendering a Jet Template 02:23
20 Working with Jet Templates 07:08
21 Testing the render package 09:10
22 Writing more tests for the render package 09:10
23 Simplifying our tests using Table Tests 08:27
24 Implementing Sessions in Celeritas 05:52
25 Choosing and Installing a session package 18:04
26 Adding session middleware 03:00
27 Verifying that sessions work with myapp 05:41
28 Reading data from the session and passing it to the Jet template 02:53
29 Writing tests for the session package 08:23
30 Checking our Coverage 02:06
31 Installing Docker 01:24
32 Bringing up and tearing down a development environment using docker-compose 06:49
33 Getting started with Postgres 06:44
34 Building a Postgres connection string and connecting to the database 10:47
35 Trying out our database connection 07:40
36 Adding ORM like functionality to our application with upper/db 07:57
37 Creating a real users table and a user model 20:38
38 Additional database functions for the User type 17:14
39 Finishing up the database functions for the User model 02:50
40 Inserting a user 06:13
41 Testing other database functions on the User model 13:24
42 Creating a login page and handler 13:58
43 Creating the post handler for logging in 18:41
44 Adding functions to the Tokens model 26:34
45 Writing tests for models.go 11:25
46 Getting started with our integration tests 17:55
47 Creating tables in our test docker image, and running some tests 18:51
48 Continuing to write integration tests 22:01
49 Finishing up our integration tests 34:28
50 Cleaning up our tests 03:59
51 Setting up a simple CLI package in Celeritas 15:48
52 Adding support for migrations to the Celeritas package 10:23
53 Starting work on "make migration" in our CLI application 07:58
54 Using templates in our CLI 09:23
55 Trying out our make migration functionality 05:08
56 Running migrations 13:39
57 Trying out our "make migrate" commands with the Celeritas CLI 07:04
58 Getting started with Implementing "make auth" functionality 07:57
59 Trying out the make auth functionality 03:01
60 Continuing with the "make auth" functionality in our command line program 07:55
61 Creating simple auth middleware, and adding it to the "make auth" command 12:30
62 Installing our auth middleware with the celeritas command line utility 03:14
63 Trying out our improved make auth functionality 04:46
64 Implementing "make handler" functionality 09:19
65 Implementing "make model" functionality 10:13
66 Adding database stores to our sessions package 11:26
67 Adding support for database session store to the celeritas project 06:12
68 Supporting MySQL/MariaDB with"make auth" 01:38
69 Creating a validation package 13:11
70 Trying out our validation 04:02
71 Adding validation to models 02:40
72 Trying out our model validation 02:08
73 Building a simple form and performing validation on it 08:22
74 Building our PostForm handler with validation 07:03
75 Helper functions for the routes file 04:03
76 Helper functions for handlers 07:14
77 JSON, XML, and other response types 09:46
78 Creating handlers for our response types 06:32
79 Creating the routes and links for our response types 04:59
80 Ecryption/Decryption 12:25
81 Generating and getting our encryption key 04:48
82 Trying out our encryption functionality 07:56
83 Installing the necessary package and getting started 10:23
84 Connecting to Redis 13:53
85 Completing the rest of the cache functions 18:50
86 Testing the cache package 19:42
87 Trying out the cache in myapp 13:07
88 Finishing up our cache page in myapp 10:39
89 Adding a Redis store to our sessions package 07:32
90 CSRF Protection 16:09
91 Speeding up templates 09:57
92 Installing the necessary package and implementing necessary functions 26:22
93 Updating setup_test.go to create a Badger database for our tests 04:30
94 Writing and running tests for our Badger cache 12:03
95 Connecting to Badger 08:06
96 Trying out the Badger cache 05:40
97 Getting started sending email using SMTP 17:00
98 Adding the necessary packages, and completing sending email via SMTP 16:47
99 Sending email using Mailgun, SparkPost and more 14:27
100 Connecting Celeritas to our mailer package 07:39
101 Trying out or mailer package 10:51
102 Sending mail using an API 04:39
103 Adding "make mail" to the CLI 06:16
104 Testing mail 28:07
105 Setting up models and middleware for "remember me" functionality 24:26
106 Updating the auth handlers for remember me functionality 12:54
107 Trying out the remember me functionality 02:59
108 Password resets 05:15
109 Handling a password reset request 10:35
110 Sending a password reset link via email 19:04
111 Validating our signed link, and displaying the password reset form 09:06
112 Resetting the user's password 08:29
113 Updating the "make auth" functionality in the Celeritas CLI 09:13
114 Starting work on "celeritas new" in the CLI 05:29
115 Sanitizing the project name 03:10
116 Cloning a (currently non-existent) repository right in Go 05:23
117 Creating a skeleton application 06:16
118 Pushing our skeleton application to GitHub 03:37
119 Trying out the code that clones a remote GitHub repository 05:09
120 Removing the .git directory and creating a .env file 07:23
121 Creating the correct Makefile 04:20
122 Update go.mod 05:01
123 Update imports in .go files 07:37
124 Running go mod tidy 04:49
125 Pushing our Celeritas project to GitHub 02:24
126 Trying out our make new functionality 09:14
127 Where to go from here 02:55

Similar courses to Let's Build a Go version of Laravel

Refactoring With Bill

Refactoring With Billardanlabs.com

Duration 7 hours 49 minutes 54 seconds
Master Laravel with GraphQL, Vue.js and Tailwind

Master Laravel with GraphQL, Vue.js and Tailwindudemy

Duration 17 hours 48 minutes 5 seconds
Laravel Backends for Vue.js 3

Laravel Backends for Vue.js 3vueschool.io

Duration 3 hours 44 minutes
Ultimate Service 3.0

Ultimate Service 3.0ardanlabs.com

Duration 13 hours 33 minutes 5 seconds
Ultimate Go: Advanced Engineering

Ultimate Go: Advanced Engineeringardanlabs.com

Duration 16 hours 20 minutes 42 seconds