Skip to main content
CourseFlix

Let's Build a Go version of Laravel: Part Two

8h 5m 42s
English
Paid

Welcome back! This is the follow-up to "Let's Build a Go Version of Laravel" and is specifically crafted for students who have already embarked on the initial journey. In the first part of this series, we developed a reusable Go module packed with features such as HTML, JSON, and XML response types, support for Go and Jet templates to render pages, multiple database support, sessions, and more. Now, we aim to enhance our Celeritas package with new functionalities:

New Functionalities

  • Support for Remote File Systems: Seamlessly integrate with Amazon S3 buckets, Minio, sFTP, and WebDAV.

  • Social Authentication: Easily add authentication via GitHub and Google, with the flexibility to include more providers.

  • Enhanced Testing: Incorporate improved testing features, including a Go version of Laravel's Dusk, which captures browser screenshots during functionality tests.

  • Maintenance Mode: Leverage Remote Procedure Calls (RPC) to control maintenance mode efficiently.

  • Database Migrations: Support both raw SQL and soda's Fizz file format for improved database migrations.

  • File Upload Functionality: Implement robust file upload features supporting local and remote file systems.

  • Separate Logic and Routes: Differentiating between web and API routes for better organization and performance.

  • Test Creation Simplified: Facilitate test creation by pre-populating stub test files and providing setup_test.go files for projects.

By the conclusion of this course, you will possess not only a comprehensive understanding of all the topics covered above but also a reusable code base designed to accelerate your future projects.

About the Author: udemy

udemy thumbnail

Udemy is a global online marketplace for teaching and learning. It connects students with instructors who share skills in many fields.

Who Uses Udemy

Millions of learners use Udemy to gain skills for work and personal growth. Companies, governments, and nonprofits also use Udemy to train their teams.

What Udemy Offers

Udemy provides a curated set of business and technical courses. These courses help teams build practical skills and support ongoing learning at work.

Watch Online 103 lessons

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 103 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: Introduction
All Course Lessons (103)
#Lesson TitleDurationAccess
1
Introduction Demo
03:02
2
About me
01:02
3
Asking for help
01:15
4
Installing Go
01:40
5
Installing an IDE
01:18
6
Setting up the project
05:57
7
Making sure everything worked
03:26
8
What we're going to create
02:26
9
Setting up our remote file systems using Docker
04:37
10
Configuring Minio
02:32
11
Configuring sFTP
03:09
12
Setting up a type for file systems
06:45
13
Getting started with Minio: connecting and the Put function
10:35
14
Implementing the List function in Minio
06:36
15
Implementing the Delete function in Minio
03:13
16
Implementing the Get function in Minio
03:23
17
Creating stub filesystems for the other three types
05:40
18
Adding filesystems to Celeritas
07:05
19
Trying out our Minio filesystem
04:14
20
Creating a handler to list the remote file system
10:52
21
Connecting the handler to a route and trying things out
01:39
22
Creating handlers to display the upload form
03:28
23
Creating the handler to process the file upload
11:13
24
Creating the delete handler
06:03
25
Implementing the Put function for sFTP
10:31
26
Implementing the List function for sFTP
04:05
27
Implementing the Delete function for sFTP
02:07
28
Implementing the Get function for sFTP
04:58
29
Connecting Celeritas to our sFTP file system
02:42
30
Updating our ListFS handler to support sFTP
02:12
31
Updating our PostUploadToFS handler to support sFTP
03:34
32
Updating our DeleteFromFS handler to support sFTP
01:20
33
Cleaning up the Get function to avoid resource leaks
03:56
34
Implementing the Put function for WebDAV
06:12
35
Implementing the List function for WebDAV
03:20
36
Implementing the Delete function for WebDAV
02:15
37
Implementing the Get function for WebDAV
03:55
38
Testing things out
06:25
39
Implementing the List function for S3 file systems
11:14
40
Implementing the Put function for S3 file systems
07:18
41
Implementing the Delete function for S3 file systems
05:28
42
Implementing the Get function for S3 buckets
03:52
43
Connecting Celeritas to our S3 file system
02:13
44
Creating an S3 compatible bucket on Linode
04:36
45
Updating our handlers for S3 buckets
01:40
46
Trying things out
03:14
47
What we'll build
01:38
48
Adding file systems to the Celeritas type
02:10
49
Creating the file uploader
06:52
50
Limiting upload by mime type
06:20
51
Adding the mime type and file size limitations to the Celeritas config type
06:02
52
Setting up handlers and routes to try things out
06:02
53
Trying things out
03:26
54
Pop vs. SQL
04:32
55
Getting started with Pop functions for our migrations code in Celeritas
03:39
56
Implementing the CreatePopMigration() function to create up and down migrations
02:37
57
Implementing the RunPopMigrations() function
02:21
58
Implementing the PopMigrateDown() function
03:26
59
Implementing the PopMigrateReset() function
01:22
60
Making changes in the Celeritas CLI for our pop migrations
10:25
61
Trying out our new make migration command
03:20
62
Ensuring the database is connected before allowing people to make migrations
03:42
63
Creating a database.yml file and running migrations
05:54
64
Trying out the migrate command
02:35
65
Updating the "make auth" command for our Pop integration
06:40
66
Trying out make auth
03:00
67
Social Authentication or Single Sign On: an Overview
03:38
68
Getting started with Goth and Social Authentication
03:38
69
Setting up authentication routes
04:10
70
Initializing social sign on
07:24
71
Implementing the SocialLogin handler
05:18
72
Implementing the SocialCallback handler
11:37
73
Connecting our social authentication handlers to routes
01:48
74
Setting up GitHub for social authentication
03:30
75
Trying out the GitHub login functionality
05:52
76
Logging out
05:22
77
Really logging out
09:51
78
Trying the socialLogout function
01:53
79
Adding support for Google login
04:01
80
Updating the auth-handlers.go file for Google to enable login
02:28
81
Trying out login with Google
02:01
82
Adding the case for logging out of Google in socialLogout()
01:59
83
Trying things out
01:30
84
Separating Web and API routes
05:07
85
Getting started with "Maintenance Mode" functionality using RPC
09:21
86
Starting RPC
00:58
87
Adding maintenance mode middleware
06:28
88
Updating the CLI for maintenance mode
05:12
89
Testing the maintenance mode functionality
03:39
90
Graceful Shutdown
08:01
91
Adding a simple setup_test.go file to handlers
09:34
92
Adding two functions to our setup_test.go file
02:53
93
Adding and running a sample test
04:44
94
Adding some additional tests
05:05
95
Implementing Laravel Dusk like screen captures
02:08
96
Writing the screen capture function
07:58
97
Trying out the screen capture function
04:45
98
Writing additional helper functions for testing
14:31
99
Updating our templates in the CLI, and making some changes to the myapp
08:15
100
Creating our skeleton app
04:33
101
Additional updates to the skeleton application and the celeritas project
04:31
102
Trying out the "celeritas new <project>" command
02:18
103
Trying things out
05:21
Unlock unlimited learning

Get instant access to all 102 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription