How wahyurudiyan/sunny-go works
sgo is a proto-first Go service generator and local development tool. The principal workflow starts with a developer initializing a project, defining a service in proto, and generating the compiled contract plus DDD layers and transport/persistence adapters; the generated service is then run over HTTP and gRPC. Separate product branches provide OpenAPI generation/viewing, optional cache and search adapters, a browser-based project UI, and a debug dashboard that edits configuration and restarts the supervised service. The README documents these capabilities; some generator wiring is represented at subsystem level because its implementation was not sampled.
Main entry points: generate.go Generation orchestrator · commands.go CLI commands · webui/server.go Project web UI · dashboard/server.go Debug dashboard
Components 20
CLI and Setup
- CLI entry
cmd/sgo/main.go - CLI commands
internal/commands/commands.go - Project scaffold
internal/codegen/project/project.go - Project config
internal/config/config.go
Code Generation
- Generation orchestrator
internal/codegen/generate.go - Proto compiler
internal/codegen/proto/compile.go - Domain and CQRS
internal/codegen/core/core.go - Wire generation
internal/codegen/wiregen/wiregen.go - HTTP adapters
internal/codegen/httpgen/httpgen.go - gRPC adapters
internal/codegen/grpcgen/grpcgen.go - Persistence adapters
internal/codegen/sqlgen/sqlgen.go - Cache and search
internal/codegen/cachegen/cachegen.go - OpenAPI generator
internal/codegen/openapigen/generate.go
Service Runtime
- Run supervisor
internal/run/supervisor.go - Config sources
internal/run/envsource/source.go
Browser Interfaces
- Debug dashboard
internal/dashboard/server.go - Project web UI
internal/webui/server.go - OpenAPI viewer
internal/openapiui/server.go
Other components
- Developer
- Generated service
Connections 26
- Developer → CLI entry: runs CLI
- CLI entry → CLI commands: executes
- CLI commands → Project scaffold: initializes project
- CLI commands → Project config: loads config
- CLI commands → Generation orchestrator: requests generation
- Project scaffold → Project config: writes config
- Generation orchestrator → Proto compiler: compiles proto
- Generation orchestrator → Domain and CQRS: generates domain
- Generation orchestrator → Wire generation: generates wiring
- Generation orchestrator → HTTP adapters: generates HTTP
- Generation orchestrator → gRPC adapters: generates gRPC
- Generation orchestrator → Persistence adapters: generates storage
- Generation orchestrator → Cache and search: generates optional adapters
- Generation orchestrator → OpenAPI generator: generates spec
- Generation orchestrator → Generated service: writes generated layers
- CLI commands → Run supervisor: starts service
- Run supervisor → Config sources: reads environment
- CLI commands → Debug dashboard: serves debug UI
- Debug dashboard → Config sources: reads and writes config
- Debug dashboard → Run supervisor: restarts child
- CLI commands → Project web UI: serves project UI
- Project web UI → Project scaffold: scaffolds project
- Project web UI → Generation orchestrator: requests generation
- Project web UI → Project config: reads and saves config
- CLI commands → OpenAPI viewer: serves spec viewer
- OpenAPI viewer → OpenAPI generator: reads generated document