65 lines
3.2 KiB
Markdown
65 lines
3.2 KiB
Markdown
# Go Web API Course — Full Index
|
||||
|
|
|
|||
|
|
This course teaches you Go by building a real authentication API: chi
|
|||
|
|
router, MySQL, Redis-backed sessions, password login, "Sign in with
|
|||
|
|
Google", rate limiting, structured logging, and Docker — from an empty
|
|||
|
|
folder to a containerized, production-shaped service.
|
|||
|
|
|
|||
|
|
It assumes **zero prior Go knowledge**. If you've never written a line of
|
|||
|
|
Go before, start with the three "Go Basics" lessons below — everything
|
|||
|
|
after that leans on them constantly.
|
|||
|
|
|
|||
|
|
## Go Basics (do these first if you're new to Go)
|
|||
|
|
|
|||
|
|
| File | Covers |
|
|||
|
|
|---|---|
|
|||
|
|
| `00-go-basics-1-syntax-and-types.md` | Installing Go, `go run`/`go build`, variables, basic types, `if`/`for`/`switch`, `fmt.Println` |
|
|||
|
|
| `00-go-basics-2-functions-structs-pointers.md` | Functions, multiple return values, structs, methods, pointers (`*`/`&`) |
|
|||
|
|
| `00-go-basics-3-interfaces-errors-concurrency-packages.md` | Interfaces, error handling, slices & maps, packages & modules, goroutines, JSON basics |
|
|||
|
|
|
|||
|
|
## The Project Lessons
|
|||
|
|
|
|||
|
|
| # | File | Builds |
|
|||
|
|
|---|---|---|
|
|||
|
|
| 1 | `lesson-01-project-skeleton-chi-routing.md` | Project layout, chi router, graceful shutdown |
|
|||
|
|
| 2 | `lesson-02-structured-json-logging.md` | `log/slog` JSON logging, request-logging middleware |
|
|||
|
|
| 3 | `lesson-03-config-and-mysql.md` | Env config, MySQL connection pooling |
|
|||
|
|
| 4 | `lesson-04-user-model-repository-pattern.md` | Domain models, the repository pattern |
|
|||
|
|
| 5 | `lesson-05-password-login-bcrypt.md` | bcrypt password hashing, register/login handlers |
|
|||
|
|
| 6 | `lesson-06-sessions-scs-redis.md` | Server-side sessions backed by Redis |
|
|||
|
|
| 7 | `lesson-07-google-oauth.md` | "Sign in with Google" (OAuth2 Authorization Code flow) |
|
|||
|
|
| 8 | `lesson-08-auth-middleware.md` | `context.Context`, reusable auth-guard middleware |
|
|||
|
|
| 9 | `lesson-09-rate-limiting-security.md` | Rate limiting, CORS, cookie hardening |
|
|||
|
|
| 10 | `lesson-10-docker-wrapup.md` | Docker, docker-compose, full course review |
|
|||
|
|
|
|||
|
|
## How each lesson is structured
|
|||
|
|
|
|||
|
|
Every project lesson (1–10) has two parts:
|
|||
|
|
|
|||
|
|
- **Part A — standalone playground.** A tiny, throwaway program that
|
|||
|
|
teaches the *new* concept in isolation, with nothing else going on. You
|
|||
|
|
build and run this in its own scratch folder.
|
|||
|
|
- **Part B — apply it to the project.** The same concept, now wired into
|
|||
|
|
the real, growing `go-simple-api` project, building on the previous
|
|||
|
|
lesson's code.
|
|||
|
|
|
|||
|
|
Each lesson also has a **"New Go concepts in this lesson"** box near the
|
|||
|
|
top, pointing back at the specific Go Basics section you should understand
|
|||
|
|
first. If something feels unfamiliar, that's the place to go check.
|
|||
|
|
|
|||
|
|
## What you'll have by the end
|
|||
|
|
|
|||
|
|
A real, working Go web service with:
|
|||
|
|
- Password-based registration/login (bcrypt-hashed passwords)
|
|||
|
|
- "Sign in with Google" (OAuth2)
|
|||
|
|
- Server-side sessions stored in Redis
|
|||
|
|
- MySQL-backed user storage via a repository pattern
|
|||
|
|
- Structured JSON logging (ready for Grafana Loki / Alloy)
|
|||
|
|
- Rate limiting and basic security hardening
|
|||
|
|
- A Docker Compose setup running the whole stack with one command
|
|||
|
|
|
|||
|
|
Go at your own pace. Each lesson builds directly on the file state left by
|
|||
|
|
the previous one — if you get lost, the companion `go-simple-api` code zip
|
|||
|
|
(from earlier) has the final, correct state of every file at the end of
|
|||
|
|
the whole course.
|