{"id":36443351,"url":"https://github.com/fullstack-lang/gantt","last_synced_at":"2026-01-11T22:01:22.219Z","repository":{"id":106395061,"uuid":"601975580","full_name":"fullstack-lang/gantt","owner":"fullstack-lang","description":"A gantt web application in 1k lines of go","archived":false,"fork":false,"pushed_at":"2023-02-21T00:27:35.000Z","size":1067,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2024-06-20T23:53:19.234Z","etag":null,"topics":[],"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":"2023-02-15T08:26:24.000Z","updated_at":"2023-02-15T10:53:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"4e912f46-a9fc-4fa7-b202-41801f5f736c","html_url":"https://github.com/fullstack-lang/gantt","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fullstack-lang/gantt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstack-lang%2Fgantt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstack-lang%2Fgantt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstack-lang%2Fgantt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstack-lang%2Fgantt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fullstack-lang","download_url":"https://codeload.github.com/fullstack-lang/gantt/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullstack-lang%2Fgantt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28324835,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T18:42:50.174Z","status":"ssl_error","status_checked_at":"2026-01-11T18:39:13.842Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-01-11T22:01:21.217Z","updated_at":"2026-01-11T22:01:22.213Z","avatar_url":"https://github.com/fullstack-lang.png","language":"Go","readme":"# gantt\n\n\n## Requirements\n\n\n- [ ] go (version \u003e= 1.19)\n- [ ] node (version \u003e= 18.xx)\n- [ ] vscode (\u003e= 1.75)\n- [ ] gopls \u003e= 0.37\n\n## count the number of go lines of code\n\n```\ngit clone https://github.com/fullstack-lang/gantt\ncd gantt\nfind gantt2svg models cmd -name '*.go' -type f -print0 | xargs -0 wc -l\n\n   57 gantt2svg/generate_arrow.go\n  379 gantt2svg/generate_svg.go\n   11 models/arrow.go\n   16 models/bar.go\n   88 models/gantt.go\n    8 models/group.go\n   15 models/lane.go\n   15 models/milestone.go\n   12 models/note_on_the_model.go\n  165 cmd/gantt/gantt1.go\n  190 cmd/gantt/main.go\n  956 total\n```\n\n## generate the application\n\n```\nnpm install -g @angular/cli@15\ngo install github.com/fullstack-lang/gong/go/cmd/gongc@gantt_example_generation\ngongc go/models\n```\n\n## Patch the font app application\n\n\n### Import the modules for SVG display\n\nin file ng/src/app/app.module.ts\n\n```ts\n...\nimport { GongModule } from 'gong'\n\n// add the two following lines \nimport { GongsvgModule } from 'gongsvg'\nimport { GongsvgspecificModule } from 'gongsvgspecific'\n...\n\n    GongModule,\n\n    // add the two following lines \n    GongsvgspecificModule,\n    GongsvgModule,\n\n```\n\n### Edit the import path\n\nin ng/tsconfig.json\n\n```json\n      \"gantt\": [\n        \"projects/gantt/src/public-api.ts\"\n      ],\n\n      // add the following import path\n      \"gongsvg\": [\n        \"../vendor/github.com/fullstack-lang/gongsvg/ng/projects/gongsvg/src/public-api.ts\"\n      ],\n      \"gongsvgspecific\": [\n        \"../vendor/github.com/fullstack-lang/gongsvg/ng/projects/gongsvgspecific/src/public-api.ts\"\n      ],\n```\n\n### Add a tab to the generated application\n\nreplace content of ng/src/app/app.component.ts with\n\n```ts\nimport { Component } from '@angular/core';\n\n@Component({\n  selector: 'app-root',\n  templateUrl: './app.component.html',\n})\nexport class AppComponent {\n\n  view = 'Gantt view'\n  gantt = 'Gantt view'\n  default = 'Data gantt view'\n  meta = 'Meta view'\n  data_svg = 'Data svg view'\n  diagrams = 'Uml view'\n\n  views: string[] = [this.gantt, this.default, this.data_svg, this.diagrams, this.meta];\n}\n```\n\nin ng/src/app/app.component.html\n\nadd the following elemets at the beginning of the file\n\n```html\n\u003cas-split *ngIf=\"view==gantt\" direction=\"vertical\"\u003e\n    \u003cas-split-area [size]=05\u003e\n        \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n        \u003cmat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"view\"\u003e\n            \u003cmat-radio-button *ngFor=\"let view of views\" [value]=\"view\"\u003e\n                {{view}}\u0026nbsp;\u0026nbsp;\u0026nbsp;\n            \u003c/mat-radio-button\u003e\n        \u003c/mat-radio-group\u003e\n    \u003c/as-split-area\u003e\n    \u003cas-split-area [size]=95\u003e\n        \u003clib-svg\u003e\u003c/lib-svg\u003e\n    \u003c/as-split-area\u003e\n\u003c/as-split\u003e\n\n\u003cas-split *ngIf=\"view==data_svg\" direction=\"vertical\"\u003e\n    \u003cas-split-area [size]=05\u003e\n        \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n        \u003cmat-radio-group aria-label=\"Select an option\" [(ngModel)]=\"view\"\u003e\n            \u003cmat-radio-button *ngFor=\"let view of views\" [value]=\"view\"\u003e\n                {{view}}\u0026nbsp;\u0026nbsp;\u0026nbsp;\n            \u003c/mat-radio-button\u003e\n        \u003c/mat-radio-group\u003e\n    \u003c/as-split-area\u003e\n    \u003cas-split-area [size]=95\u003e\n        \u003capp-gongsvg-splitter\u003e\u003c/app-gongsvg-splitter\u003e\n    \u003c/as-split-area\u003e\n\u003c/as-split\u003e\n```\n\n## re compile and run the application\n\n\n```\ngongc go/models\ncd go/cmd/gantt\n./gantt -unmarshallFromCode=gantt1.go -marshallOnCommit=gantt1 \n```\n\n\n\n## navigating to the application\n\nnavigate to http://localhost:8080/. \n\n\u003e If you are use Chrome on mac, you need to creates an artifical adress like `mymac`\non `etc/host` (see https://stackoverflow.com/questions/10883211/why-does-my-http-localhost-cors-origin-not-work)\n\n\nthen navigate to the display of the UML diagram by clicking on the `Diagrams view` then select `New Diagram`.\n\nYou should see\n\n\u003cimg width=\"500\" src=\"./gantt.png\"\u003e\n\n\u003cimg width=\"800\" src=\"./uml.png\"\u003e\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffullstack-lang%2Fgantt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffullstack-lang%2Fgantt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffullstack-lang%2Fgantt/lists"}