|
Goa Design Wizard
Use the Goa Design Wizard to:
- Create Goa designs in seconds
- Review existing designs
- Explore the Goa DSL
(requires a ChatGPT Plus subscription)
|
Goa - Design First, Code With Confidence
Overview
Goa transforms how you build APIs and microservices in Go with its powerful design-first approach. Instead of writing boilerplate code, you express your API's intent through a clear, expressive DSL. Goa then automatically generates production-ready code, comprehensive documentation, and client librariesβall perfectly aligned with your design.
The result? Dramatically reduced development time, consistent APIs, and the elimination of the documentation-code drift that plagues traditional development.
Why Goa?
Traditional API development suffers from:
- Inconsistency: Manually maintained docs that quickly fall out of sync with code
- Wasted effort: Writing repetitive boilerplate and transport-layer code
- Painful integrations: Client packages that need constant updates
- Design afterthoughts: Documentation added after implementation, missing key details
Goa solves these problems by:
- Generating 30-50% of your codebase directly from your design
- Ensuring perfect alignment between design, code, and documentation
- Supporting multiple transports (HTTP and gRPC) from a single design
- Maintaining a clean separation between business logic and transport details
π Key Features
- Expressive Design Language: Define your API with a clear, type-safe DSL that captures your intent
- Comprehensive Code Generation:
- Type-safe server interfaces that enforce your design
- Client packages with full error handling
- Transport layer adapters (HTTP/gRPC) with routing and encoding
- OpenAPI/Swagger documentation that's always in sync
- CLI tools for testing your services
- Multi-Protocol Support: Generate HTTP REST and gRPC endpoints from a single design
- Clean Architecture: Business logic remains separate from transport concerns
- Enterprise Ready: Supports authentication, authorization, CORS, logging, and more
π How It Works
βββββββββββββββ ββββββββββββββββ βββββββββββββββββββββββ
β Design API βββββ>β Generate Codeβββββ>β Implement Business β
β using DSL β β & Docs β β Logic β
βββββββββββββββ ββββββββββββββββ βββββββββββββββββββββββ
- Design: Express your API's intent in Goa's DSL
- Generate: Run
goa gen
to create server interfaces, client code, and documentation
- Implement: Focus solely on writing your business logic in the generated interfaces
- Evolve: Update your design and regenerate code as your API evolves
π Quick Start
go install goa.design/goa/v3/cmd/goa@latest
mkdir hello && cd hello
go mod init hello
mkdir design
cat > design/design.go << EOF
package design
import . "goa.design/goa/v3/dsl"
var _ = Service("hello", func() {
Method("say_hello", func() {
Payload(func() {
Field(1, "name", String)
Required("name")
})
Result(String)
HTTP(func() {
GET("/hello/{name}")
})
})
})
EOF
goa gen hello/design
goa example hello/design
go mod tidy
go run cmd/hello/*.go --http-port 8000
curl http://localhost:8000/hello/world
The example above:
- Defines a simple "hello" service with one method
- Generates server and client code
- Starts a server that logs requests server-side (without displaying any client output)
π Documentation
Our completely redesigned documentation site at goa.design provides comprehensive guides and references:
π οΈ Real-World Examples
The examples repository contains complete, working examples demonstrating:
- Basic: Simple service showcasing core Goa concepts
- Cellar: A more complete REST API example
- Cookies: HTTP cookie management
- Encodings: Working with different content types
- Error: Comprehensive error handling strategies
- Files & Upload/Download: File handling capabilities
- HTTP Status: Custom status code handling
- Interceptors: Request/response processing middleware
- Multipart: Handling multipart form submissions
- Security: Authentication and authorization examples
- Streaming: Implementing streaming endpoints
- Tracing: Integrating with observability tools
- TUS: Resumable file uploads implementation
π’ Success Stories
"Goa reduced our API development time by 40% while ensuring perfect consistency between our documentation and implementation. It's been a game-changer for our microservices architecture." - Lead Engineer at FinTech Company
"We migrated 30+ services to Goa and eliminated documentation drift entirely. Our teams can now focus on business logic instead of maintaining OpenAPI specs by hand." - CTO at SaaS Platform
π£ What's New
Jan 2024: Goa's powerful design DSL is now accessible through the Goa Design Wizard, a specialized AI trained on Goa. Generate service designs through natural language conversations!
February 2025: The Goa website has been completely redesigned with extensive new documentation, tutorials, and guides to help you build better services.
π License
MIT License - see LICENSE for details.