Files
signoz/docs/contributing/go
Pandey f44d6c7c84 docs(contributing): document the kind/spec envelope for sum types (#12494)
#### Description

- Documents the kind/spec envelope pattern for sum types in
`docs/contributing/go/types.md`: the envelope shape, why it goes at the
point of variance rather than the resource root, the tagging-style
rationale (adjacently tagged vs internally tagged vs sibling optional
fields), the validating `UnmarshalJSON`, the OpenAPI variant structs,
and the data-migration-vs-storable-twin trade-off for legacy persisted
shapes.
- Examples are generic (`FooConfig` with `bar`/`baz` kinds), with
`RuleThresholdData`, `EvaluationEnvelope` and the dashboard plugins as
the in-tree references.
- Cross-links from `handler.md`'s "`oneOf` with a discriminator"
section, which keeps owning the schema mechanics.
2026-08-10 11:22:33 +00:00
..

Go

This document provides an overview of contributing to the SigNoz backend written in Go. The SigNoz backend is built with Go, focusing on performance, maintainability, and developer experience. We strive for clean, idiomatic code that follows established Go practices while addressing the unique needs of an observability platform.

We adhere to three primary style guides as our foundation:

We recommend (almost enforce) reviewing these guides before contributing to the codebase. They provide valuable insights into writing idiomatic Go code and will help you understand our approach to backend development. In addition, we have a few additional rules that make certain areas stricter than the above which can be found in area-specific files in this package:

  • Abstractions - When to introduce new types and intermediate representations
  • Authz - Authorization, roles, and access control
  • Errors - Structured error handling
  • Endpoint - HTTP endpoint patterns
  • Flagger - Feature flag patterns
  • Handler - HTTP handler patterns
  • Provider - Dependency injection and provider patterns
  • Packages - Naming, layout, and conventions for pkg/ packages
  • Service - Managed service lifecycle with factory.Service
  • SQL - Database and SQL patterns
  • Types - Domain types, request/response bodies, and storage rows in pkg/types/