gong

module
v0.0.0-...-78e2d0a Latest Latest
Warning

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

Go to latest
Published: Jan 15, 2026 License: MIT

README

1. Why Gong ?

Gong is a framework for lowering the effort for developping Domain Specific Modelling Environnement (DSME).

A DSME is an application that allows a users to edit data and diagrams. The data is based on the abstract syntax of the Domain Specific Language (DSL). The diagrams are based on the concrete syntax of the DSL.

General Purpose Modeling Languages (GPML) like UML or SysML are standards with hundreds of elements in their abstract and concrete syntax. However, tailoring them to a specific domain often involves subsetting—ignoring the majority of the standard to focus on a narrow slice — and profiling (stereotypes) to bend generic concepts to specific needs.

Gong allows you to grow your DSML. You start with an empty metamodel or an existing small metamodel close to your need and progressively introduce abstract and concrete syntax elements only as your understanding of the domain matures.

Developing a robust DSML remains a complex task that requires familiarity with standard metamodeling patterns. Gong aims to democratize the development part of this process.

2. A "hello world" Domain Specific Modeling Environment (DSME) application

2.1. Prerequisite

2.2. Generating & running the code with the gong command

In a terminal, execute the following commands:

go install github.com/fullstack-lang/gong/go/cmd/gong@main
mkdir helloworld
cd helloworld
mkdir go
mkdir go/models
echo "package models
type Hello struct {
  Name string
  HelloType HelloType
}" > go/models/hello.go
echo "package models
type Country struct {
  Name string
  Hello *Hello
  AlternateHellos []*Hello
}" > go/models/country.go
echo "package models
type HelloType string
const (
  Casual HelloType = \"Casual\"
  Formal HelloType = \"Formal\"
)" > go/models/hello_type.go
gong generate --level1 go/models
cd go/cmd/helloworld
./helloworld -unmarshallFromCode=data/stage.go -marshallOnCommit=data/stage
cd ../../../..
rm -rf helloworld

Then, browse to localhost:8080 and add data manualy.

helloworld.png

3. Installing and compiling the gong repo

git clone https://github.com/fullstack-lang/gong
cd gong/go/cmd/gong
go install
cd ../../..
./scripts/run_gong_conditionally.sh

4. Status

Gong has been used in different settings. It is a work in progress that matures with each new DSME development.

For DSME examples see

  • explore the "dsme" directory that contains small DSMEs to start from.
  • https://github.com/fullstack-lang/gongreqif, a tool for analysing ReqIF files. The abstract syntax is the ReqIF model and the concrete syntax is the rendering of the specifications as markdown/HTML.

Directories

