{"id":15876541,"url":"https://github.com/fullstack-lang/gong","last_synced_at":"2026-01-23T01:19:07.446Z","repository":{"id":37211675,"uuid":"354901902","full_name":"fullstack-lang/gong","owner":"fullstack-lang","description":"Gong (go+ng) is a go sub-language that compiles to go and angular. All valid go is valid gong and vice versa. Gong enables fast development of web applications. Gong is model centric and by default, a UML diagram editor of the model is embedded in each application.","archived":false,"fork":false,"pushed_at":"2025-01-17T09:16:18.000Z","size":125735,"stargazers_count":14,"open_issues_count":32,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-17T09:38:12.888Z","etag":null,"topics":["angular","angular2","full-stack","fullstack","gin","go","golang","gorm","material","orm","swagger","typescript"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fullstack-lang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-05T16:40:19.000Z","updated_at":"2025-01-17T09:16:20.000Z","dependencies_parsed_at":"2023-09-22T13:46:01.284Z","dependency_job_id":"b114c64e-1db6-46f3-bd00-8729a9d5e69a","html_url":"https://github.com/fullstack-lang/gong","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstack-lang%2Fgong","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstack-lang%2Fgong/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstack-lang%2Fgong/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstack-lang%2Fgong/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fullstack-lang","download_url":"https://codeload.github.com/fullstack-lang/gong/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236853704,"owners_count":19215170,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","angular2","full-stack","fullstack","gin","go","golang","gorm","material","orm","swagger","typescript"],"created_at":"2024-10-06T02:01:00.352Z","updated_at":"2026-01-23T01:19:07.429Z","avatar_url":"https://github.com/fullstack-lang.png","language":"Go","readme":"\n- [1. Why Gong ?](#1-why-gong-)\n- [2. A \"hello world\" Domain Specific Modeling Environment (DSME) application](#2-a-hello-world-domain-specific-modeling-environment-dsme-application)\n  - [2.1. Prerequisite](#21-prerequisite)\n  - [2.2. Generating \\\u0026 running the code with the `gong` command](#22-generating--running-the-code-with-the-gong-command)\n- [3. Installing and compiling the gong repo](#3-installing-and-compiling-the-gong-repo)\n- [4. Status](#4-status)\n\n\n# 1. Why Gong ?\n\nGong is a framework for lowering the effort for developping Domain Specific Modelling Environnement (DSME).\n\nA DSME is an application that allows a users to edit data and diagrams.\nThe data is based on the abstract syntax of the Domain Specific Language (DSL). The diagrams are based on the concrete syntax of the DSL.\n\nGeneral 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.\n\nGong 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. \n\nDeveloping a robust DSML remains a complex task that requires familiarity with standard metamodeling patterns. Gong aims to democratize the development part of this process.\n\n# 2. A \"hello world\" Domain Specific Modeling Environment (DSME) application\n\n## 2.1. Prerequisite\n\n- go 1.24 (see https://go.dev/doc/install)\n\n## 2.2. Generating \u0026 running the code with the `gong` command\n\nIn a terminal, execute the following commands:\n\n```bash\ngo install github.com/fullstack-lang/gong/go/cmd/gong@main\nmkdir helloworld\ncd helloworld\nmkdir go\nmkdir go/models\necho \"package models\ntype Hello struct {\n  Name string\n  HelloType HelloType\n}\" \u003e go/models/hello.go\necho \"package models\ntype Country struct {\n  Name string\n  Hello *Hello\n  AlternateHellos []*Hello\n}\" \u003e go/models/country.go\necho \"package models\ntype HelloType string\nconst (\n  Casual HelloType = \\\"Casual\\\"\n  Formal HelloType = \\\"Formal\\\"\n)\" \u003e go/models/hello_type.go\ngong generate --level1 go/models\ncd go/cmd/helloworld\n./helloworld -unmarshallFromCode=data/stage.go -marshallOnCommit=data/stage\ncd ../../../..\nrm -rf helloworld\n```\n\nThen, browse to [localhost:8080](http://localhost:8080) and add data manualy.\n\n![helloworld.png](docs/images/helloworld.png)\n\n# 3. Installing and compiling the gong repo\n\n```bash\ngit clone https://github.com/fullstack-lang/gong\ncd gong/go/cmd/gong\ngo install\ncd ../../..\n./scripts/run_gong_conditionally.sh\n```\n\n# 4. Status\n\nGong has been used in different settings. It is a work in progress that matures with each new DSME development.\n\nFor DSME examples see\n\n- explore the \"dsme\" directory that contains small DSMEs to start from.\n- 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.","funding_links":[],"categories":["Framework Interoperability","Recently Updated"],"sub_categories":["Cross-Framework Integration","[Oct 06, 2024](/content/2024/10/06/README.md)"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffullstack-lang%2Fgong","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffullstack-lang%2Fgong","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffullstack-lang%2Fgong/lists"}