← ClaudeAtlas

gin-architectlisted

Framework-specific delta on rest-api-architect — Gin 1.12 on Go 1.26. Feature layout, struct-tag validation, RFC 7807 errors, in-house JWT or external IdP, route groups for URL-prefix versioning, OpenAPI. Read rest-api-architect first for the cross-cutting REST conventions. Use when scaffolding or reviewing a Gin service.
ralvarezdev/ralvaskills · ★ 2 · API & Backend · score 75
Install: claude install-skill ralvarezdev/ralvaskills
# Gin Architecture Targets **Gin 1.12** on **Go 1.26**. Companion to [go-architect](../../languages/go-architect/SKILL.md), [rest-api-architect](../../protocols/rest-api-architect/SKILL.md), and [sql-architect](../../databases/sql-architect/SKILL.md). Implementation skeletons in [RECIPES.md](RECIPES.md); pinned deps in [STACK.md](STACK.md). ## 1. Project structure — feature-based One folder per bounded context. Each feature owns its routes, service, repo, DTOs, and SQL files. Mirrors [fastapi-architect](../fastapi-architect/SKILL.md) so polyglot teams can navigate either side. Full tree in [RECIPES.md](RECIPES.md). - **`handlers.go`** depends on `service.go`; never reaches into `repo.go` directly. - **`service.go`** is pure Go — no `gin` imports. Easy to unit-test without a fake `*gin.Context`. - **`dto.go`** holds wire types with `json:` and `binding:` (validator) tags. **Never reuse domain structs as DTOs** — that's how internal fields leak into the API. ## 2. Routing & versioning URL-prefix versioning via route groups. One group per version, one sub-group per feature. Registration skeleton in [RECIPES.md](RECIPES.md). - **One `Register(rg, deps)` function per feature** — keeps `main.go` thin. - **Path params typed at parse time:** `id, err := uuid.Parse(c.Param("user_id"))` — return 400 on parse failure. - **Use `gin.RouterGroup`, not bare `Engine.GET`,** so versioning + per-group middleware stays clean. ## 3. Request validation Use struct tags with `go-playground