Path Synopsis
dsme
cld/go
Package cld cld backend API
Package cld cld backend API
cld/go/cmd/cld command
cld/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the cld stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the cld stack.
cld/go/level1stack
do not modify, generated file
do not modify, generated file
cld/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
cld/go/probe
generated code - do not edit
generated code - do not edit
project/go
Package project project backend API
Package project project backend API
project/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the project stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the project stack.
project/go/level1stack
do not modify, generated file
do not modify, generated file
project/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
project/go/probe
generated code - do not edit
generated code - do not edit
statemachines/go
Package statemachines statemachines backend API
Package statemachines statemachines backend API
statemachines/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the statemachines stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the statemachines stack.
statemachines/go/level1stack
do not modify, generated file
do not modify, generated file
statemachines/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
statemachines/go/probe
generated code - do not edit
generated code - do not edit
go
Package gong gong backend API
Package gong gong backend API
cmd/gong command
diagrams
Package diagrams implements uml diagrams for documenting the gong stack.
Package diagrams implements uml diagrams for documenting the gong stack.
level1stack
do not modify, generated file
do not modify, generated file
models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
probe
generated code - do not edit
generated code - do not edit
lib
button/go
Package button button backend API
Package button button backend API
button/go/controllers
generated code - do not edit
generated code - do not edit
button/go/db
generated code - do not edit
generated code - do not edit
button/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the button stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the button stack.
button/go/fullstack
do not modify, generated file
do not modify, generated file
button/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
button/go/orm
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
button/go/orm/dbgorm
generated code - do not edit
generated code - do not edit
button/go/probe
generated code - do not edit
generated code - do not edit
button/go/stack
do not modify, generated file
do not modify, generated file
button/go/static
generated code - do not edit
generated code - do not edit
cursor/go
Package cursor cursor backend API
Package cursor cursor backend API
cursor/go/controllers
generated code - do not edit
generated code - do not edit
cursor/go/db
generated code - do not edit
generated code - do not edit
cursor/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the cursor stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the cursor stack.
cursor/go/fullstack
do not modify, generated file
do not modify, generated file
cursor/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
cursor/go/orm
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
cursor/go/orm/dbgorm
generated code - do not edit
generated code - do not edit
cursor/go/probe
generated code - do not edit
generated code - do not edit
cursor/go/stack
do not modify, generated file
do not modify, generated file
cursor/go/static
generated code - do not edit
generated code - do not edit
doc/go
Package doc doc backend API
Package doc doc backend API
doc/go/cmd/doc command
doc/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the doc stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the doc stack.
doc/go/level1stack
do not modify, generated file
do not modify, generated file
doc/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
doc/go/models/nodestates
nodestates/nodestates.go
nodestates/nodestates.go
doc/go/probe
generated code - do not edit
generated code - do not edit
gantt/go
Package gantt gantt backend API
Package gantt gantt backend API
gantt/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the gantt stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the gantt stack.
gantt/go/level1stack
do not modify, generated file
do not modify, generated file
gantt/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
gantt/go/probe
generated code - do not edit
generated code - do not edit
load/go
Package load load backend API
Package load load backend API
load/go/controllers
generated code - do not edit
generated code - do not edit
load/go/db
generated code - do not edit
generated code - do not edit
load/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the load stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the load stack.
load/go/fullstack
do not modify, generated file
do not modify, generated file
load/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
load/go/orm
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
load/go/orm/dbgorm
generated code - do not edit
generated code - do not edit
load/go/probe
generated code - do not edit
generated code - do not edit
load/go/stack
do not modify, generated file
do not modify, generated file
load/go/static
generated code - do not edit
generated code - do not edit
markdown/go
Package markdown markdown backend API
Package markdown markdown backend API
markdown/go/cmd/markdown command
generated boilerplate code edit the file for adding other stages
generated boilerplate code edit the file for adding other stages
markdown/go/controllers
generated code - do not edit
generated code - do not edit
markdown/go/db
generated code - do not edit
generated code - do not edit
markdown/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the markdown stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the markdown stack.
markdown/go/fullstack
do not modify, generated file
do not modify, generated file
markdown/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
markdown/go/orm
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
markdown/go/orm/dbgorm
generated code - do not edit
generated code - do not edit
markdown/go/probe
generated code - do not edit
generated code - do not edit
markdown/go/stack
do not modify, generated file
do not modify, generated file
markdown/go/static
generated code - do not edit
generated code - do not edit
sim
sim/go
Package sim sim backend API
Package sim sim backend API
sim/go/cmd/sim command
sim/go/controllers
generated code - do not edit
generated code - do not edit
sim/go/db
generated code - do not edit
generated code - do not edit
sim/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the sim stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the sim stack.
sim/go/fullstack
do not modify, generated file
do not modify, generated file
sim/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
sim/go/orm
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
sim/go/orm/dbgorm
generated code - do not edit
generated code - do not edit
sim/go/probe
generated code - do not edit
generated code - do not edit
sim/go/stack
do not modify, generated file
do not modify, generated file
sim/go/static
generated code - do not edit
generated code - do not edit
slider/go
Package slider slider backend API
Package slider slider backend API
slider/go/cmd/slider command
generated boilerplate code edit the file for adding other stages
generated boilerplate code edit the file for adding other stages
slider/go/controllers
generated code - do not edit
generated code - do not edit
slider/go/db
generated code - do not edit
generated code - do not edit
slider/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the slider stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the slider stack.
slider/go/fullstack
do not modify, generated file
do not modify, generated file
slider/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
slider/go/orm
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
slider/go/orm/dbgorm
generated code - do not edit
generated code - do not edit
slider/go/probe
generated code - do not edit
generated code - do not edit
slider/go/stack
do not modify, generated file
do not modify, generated file
slider/go/static
generated code - do not edit
generated code - do not edit
split/go
Package split split backend API
Package split split backend API
split/go/controllers
generated code - do not edit
generated code - do not edit
split/go/db
generated code - do not edit
generated code - do not edit
split/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the split stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the split stack.
split/go/fullstack
do not modify, generated file
do not modify, generated file
split/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
split/go/orm
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
split/go/orm/dbgorm
generated code - do not edit
generated code - do not edit
split/go/probe
generated code - do not edit
generated code - do not edit
split/go/stack
do not modify, generated file
do not modify, generated file
split/go/static
generated code - do not edit
generated code - do not edit
ssg/go
Package ssg ssg backend API
Package ssg ssg backend API
ssg/go/cmd/ssg command
ssg/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the ssg stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the ssg stack.
ssg/go/level1stack
do not modify, generated file
do not modify, generated file
ssg/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
ssg/go/probe
generated code - do not edit
generated code - do not edit
svg
svg/go
Package svg svg backend API
Package svg svg backend API
svg/go/cmd/svg command
generated boilerplate code edit the file for adding other stages
generated boilerplate code edit the file for adding other stages
svg/go/controllers
generated code - do not edit
generated code - do not edit
svg/go/db
generated code - do not edit
generated code - do not edit
svg/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the svg stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the svg stack.
svg/go/fullstack
do not modify, generated file
do not modify, generated file
svg/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
svg/go/orm
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
svg/go/orm/dbgorm
generated code - do not edit
generated code - do not edit
svg/go/probe
generated code - do not edit
generated code - do not edit
svg/go/stack
do not modify, generated file
do not modify, generated file
svg/go/static
generated code - do not edit
generated code - do not edit
table/go
Package table table backend API
Package table table backend API
table/go/controllers
generated code - do not edit
generated code - do not edit
table/go/db
generated code - do not edit
generated code - do not edit
table/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the table stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the table stack.
table/go/fullstack
do not modify, generated file
do not modify, generated file
table/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
table/go/orm
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
table/go/orm/dbgorm
generated code - do not edit
generated code - do not edit
table/go/probe
generated code - do not edit
generated code - do not edit
table/go/stack
do not modify, generated file
do not modify, generated file
table/go/static
generated code - do not edit
generated code - do not edit
tone/go
Package tone tone backend API
Package tone tone backend API
tone/go/controllers
generated code - do not edit
generated code - do not edit
tone/go/db
generated code - do not edit
generated code - do not edit
tone/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the tone stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the tone stack.
tone/go/fullstack
do not modify, generated file
do not modify, generated file
tone/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
tone/go/orm
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
tone/go/orm/dbgorm
generated code - do not edit
generated code - do not edit
tone/go/probe
generated code - do not edit
generated code - do not edit
tone/go/stack
do not modify, generated file
do not modify, generated file
tone/go/static
generated code - do not edit
generated code - do not edit
tree/go
Package tree tree backend API
Package tree tree backend API
tree/go/cmd/tree command
generated boilerplate code edit the file for adding other stages
generated boilerplate code edit the file for adding other stages
tree/go/controllers
generated code - do not edit
generated code - do not edit
tree/go/db
generated code - do not edit
generated code - do not edit
tree/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the tree stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the tree stack.
tree/go/fullstack
do not modify, generated file
do not modify, generated file
tree/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
tree/go/orm
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
tree/go/orm/dbgorm
generated code - do not edit
generated code - do not edit
tree/go/probe
generated code - do not edit
generated code - do not edit
tree/go/stack
do not modify, generated file
do not modify, generated file
tree/go/static
generated code - do not edit
generated code - do not edit
xlsx/go
Package xlsx xlsx backend API
Package xlsx xlsx backend API
xlsx/go/cmd/xlsx command
generated boilerplate code edit the file for adding other stages
generated boilerplate code edit the file for adding other stages
xlsx/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the xlsx stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the xlsx stack.
xlsx/go/level1stack
do not modify, generated file
do not modify, generated file
xlsx/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
xlsx/go/probe
generated code - do not edit
generated code - do not edit
pkg
docx/go
Package docx docx backend API
Package docx docx backend API
docx/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the docx stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the docx stack.
docx/go/level1stack
do not modify, generated file
do not modify, generated file
docx/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
docx/go/probe
generated code - do not edit
generated code - do not edit
test/go
Package test test backend API
Package test test backend API
test/go/controllers
generated code - do not edit
generated code - do not edit
test/go/db
generated code - do not edit
generated code - do not edit
test/go/diagrams
Package diagrams implements uml diagrams for documenting the test stack.
Package diagrams implements uml diagrams for documenting the test stack.
test/go/fullstack
do not modify, generated file
do not modify, generated file
test/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
test/go/orm
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
test/go/orm/dbgorm
generated code - do not edit
generated code - do not edit
test/go/probe
generated code - do not edit
generated code - do not edit
test/go/stack
do not modify, generated file
do not modify, generated file
test/go/static
generated code - do not edit
generated code - do not edit
test2/go
Package test2 test2 backend API
Package test2 test2 backend API
test2/go/controllers
generated code - do not edit
generated code - do not edit
test2/go/db
generated code - do not edit
generated code - do not edit
test2/go/diagrams
Package diagrams implements uml diagrams for documenting the test2 stack.
Package diagrams implements uml diagrams for documenting the test2 stack.
test2/go/fullstack
do not modify, generated file
do not modify, generated file
test2/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
test2/go/models/x
generated code - do not edit
generated code - do not edit
test2/go/orm
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
generated by stacks/gong/go/models/orm_file_per_struct_back_repo.go
test2/go/orm/dbgorm
generated code - do not edit
generated code - do not edit
test2/go/probe
generated code - do not edit
generated code - do not edit
test2/go/stack
do not modify, generated file
do not modify, generated file
test2/go/static
generated code - do not edit
generated code - do not edit
test3/go
Package test3 test3 backend API
Package test3 test3 backend API
test3/go/diagrams
generated code - do not edit Package diagrams implements uml diagrams for documenting the test3 stack.
generated code - do not edit Package diagrams implements uml diagrams for documenting the test3 stack.
test3/go/level1stack
do not modify, generated file
do not modify, generated file
test3/go/models
Default generated models package docs (at least one file is necessary in a models package)
Default generated models package docs (at least one file is necessary in a models package)
test3/go/probe
generated code - do not edit
generated code - do not edit

Jump to

Keyboard shortcuts

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