
Build a Golang backend for a social network with login, posts, following, and a personalized feed. Learn rest api design, auth with email activation, and ci/cd deployment to Google Cloud.
Explore practical error handling in go with a truck distribution simulation, using explicit nil checks, errors package, and fmt.Errorf to wrap context for top‑level and http handlers.
Demonstrate Go testing fundamentals by initializing modules, creating test files, and running tests to validate a process track function for loading and unloading cargo on normal and electric trucks.
Learn how Go pointers reference memory locations to modify data in place, use pointer receivers to mutate values, and handle nil pointers to avoid crashes.
Learn how goroutines enable concurrent processing by launching parallel truck tasks, compare sequential vs parallel execution, and use wait groups to synchronize completion for scalable Go programs.
Explore maps as key-value storage in Go, learn creation with make, existence checks, deletion, clearing, and concurrency issues from race conditions with goroutines.
Build an interface-backed track manager using a map to add, get by id, update cargo, and delete tracks, with tests and race checks for concurrency-safe maps.
Explores how to prevent data races in Go maps by using mutexes, including read-write locks, to synchronize 100 goroutines accessing a fleet manager.
Explore how Go's net package enables TCP servers by listening on TCP, accepting connections, and handling each client in a goroutine, using reader and writer interfaces for IO.
Explore routing in http servers by inspecting a simple client-server flow, parsing requests, and directing gets to handlers, while comparing low-level routing to net/http behavior.
Learn to build a http server with Go's net/http package by implementing a handler that consumes requests, writes responses, and routes basic paths using listen and serve.
Build a production-ready API by encoding and decoding JSON requests, setting headers and status codes, validating input, and returning user data via in-memory storage in Go.
Organize your backend into transport, service, and storage layers to avoid spaghetti code, inject abstractions via interfaces, and apply the saga pattern for cross-service transactions.
Set up a Go http API by creating a main application, config, and server with timeouts. Implement a v1 grouped router, health check, and recovery middleware for reliable requests.
Configure runtime application settings with environment variables using os.LookupEnv, load from dot env files or the drive tool, and prepare the storage layer and repository pattern in the next module.
Adopt the repository pattern to decouple business logic from data storage, abstract storage with an interface, and enable in-memory or SQL implementations for testing and flexibility.
Implement a repository pattern in Go by organizing storage with interfaces for posts and users, a Postgres storage, and a constructor to wire them into the app.
Configure the database connection pool at runtime for development, staging, and production using a DSN and environment variable overrides. Tune max open connections, max idle connections, and max idle time.
Model a one-to-many relationship between users and posts and implement reproducible SQL migrations with Golang migrate or goose, including up and down scripts, version history, rollback, and related tooling.
Create a v1 posts endpoint in go to handle create post requests by decoding a payload with title and contents, validating input, and returning created post or errors in JSON.
Develop a get post by id endpoint in Go, with route grouping, explicit field selection, and robust not found and internal error handling.
Learn how to validate create post payloads in Go, from basic manual checks to struct tags and the go-playground validator, ensuring required fields and sensible limits with reusable patterns.
Add comments support to posts by creating a comments table with post_id and user_id. Build a comments store to fetch posts with associated comments and user details.
Add delete posts endpoint and patch updates for title and contents, clarifying http put versus patch semantics. Refactor with middleware to fetch posts into request context.
Standardize JSON responses by wrapping data in a consistent envelope with status, enabling both errors and successful payloads to share a uniform structure.
Demonstrate optimistic concurrency control by simulating two concurrent updates from two users, then add a version column and version checks to prevent lost updates, returning a conflict when mismatched.
Implement context-based sql query timeouts in Go by creating a timeout with a five-second duration, deferring cancel, and applying it to all database operations to free resources.
explains building a Go seed script to populate the database with users, posts, and comments using a reusable seed function and a seed executable.
Implement the Go user profile endpoint: parse the user id, query the database, return profile data without passwords, handle not found errors, and plan follow/unfollow features.
Implement a followers feature with a followers table using a composite key (user_id, follower_id), enabling put-based follow and unfollow endpoints and duplicate protection for personalized feeds.
Learn to auto generate API docs in a Go backend with swagger. Install and configure go swag, serve a live docs portal, and enable dynamic hosts and bearer token security.
Document and test Go backend endpoints with swagger, adding bearer token authentication, defining get user and feed endpoints under /v1/users, and clarifying models and responses in the swagger UI.
In this project-based course, we will build a complete REST API in Go from scratch and deploy it to the cloud, ready to handle real traffic and scale affordably.
Our journey begins by creating a simple TCP server, which will help us explore the net/http package in Go and understand the basics of handling network communication.
Next, we’ll dive into the theory behind building reliable and composable Go web applications. From there, we’ll develop our project step-by-step, covering carefully curated topics such as request handling, middleware creation, database integration, request and database optimisations and rate limiting to equip you with the skills needed to ship real backend services to the cloud and manage real-world traffic efficiently.
This course aims to provide you with the foundational knowledge required to build and understand backend systems, implement industry best practices, and create production-ready APIs that are secure, scalable, and maintainable. It is not just a step-by-step tutorial, but a comprehensive learning experience that prepares you for real-world scenarios.
Legal Notice:
All product and company names, logos, and trademarks featured on this thumbnail are the property of their respective owners. Their use in this course does not imply any affiliation, sponsorship, or endorsement by these companies.