architecture

package module
v0.0.0-...-797e501 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 16, 2021 License: Apache-2.0 Imports: 3 Imported by: 0

README

architecture

This architecture module is especially useful to bootstrap and maintain enterprise grade services. The main goal is to reduce degeneration of the architecture and related documentation.

planned features

  • domain driven design, enforce correct dependency graph
  • REST service generation
  • OpenAPI generation
  • Async http client generation support for easy WASM integration
  • Ensure correct regeneration after changes
  • MySQL Repository generation and migration support
  • Generate UML and architecture Diagrams
  • ...

Alternatives

  • goa seems to be very similar and quite popular. However, goa neither enforces a domain driven design nor does it provide a meaningful, typesafe and autocompletion friendly DSL. It does also not support planned features, especially with regard to an automatic project documentation, deep integrations of frontends or other backend languages.
  • gozero shares also some basic ideas and seems to enforce a better structure than goa, but otherwise it lacks the same features. They also use a custom API DSL, which have its own pros and cons. Also, most of its documentation seems to be in chinese, which makes it harder to understand. In a random sample, the source code itself seems not be documented at all.
  • kok is a generator toolkit for gokit

domain driven design, variant 1

This is a very fluid DSL with factory methods all over the place which integrates nicely with your favorite IDE providing autocompletion.

See the example:

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Project

type Project struct {
	// Dir is the root of the currently executing context, which is usually the compiled go architecture program.
	Dir string
}

func Detect

func Detect() (*Project, error)

Detect returns a project from the current context. This contains either the modules root, if executed from within an IDE or makefile or just the current working directory otherwise.

func (*Project) File

func (p *Project) File(name string) string

File returns the absolute file path for the current project.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL