{"id":49616900,"url":"https://github.com/swe-labs/the-go-engineer","last_synced_at":"2026-05-04T22:51:12.686Z","repository":{"id":348677339,"uuid":"1199316080","full_name":"swe-labs/the-go-engineer","owner":"swe-labs","description":"The Go Engineer: Master Software Engineering in Go by building high-impact, real-world projects. From foundations to production-grade architecture.","archived":false,"fork":false,"pushed_at":"2026-05-01T20:19:59.000Z","size":2223,"stargazers_count":133,"open_issues_count":19,"forks_count":21,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-05-01T21:24:55.510Z","etag":null,"topics":["backend","beginner-friendly","concurrency","data-structures","design-patterns-golang","education","go","go-examples","go-language","go-tutorial","golang","hands-on","idiomatic-go","learn-golang","learn-to-code","learning-go","standard-library"],"latest_commit_sha":null,"homepage":"https://www.linkedin.com/in/rasel-9t6/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/swe-labs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-02T08:28:49.000Z","updated_at":"2026-05-01T20:03:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/swe-labs/the-go-engineer","commit_stats":null,"previous_names":["rasel9t6/the-go-engineer","swe-labs/the-go-engineer"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/swe-labs/the-go-engineer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swe-labs%2Fthe-go-engineer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swe-labs%2Fthe-go-engineer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swe-labs%2Fthe-go-engineer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swe-labs%2Fthe-go-engineer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/swe-labs","download_url":"https://codeload.github.com/swe-labs/the-go-engineer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swe-labs%2Fthe-go-engineer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32628211,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","beginner-friendly","concurrency","data-structures","design-patterns-golang","education","go","go-examples","go-language","go-tutorial","golang","hands-on","idiomatic-go","learn-golang","learn-to-code","learning-go","standard-library"],"created_at":"2026-05-04T22:51:11.893Z","updated_at":"2026-05-04T22:51:12.672Z","avatar_url":"https://github.com/swe-labs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The Go Engineer\n\n[![CI](https://github.com/swe-labs/the-go-engineer/actions/workflows/ci.yml/badge.svg)](https://github.com/swe-labs/the-go-engineer/actions)\n[![License: TGE License v1.0](https://img.shields.io/badge/License-TGE_v1.0-red.svg)](#license)\n\nThe Go Engineer is a repository-first Go software engineering curriculum. It teaches Go by combining runnable lessons, production-shaped examples, tests, validation, and a final integrated backend project.\n\nThe stable v2.1 line is organized as a 5-phase, 12-section learning system with 215 registered curriculum items. The public structure is locked in [ARCHITECTURE.md](./ARCHITECTURE.md), and the machine-readable registry is [curriculum.v2.json](./curriculum.v2.json).\n\n## Status\n\nCurrent stable line: `v2.1.x`\n\nCurrent stable release: `v2.1.1`\n\nSupported branches:\n\n| Branch | Purpose |\n| --- | --- |\n| `main` | active post-v2.1 implementation and integration line |\n| `release/v2` | stable v2.1.x maintenance line |\n| `release/v1` | stable v1 maintenance line |\n\nArchitecture v2.1 is locked. Normal work may improve lessons, tests, documentation, validators, or the Opslane flagship implementation, but must not add, remove, rename, or reorder public root sections without explicit maintainer approval.\n\n## Quick Start\n\nRequirements:\n\n- Go version declared in [go.mod](./go.mod)\n- CGO-capable C compiler for `go test -race ./...` and SQLite-backed paths\n\n```bash\ngit clone https://github.com/swe-labs/the-go-engineer.git\ncd the-go-engineer\ngo mod download\ngo run ./00-how-computers-work/1-what-is-a-program\n```\n\nRun the curriculum validator:\n\n```bash\ngo run ./scripts/validate_curriculum.go\n```\n\nExpected stable output:\n\n```text\nSuccess! 601 files with run commands validated, and 12 v2 sections plus 215 v2 items checked.\n```\n\n## Curriculum Map\n\n| Phase | Sections | Focus | Progress |\n| --- | --- | --- | --- |\n| 0 | s00 | machine foundation | 0% to 5% |\n| 1 | s01-s04 | language foundation | 5% to 52% |\n| 2 | s05-s08 | engineering core | 52% to 87% |\n| 3 | s09-s10 | systems engineering | 87% to 96% |\n| 4 | s11 | integrated flagship project | 96% to 100% |\n\n## Sections\n\n| Section | Folder | Primary outcome |\n| --- | --- | --- |\n| s00 | [00-how-computers-work](./00-how-computers-work) | understand execution, memory, terminal use, and processes |\n| s01 | [01-getting-started](./01-getting-started) | install Go, run programs, and read tool output |\n| s02 | [02-language-basics](./02-language-basics) | use values, control flow, slices, maps, and pointers intentionally |\n| s03 | [03-functions-errors](./03-functions-errors) | compose functions and handle failure explicitly |\n| s04 | [04-types-design](./04-types-design) | model behavior with structs, methods, interfaces, composition, and generics |\n| s05 | [05-packages-io](./05-packages-io) | work with modules, packages, CLI input, encoding, and filesystems |\n| s06 | [06-backend-db](./06-backend-db) | build HTTP servers, API contracts, gRPC services, and database-backed code |\n| s07 | [07-concurrency](./07-concurrency) | coordinate goroutines, channels, context, synchronization, and worker patterns |\n| s08 | [08-quality-test](./08-quality-test) | test, benchmark, profile, and verify behavior with evidence |\n| s09 | [09-architecture](./09-architecture) | apply package design, architecture patterns, and security controls |\n| s10 | [10-production](./10-production) | add logging, shutdown, configuration, observability, deployment, and code generation |\n| s11 | [11-flagship](./11-flagship) | integrate the curriculum through the Opslane SaaS backend capstone |\n\n## Learning Model\n\nEach lesson is designed around four surfaces:\n\n- a README-first explanation with prerequisites, mental model, machine view, and production notes\n- runnable Go code that demonstrates the concept directly\n- tests or verification surfaces where behavior should be provable\n- inline cross-references when a concept depends on another lesson\n\nThe curriculum avoids unexplained jumps. If a later idea appears early, the lesson names the future lesson or section that teaches it in detail. If a current idea depends on previous work, the lesson points back to the earlier lesson that established it. README cross-references use `[!NOTE]` or `[!TIP]` alerts, include lesson IDs, and link to the target `README.md` when naming a specific lesson.\n\n## Validation\n\nRun the CI-equivalent bundle before release or review:\n\n```bash\ngo build ./...\ngo vet ./...\nunformatted=$(gofmt -l .); test -z \"$unformatted\" || (echo \"$unformatted\" \u0026\u0026 exit 1)\ngo mod tidy\ngit diff --exit-code -- go.mod go.sum\ngo test ./...\ngo test -race ./...\ngo test -coverprofile=coverage.out ./...\ngo run ./scripts/validate_curriculum.go\n```\n\nFor benchmark-related changes:\n\n```bash\ngo test -bench=. -benchmem -count=1 ./08-quality-test/01-quality-and-performance/testing/benchmarks/\n```\n\n## Documentation\n\n| Document | Purpose |\n| --- | --- |\n| [ARCHITECTURE.md](./ARCHITECTURE.md) | locked public curriculum structure |\n| [curriculum.v2.json](./curriculum.v2.json) | machine-readable curriculum registry |\n| [CURRICULUM-BLUEPRINT.md](./CURRICULUM-BLUEPRINT.md) | teaching contract and lesson authoring rules |\n| [LEARNING-PATH.md](./LEARNING-PATH.md) | recommended paths through the curriculum |\n| [docs/PROGRESSION.md](./docs/PROGRESSION.md) | phase and milestone progression |\n| [CODE-STANDARDS.md](./CODE-STANDARDS.md) | Go source, comments, and teaching-code standards |\n| [TESTING-STANDARDS.md](./TESTING-STANDARDS.md) | test and verification expectations |\n| [COMMON-MISTAKES.md](./COMMON-MISTAKES.md) | common Go mistakes and where they are taught |\n| [docs/ENGINEERING_ERROR_FRAMEWORK.md](./docs/ENGINEERING_ERROR_FRAMEWORK.md) | backend and production error model |\n| [docs/flagship/OPSLANE_SAAS_BACKEND.md](./docs/flagship/OPSLANE_SAAS_BACKEND.md) | Opslane flagship specification |\n| [CONTRIBUTING.md](./CONTRIBUTING.md) | contribution and pull request workflow |\n| [RELEASE.md](./RELEASE.md) | release and branch maintenance process |\n| [MAINTAINER-CHECKLIST.md](./MAINTAINER-CHECKLIST.md) | maintainer review and release checklist |\n| [CHANGELOG.md](./CHANGELOG.md) | release history |\n\n## Contribution Workflow\n\nContributions follow [CONTRIBUTING.md](./CONTRIBUTING.md):\n\n1. Create or confirm an issue.\n2. Branch from the correct long-lived line.\n3. Open a draft PR early.\n4. Keep commits focused and use the bracketed commit format.\n5. Run local validation.\n6. Address review findings and CI failures.\n7. Hand off for maintainer review and squash merge.\n\nCommit format:\n\n```text\n[TYPE] short imperative description\n```\n\nAllowed types:\n\n```text\n[FEAT] [FIX] [DOCS] [TEST] [CHORE] [REFACTOR] [SECURITY] [RELEASE]\n```\n\n## Windows CGO Note\n\nSome paths use CGO through SQLite or the Go race detector. On Windows, install a GCC-compatible toolchain such as MinGW-w64 or use WSL2, then verify:\n\n```bash\ngo env CGO_ENABLED CC CXX\ngo test -race ./...\n```\n\n## License\n\nThis project is licensed under The Go Engineer License (TGE License) v1.0.\n\n- Free for personal, educational, and non-commercial use\n- Commercial use requires written permission\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswe-labs%2Fthe-go-engineer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fswe-labs%2Fthe-go-engineer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswe-labs%2Fthe-go-engineer/lists"}