Build Your First Go App From Scratch
Launching February 2026. Join the list to get updates as lessons are released.
Build a Real Go Application
This course takes you from zero to building your first complete Go application.
Rather than learning Go in isolation, you’ll learn the language by building a real project from the ground up. Each concept is introduced when you actually need it, so you can see how everything fits together in a working application.
As you progress, you’ll move through the core ideas that every Go developer needs, including how to structure projects, work with types and structs, handle HTTP requests, and organise code in a clear, idiomatic way. The focus is always on understanding why things work, not just getting something running.
Each lesson builds on the previous one, gradually turning individual concepts into a cohesive whole. By the end of the course, you’ll have built a complete Go application and have the confidence to start building your own projects.
Core Go concepts you’ll work with
· Project setup and dependency management with Go modules.
· Structs, types, and writing idiomatic Go.
· Building HTTP servers using Go’s standard library.
· Routing and handler design.
· Parsing and validating incoming requests.
· Error handling and control flow.
· Organising code with packages and clear project structure.
· Working with databases using database/sql.
· Writing tests for handlers and application logic.
· Building and running production-ready Go binaries.
Along the way, you’ll also encounter additional patterns and techniques that emerge naturally as the application evolves, helping you build confidence working with Go beyond a single example.
Watch a few lessons from the course
These are real lessons taken directly from the course.
Organizing Routes and Handlers
In this lesson, you’ll organise your routes and handlers by moving them out of main.go into a dedicated routes.go file. You’ll add a routes() method to your App struct that sets up all HTTP routes and returns a handler. This keeps the main function focused on startup concerns and makes the routing logic easier to understand and maintain as the application grows.
App Structs
In this lesson, you’ll introduce an App struct to your application. This struct is used to hold shared dependencies and application state, making it easier to manage and pass around resources such as database connections. It’s a key step toward a cleaner, more organised structure that scales as the project grows.
Testing Handlers
In this lesson, you’ll write your first handler test. You’ll test the listBooksHandler by creating a fake HTTP request, capturing the response, and asserting on both the status code and returned data. The lesson uses Go’s httptest package to test handlers without starting a real server, keeping tests fast, focused, and isolated.
Course curriculum
This course is actively being developed. Some lessons are available to preview below.
- Initializing Go Modules (3:40)
- The Entry Point: main.go (5:37)
- Spinning up an HTTP Server (7:44)
- Sending Your First Request (4:28)
- Writing Response Content (2:58)
- Writing Json Response Content (4:22)
- Response Structs (4:38)
- Write JSON Helper (10:08)
- Modelling Books with Structs (4:26)
- List Books Handler (4:59)
- Sending a Books Collection Request (1:03)
- Connecting to Sqlite (4:55)
- Opening a Database Connection (4:36)
- Creating Database Tables (5:52)
- Seeding The Database (8:38)
- App Struct (1:44)
- Methods and Receivers (3:40)
- Scanning Database Rows (10:28)
- Organizing Routes and Handlers (6:32)
- Book Response Struct (4:22)
- Test Helper Functions (11:49)
- Testing Handlers (16:59)
- Go Stores (5:18)
- Store Methods (3:46)
- Initializing Stores (3:14)
- Fixing a Failing Test (3:25)
- Route Parameters (11:18)
- Single Record Store Method (8:25)
- Error Matching with errors.Is() (6:32)
- Testing Single Record Handlers (6:57)
- Comparing Structs (7:24)
Frequently Asked Questions
If you have a question that isn’t covered here, you can email me at info@garyclarke.tech
Is this course beginner-friendly?
Yes. The course assumes no prior Go knowledge. We start from the basics and build up step by step, always in the context of a real application so concepts make sense as you learn them.
Will I learn idiomatic Go, not just syntax?
Yes. A core focus of the course is writing clear, idiomatic Go and understanding the patterns and conventions commonly used in real projects.
Will I learn how to structure a real Go application?
Yes. You’ll learn how to organise code using packages, application-level structs, and clear project structure that scales as an application grows.
What do we actually build in the course?
You build a complete books API that handles HTTP requests, JSON responses, database access, validation, and testing. The application is the vehicle for learning Go properly.
How does this relate to Go Bytes?
Go Bytes focuses on individual concepts in short, focused lessons. This course brings those ideas together into a complete application so you can see how everything fits in practice.
Is this hands-on or mostly theory?
It’s fully hands-on. You’ll write real Go code in every lesson and build the application from scratch. Concepts are introduced as they’re needed in the project.
Who is this course for?
This course is for anyone who wants to learn Go by building something real, especially developers who want to understand how Go applications are structured beyond simple examples.
This is what people have had to say about my other courses.
This is one of the best courses I have ever done. You have a gift for teaching. Your training has given me very valuable context for all things I knew, corrected some stuff I did incorrectly, and has taught me innumerable new things. - Mark Thijssen
I have had an extremely positive experience with this course, so Mr Clarke had definitely earned a perfect 5 stars from me! This course has helped me to understand how OOP works SO MUCH better than I previously did. I 100% understand all of his examples. - Jeffrey Carter
Gary has deep knowledge and he is following the best practices. I have no suspicions about learning non-useful nor obsolete techniques. It is essential to have work / code discipline and he has it and kind of routing you to have the same. - Burak
This course is a true gem! It's the first time I watched a 3h course and felt I really understood the concepts. Thank you so much Gary! Looking forward to the full course:) - Giulia Pizzignacco
Gary has a patient delivery style, and I can understand him. I also appreciate that code for the video is provided, with each video, because I like to spend time testing and changing that code to get further into it. - Karl Zipser
I have learnt so much new information which helps me to write efficient php (oop) code. I am very thankful to Gary for providing such quality content - Ridwanullah Raufi
Excellent course delivered by a knowledgeable and engaging content creator. Highly recommended - Drew Hinde
It's much more pleasant to follow than most other courses I have tried. - Mick Amato
Thanks for this video, been watching it for the 2nd time and I can't even feel the time goes by - Lexer Quine
This course is fantastic! I'm really looking forward to watching the rest of the course. Thanks a million Gary! - Michael Gibbs
Who Am I?
Hello and thank you so much for checking out my work. My name is Gary Clarke and I'm a software developer with many years' experience. I started creating video tutorials during lockdown in 2020 because I wanted the challenge of explaining complex technical subjects in a way that's easy to understand and remember.
Since then, my videos have been watched over a million times. I'm still teaching every day, covering PHP, Go, and everything I've learned building real-world applications. My goal is to help you move faster by sharing the patterns and workflows that actually work. It would be my pleasure to see you on the inside of this course.