NOTE: These rules mention terms described in the Terminology document.
This repository has the following structure:
.
├── internal # Internal packages
│ ├── gqlschema # GraphQL types and schema
│ │ ├── schema.graphql # GraphQL schema defined with Schema Definition Language
│ │ ├── models_gen.go # GraphQL structs (do not modify - autogenerated file)
│ │ ├── schema_gen.go # GraphQL schema (do not modify - autogenerated file)
│ │ ├── config.yml # Custom types mapping
│ │ └── {CUSTOM_TYPE}.go # Custom types definition
│ ├── domain # Business logic and resolvers split by domains
│ │ ├── {DOMAIN_NAME} # Domain name directory
│ │ │ ├── automock # Generated interface mocks
│ │ │ ├── {RESOURCE}_resolver.go # Resolver type for a specific resource
│ │ │ ├── {RESOURCE}_service.go # Business logic for a specific resource
│ │ │ ├── {RESOURCE}_converter.go # Type conversion for a specific resource
│ │ │ └── {DOMAIN_NAME}.go # The main domain file that exports the `Resolver` composed by resource resolvers
│ │ ├── shared # Shared types for cross-domain dependencies
│ │ └── root_resolver.go # Type composed of all resolvers from all domains
│ └── ... # Other internal packages
├── contrib # Examples, non-essential source files, configurations and other files
│ └── examples # Example API resources
├── hack # Scripts for generating Custom Resource API
├── acceptance # Acceptance test setup
├── pkg # All generic utilities
├── vendor # Dependencies managed by Dep
├── main.go # The main entrypoint of the application
├── Gopkg.toml # Dep manifest
└── Gopkg.lock # Dep lock (do not modify - autogenerated file)