archsight 0.1.4 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +5 -4
  3. data/README.md +44 -59
  4. data/chart/archsight/Chart.yaml +6 -0
  5. data/chart/archsight/README.md +3 -0
  6. data/chart/archsight/templates/NOTES.txt +22 -0
  7. data/chart/archsight/templates/_helpers.tpl +62 -0
  8. data/chart/archsight/templates/deployment.yaml +114 -0
  9. data/chart/archsight/templates/ingress.yaml +56 -0
  10. data/chart/archsight/templates/resources-configmap.yaml +10 -0
  11. data/chart/archsight/templates/resources-pvc.yaml +23 -0
  12. data/chart/archsight/templates/service.yaml +15 -0
  13. data/chart/archsight/templates/serviceaccount.yaml +12 -0
  14. data/chart/archsight/values.yaml +162 -0
  15. data/docs/architecture.md +39 -0
  16. data/docs/docker.md +49 -0
  17. data/{lib/archsight/web/doc → docs}/import.md +10 -2
  18. data/{lib/archsight/web/doc → docs}/index.md.erb +3 -1
  19. data/docs/kubernetes.md +149 -0
  20. data/docs/licenses.md +307 -0
  21. data/lib/archsight/analysis/executor.rb +0 -10
  22. data/lib/archsight/annotations/annotation.rb +85 -36
  23. data/lib/archsight/annotations/architecture_annotations.rb +1 -34
  24. data/lib/archsight/annotations/computed.rb +1 -1
  25. data/lib/archsight/annotations/generated_annotations.rb +6 -3
  26. data/lib/archsight/annotations/git_annotations.rb +8 -4
  27. data/lib/archsight/annotations/interface_annotations.rb +35 -0
  28. data/lib/archsight/cli.rb +4 -2
  29. data/lib/archsight/editor/content_hasher.rb +37 -0
  30. data/lib/archsight/editor/file_writer.rb +79 -0
  31. data/lib/archsight/editor.rb +237 -0
  32. data/lib/archsight/graph.rb +1 -51
  33. data/lib/archsight/helpers.rb +0 -20
  34. data/lib/archsight/import/handlers/github.rb +16 -6
  35. data/lib/archsight/import/handlers/gitlab.rb +28 -10
  36. data/lib/archsight/import/handlers/repository.rb +56 -6
  37. data/lib/archsight/import/handlers/rest_api.rb +13 -1
  38. data/lib/archsight/import/license_analyzer.rb +650 -0
  39. data/lib/archsight/import/team_matcher.rb +111 -61
  40. data/lib/archsight/linter.rb +1 -1
  41. data/lib/archsight/mcp/base.rb +11 -0
  42. data/lib/archsight/mcp/execute_analysis_tool.rb +100 -0
  43. data/lib/archsight/mcp.rb +1 -0
  44. data/lib/archsight/renderer.rb +4 -4
  45. data/lib/archsight/resources/analysis.rb +1 -17
  46. data/lib/archsight/resources/application_interface.rb +1 -5
  47. data/lib/archsight/resources/base.rb +14 -14
  48. data/lib/archsight/resources/business_actor.rb +18 -3
  49. data/lib/archsight/resources/technology_artifact.rb +48 -0
  50. data/lib/archsight/resources/technology_interface.rb +1 -1
  51. data/lib/archsight/resources/technology_service.rb +5 -0
  52. data/lib/archsight/version.rb +1 -1
  53. data/lib/archsight/web/api/docs.rb +37 -2
  54. data/lib/archsight/web/api/json_helpers.rb +79 -13
  55. data/lib/archsight/web/api/openapi/spec.yaml +699 -0
  56. data/lib/archsight/web/api/routes.rb +23 -0
  57. data/lib/archsight/web/application.rb +48 -128
  58. data/lib/archsight/web/editor/form_builder.rb +100 -0
  59. data/lib/archsight/web/editor/helpers.rb +150 -0
  60. data/lib/archsight/web/editor/routes.rb +166 -0
  61. data/lib/archsight/web/public/vue/ApiDocsPage-B1RqTNqh.js +1 -0
  62. data/lib/archsight/web/public/vue/ApiDocsPage-DhNTOH4o.css +1 -0
  63. data/lib/archsight/web/public/vue/DocPage-DzwBgBd4.js +1 -0
  64. data/lib/archsight/web/public/vue/EditorPage-D_miHSv4.js +34 -0
  65. data/lib/archsight/web/public/vue/EditorPage-Dq0MuTnp.css +1 -0
  66. data/lib/archsight/web/public/vue/ErrorPage-CQQtPey3.js +2 -0
  67. data/lib/archsight/web/public/vue/ErrorPage-CwPT3JUr.css +1 -0
  68. data/lib/archsight/web/public/vue/GraphView-DRcIqAiR.css +1 -0
  69. data/lib/archsight/web/public/vue/GraphView-T9jFH_qg.js +1 -0
  70. data/lib/archsight/web/public/vue/InstanceRouter-1Sm-CRhf.js +2 -0
  71. data/lib/archsight/web/public/vue/InstanceRouter-BJkDRXZY.css +1 -0
  72. data/lib/archsight/web/public/vue/KindList-JA_L_-Cz.js +1 -0
  73. data/lib/archsight/web/public/vue/ResourceList-8iqavWdg.js +1 -0
  74. data/lib/archsight/web/public/vue/ResourceList-DP-z-j71.css +1 -0
  75. data/lib/archsight/web/public/vue/SearchResults-BGHbg48-.css +1 -0
  76. data/lib/archsight/web/public/vue/SearchResults-BdgFeHcm.js +1 -0
  77. data/lib/archsight/web/public/vue/_basePickBy-CVgieyx-.js +1 -0
  78. data/lib/archsight/web/public/vue/_baseUniq-BNfrOSaP.js +1 -0
  79. data/lib/archsight/web/public/vue/architectureDiagram-VXUJARFQ-CJXNpTr5.js +36 -0
  80. data/lib/archsight/web/public/vue/blockDiagram-VD42YOAC-B5488Hes.js +122 -0
  81. data/lib/archsight/web/public/vue/c4Diagram-YG6GDRKO-eYY3hprM.js +10 -0
  82. data/lib/archsight/web/public/vue/chunk-4BX2VUAB-ZoXeL4D1.js +1 -0
  83. data/lib/archsight/web/public/vue/chunk-55IACEB6-rNtQYnu_.js +1 -0
  84. data/lib/archsight/web/public/vue/chunk-B4BG7PRW-DolAeVV9.js +165 -0
  85. data/lib/archsight/web/public/vue/chunk-DI55MBZ5-DnN0f_hj.js +220 -0
  86. data/lib/archsight/web/public/vue/chunk-FMBD7UC4-BQWOCMuR.js +15 -0
  87. data/lib/archsight/web/public/vue/chunk-QN33PNHL-DId301Kb.js +1 -0
  88. data/lib/archsight/web/public/vue/chunk-QZHKN3VN-xbY0NLgv.js +1 -0
  89. data/lib/archsight/web/public/vue/chunk-TZMSLE5B-CgF9_37b.js +1 -0
  90. data/lib/archsight/web/public/vue/classDiagram-2ON5EDUG-jGlvI-Za.js +1 -0
  91. data/lib/archsight/web/public/vue/classDiagram-v2-WZHVMYZB-jGlvI-Za.js +1 -0
  92. data/lib/archsight/web/public/vue/clone-6iRPe1-W.js +1 -0
  93. data/lib/archsight/web/public/vue/cose-bilkent-S5V4N54A-CB9Zfu50.js +1 -0
  94. data/lib/archsight/web/public/vue/cytoscape.esm-5J0xJHOV.js +321 -0
  95. data/lib/archsight/web/public/vue/dagre-6UL2VRFP-BqkmE-LI.js +4 -0
  96. data/lib/archsight/web/public/vue/diagram-PSM6KHXK-CKBfqtw3.js +24 -0
  97. data/lib/archsight/web/public/vue/diagram-QEK2KX5R-B78rOlvK.js +43 -0
  98. data/lib/archsight/web/public/vue/diagram-S2PKOQOG-BlXC6Cia.js +24 -0
  99. data/lib/archsight/web/public/vue/erDiagram-Q2GNP2WA-BnliyziJ.js +60 -0
  100. data/lib/archsight/web/public/vue/flowDiagram-NV44I4VS-wuqPowTd.js +162 -0
  101. data/lib/archsight/web/public/vue/ganttDiagram-JELNMOA3-GSffAIH3.js +267 -0
  102. data/lib/archsight/web/public/vue/gitGraphDiagram-V2S2FVAM-OA7VyugW.js +65 -0
  103. data/lib/archsight/web/public/vue/graph-BXHAtA0S.js +1 -0
  104. data/lib/archsight/web/public/vue/graphviz-CJms5bxZ.js +13 -0
  105. data/lib/archsight/web/public/vue/index-DsEsN0_K.js +2 -0
  106. data/lib/archsight/web/public/vue/index-Tiu4C-Sb.css +1 -0
  107. data/lib/archsight/web/public/vue/infoDiagram-HS3SLOUP-nlVe2qgv.js +2 -0
  108. data/lib/archsight/web/public/vue/journeyDiagram-XKPGCS4Q-CtTIcKwf.js +139 -0
  109. data/lib/archsight/web/public/vue/kanban-definition-3W4ZIXB7-837KX0sW.js +89 -0
  110. data/lib/archsight/web/public/vue/katex-C-M49wc6.js +261 -0
  111. data/lib/archsight/web/public/vue/layout-DtE0QdL6.js +1 -0
  112. data/lib/archsight/web/public/vue/mermaid-DpPHPFQh.js +250 -0
  113. data/lib/archsight/web/public/vue/mindmap-definition-VGOIOE7T-9gLF2AoY.js +68 -0
  114. data/lib/archsight/web/public/vue/pieDiagram-ADFJNKIX-CyCNgw3u.js +30 -0
  115. data/lib/archsight/web/public/vue/quadrantDiagram-AYHSOK5B-CkPh8g02.js +7 -0
  116. data/lib/archsight/web/public/vue/requirementDiagram-UZGBJVZJ-Dkt6OSlY.js +64 -0
  117. data/lib/archsight/web/public/vue/sankeyDiagram-TZEHDZUN-BqprTk8x.js +10 -0
  118. data/lib/archsight/web/public/vue/sequenceDiagram-WL72ISMW-CTmTe1FQ.js +145 -0
  119. data/lib/archsight/web/public/vue/stateDiagram-FKZM4ZOC-CphqmkEU.js +1 -0
  120. data/lib/archsight/web/public/vue/stateDiagram-v2-4FDKWEC3-CxaDW5sW.js +1 -0
  121. data/lib/archsight/web/public/vue/timeline-definition-IT6M3QCI-CSQUZkyE.js +61 -0
  122. data/lib/archsight/web/public/vue/treemap-GDKQZRPO-DTojm7Yr.js +162 -0
  123. data/lib/archsight/web/public/{css/graph.css → vue/useGraphviz-A5s4h76R.js} +2 -1
  124. data/lib/archsight/web/public/vue/useHighlight-C6Kb5G3l.js +10 -0
  125. data/lib/archsight/web/public/vue/useMermaid-DqxTrLRB.js +1 -0
  126. data/lib/archsight/web/public/vue/usePanZoom-BybZ_rfh.js +11 -0
  127. data/lib/archsight/web/public/vue/xychartDiagram-PRI3JC2R-B1ZJZtDC.js +7 -0
  128. data/lib/archsight/web/public/vue.html +15 -0
  129. data/media/artifact.jpg +0 -0
  130. data/media/service.jpg +0 -0
  131. metadata +104 -77
  132. data/lib/archsight/web/public/css/artifact.css +0 -995
  133. data/lib/archsight/web/public/css/base.css +0 -201
  134. data/lib/archsight/web/public/css/highlight.min.css +0 -10
  135. data/lib/archsight/web/public/css/iconoir.css +0 -22
  136. data/lib/archsight/web/public/css/instance.css +0 -818
  137. data/lib/archsight/web/public/css/layout.css +0 -421
  138. data/lib/archsight/web/public/css/mermaid-layers.css +0 -188
  139. data/lib/archsight/web/public/css/pico.min.css +0 -4
  140. data/lib/archsight/web/public/img/archimate.png +0 -0
  141. data/lib/archsight/web/public/img/togaf-high-level.png +0 -0
  142. data/lib/archsight/web/public/js/graph-zoom.js +0 -18
  143. data/lib/archsight/web/public/js/highlight.min.js +0 -3899
  144. data/lib/archsight/web/public/js/htmx.min.js +0 -1
  145. data/lib/archsight/web/public/js/mermaid-init.js +0 -88
  146. data/lib/archsight/web/public/js/mermaid.min.js +0 -2811
  147. data/lib/archsight/web/public/js/sparkline.js +0 -42
  148. data/lib/archsight/web/public/js/svg-pan-zoom.min.js +0 -3
  149. data/lib/archsight/web/public/js/svg-zoom-controls.js +0 -93
  150. data/lib/archsight/web/views/api_docs.erb +0 -19
  151. data/lib/archsight/web/views/index.haml +0 -12
  152. data/lib/archsight/web/views/partials/artifact/_activity.haml +0 -55
  153. data/lib/archsight/web/views/partials/artifact/_agentic.haml +0 -25
  154. data/lib/archsight/web/views/partials/artifact/_deployment.haml +0 -29
  155. data/lib/archsight/web/views/partials/artifact/_git_info.haml +0 -16
  156. data/lib/archsight/web/views/partials/artifact/_language_stats.haml +0 -53
  157. data/lib/archsight/web/views/partials/artifact/_links.haml +0 -24
  158. data/lib/archsight/web/views/partials/artifact/_project_estimate.haml +0 -32
  159. data/lib/archsight/web/views/partials/artifact/_repositories.haml +0 -55
  160. data/lib/archsight/web/views/partials/artifact/_team.haml +0 -83
  161. data/lib/archsight/web/views/partials/artifact/_workflow.haml +0 -69
  162. data/lib/archsight/web/views/partials/components/_activity.haml +0 -37
  163. data/lib/archsight/web/views/partials/components/_git.haml +0 -17
  164. data/lib/archsight/web/views/partials/components/_jira.haml +0 -18
  165. data/lib/archsight/web/views/partials/components/_languages.haml +0 -29
  166. data/lib/archsight/web/views/partials/components/_owner.haml +0 -15
  167. data/lib/archsight/web/views/partials/components/_repositories.haml +0 -37
  168. data/lib/archsight/web/views/partials/components/_status.haml +0 -23
  169. data/lib/archsight/web/views/partials/instance/_analysis_detail.haml +0 -74
  170. data/lib/archsight/web/views/partials/instance/_analysis_result.haml +0 -64
  171. data/lib/archsight/web/views/partials/instance/_detail.haml +0 -103
  172. data/lib/archsight/web/views/partials/instance/_graph.haml +0 -6
  173. data/lib/archsight/web/views/partials/instance/_import_detail.haml +0 -87
  174. data/lib/archsight/web/views/partials/instance/_list.haml +0 -84
  175. data/lib/archsight/web/views/partials/instance/_relations.haml +0 -43
  176. data/lib/archsight/web/views/partials/instance/_requirements.haml +0 -41
  177. data/lib/archsight/web/views/partials/instance/_view_detail.haml +0 -57
  178. data/lib/archsight/web/views/partials/layout/_content.haml +0 -44
  179. data/lib/archsight/web/views/partials/layout/_error.haml +0 -22
  180. data/lib/archsight/web/views/partials/layout/_head.haml +0 -24
  181. data/lib/archsight/web/views/partials/layout/_navigation.haml +0 -21
  182. data/lib/archsight/web/views/partials/layout/_sidebar.haml +0 -27
  183. data/lib/archsight/web/views/search.haml +0 -53
  184. /data/{lib/archsight/web/doc → docs}/archimate.md +0 -0
  185. /data/{lib/archsight/web/doc → docs}/computed_annotations.md +0 -0
  186. /data/{lib/archsight/web/doc → docs}/icons.md +0 -0
  187. /data/{lib/archsight/web/doc → docs}/modeling.md +0 -0
  188. /data/{lib/archsight/web/doc → docs}/search.md +0 -0
  189. /data/{lib/archsight/web/doc → docs}/togaf.md +0 -0
  190. /data/{lib/archsight/web/doc → docs}/tool.md +0 -0
@@ -0,0 +1,162 @@
1
+ replicaCount: 1
2
+
3
+ image:
4
+ repository: ghcr.io/ionos-cloud/archsight
5
+ pullPolicy: IfNotPresent
6
+ # Overrides the image tag whose default is the chart appVersion.
7
+ tag: ""
8
+
9
+ imagePullSecrets: []
10
+ nameOverride: ""
11
+ fullnameOverride: ""
12
+
13
+ serviceAccount:
14
+ # Specifies whether a service account should be created
15
+ create: true
16
+ # Annotations to add to the service account
17
+ annotations: {}
18
+ # The name of the service account to use.
19
+ # If not set and create is true, a name is generated using the fullname template
20
+ name: ""
21
+
22
+ podAnnotations: {}
23
+
24
+ podSecurityContext: {}
25
+ # fsGroup: 2000
26
+
27
+ securityContext: {}
28
+ # capabilities:
29
+ # drop:
30
+ # - ALL
31
+ # readOnlyRootFilesystem: true
32
+ # runAsNonRoot: true
33
+ # runAsUser: 1000
34
+
35
+ service:
36
+ type: ClusterIP
37
+ port: 80
38
+ targetPort: 4567
39
+
40
+ ingress:
41
+ enabled: false
42
+ className: ""
43
+ annotations: {}
44
+ # kubernetes.io/ingress.class: nginx
45
+ # kubernetes.io/tls-acme: "true"
46
+ hosts:
47
+ - host: chart-example.local
48
+ paths:
49
+ - path: /
50
+ pathType: ImplementationSpecific
51
+ tls: []
52
+ # - secretName: chart-example-tls
53
+ # hosts:
54
+ # - chart-example.local
55
+
56
+ resources: {}
57
+ # limits:
58
+ # cpu: 100m
59
+ # memory: 128Mi
60
+ # requests:
61
+ # cpu: 100m
62
+ # memory: 128Mi
63
+
64
+ autoscaling:
65
+ enabled: false
66
+ minReplicas: 1
67
+ maxReplicas: 100
68
+ targetCPUUtilizationPercentage: 80
69
+ # targetMemoryUtilizationPercentage: 80
70
+
71
+ nodeSelector: {}
72
+
73
+ tolerations: []
74
+
75
+ affinity: {}
76
+
77
+ # Application specific configuration
78
+ app:
79
+ resourcesDir: /resources
80
+ env: production
81
+
82
+ # Strategy for populating the /resources directory
83
+ # Options are "emptyDir", "configMap", "persistence" (PVC), or usage of "extraVolumes"
84
+ content:
85
+ # type: "emptyDir" | "configMap" | "persistence" | "custom"
86
+ # - emptyDir: Simple, ephemeral. Good if using initContainers to fetch data.
87
+ # - configMap: Mounts a ConfigMap. Good for small, static datasets.
88
+ # - persistence: Mounts a PersistentVolumeClaim. Good for large datasets.
89
+ # - custom: Do not create the main volume automatically; rely on extraVolumes/extraVolumeMounts.
90
+ type: emptyDir
91
+
92
+ configMap:
93
+ # If true, creating a ConfigMap from the `data` below.
94
+ create: false
95
+ # Name of the ConfigMap to mount (if create: false) or create (if create: true)
96
+ # If create: true and name is empty, fullname + "-resources" is used.
97
+ name: ""
98
+ # Data to inject into the ConfigMap (filename: content)
99
+ data:
100
+ # sample.yaml: |
101
+ # apiVersion: architecture/v1alpha1
102
+ # kind: Analysis
103
+ # ...
104
+ {}
105
+
106
+ persistence:
107
+ enabled: false
108
+ # existingClaim: my-claim
109
+ storageClass: ""
110
+ accessModes:
111
+ - ReadWriteOnce
112
+ size: 1Gi
113
+ annotations: {}
114
+
115
+ # Add sidecars or initContainers (e.g., for git-sync)
116
+ initContainers: []
117
+ # Example: Fetching from a private repository using a specific Secret
118
+ # - name: git-sync
119
+ # image: alpine/git
120
+ # env:
121
+ # - name: GIT_TOKEN
122
+ # valueFrom:
123
+ # secretKeyRef:
124
+ # name: my-git-credentials
125
+ # key: token
126
+ # command: ["/bin/sh", "-c"]
127
+ # args:
128
+ # - "git clone https://oauth2:$GIT_TOKEN@github.com/my-org/my-private-repo.git /resources"
129
+ # volumeMounts:
130
+ # - name: resources
131
+ # mountPath: /resources
132
+
133
+ sidecars: []
134
+ # Example: Periodically update resources from a private repository
135
+ # - name: git-sync-private
136
+ # image: alpine/git
137
+ # env:
138
+ # - name: GIT_TOKEN
139
+ # valueFrom:
140
+ # secretKeyRef:
141
+ # name: my-git-credentials
142
+ # key: token
143
+ # command: ["/bin/sh", "-c"]
144
+ # args:
145
+ # - |
146
+ # cd /resources
147
+ # # Ensure the remote uses the current token
148
+ # git remote set-url origin "https://oauth2:${GIT_TOKEN}@github.com/my-org/my-private-repo.git"
149
+ # while true; do
150
+ # git pull
151
+ # sleep 60
152
+ # done
153
+ # volumeMounts:
154
+ # - name: resources
155
+ # mountPath: /resources
156
+
157
+ # Custom volumes and mounts if you need more control
158
+ extraVolumes: []
159
+ extraVolumeMounts: []
160
+
161
+ # Command arguments (passed to ENTRYPOINT ["archsight"])
162
+ args: ["web", "--port", "4567", "-H", "0.0.0.0", "--production"]
@@ -0,0 +1,39 @@
1
+ # Architecture
2
+
3
+ ## Technology Stack
4
+
5
+ - **Backend**: Sinatra (REST API)
6
+ - **Frontend**: Vue 3 + Vue Router 4
7
+ - **Build Tool**: Vite
8
+ - **Styling**: Pico CSS v2.x
9
+ - **Icons**: Iconoir
10
+ - **Visualization**: GraphViz (@hpcc-js/wasm, client-side)
11
+ - **Editor**: Lexical
12
+
13
+ ## Directory Structure
14
+
15
+ ```text
16
+ archsight/
17
+ ├── exe/archsight # CLI executable
18
+ ├── frontend/ # Vue 3 SPA
19
+ │ ├── src/
20
+ │ │ ├── components/ # Vue components (40+)
21
+ │ │ ├── composables/ # Reusable composables
22
+ │ │ ├── router/ # Vue Router config
23
+ │ │ └── css/ # Styles
24
+ │ └── vite.config.js # Vite build config
25
+ ├── lib/
26
+ │ ├── archsight.rb # Entry point
27
+ │ └── archsight/
28
+ │ ├── cli.rb # Thor CLI
29
+ │ ├── configuration.rb # Resources path config
30
+ │ ├── database.rb # YAML loader and validator
31
+ │ ├── query/ # Query language (lexer, parser, evaluator)
32
+ │ ├── resources/ # Resource types (20+)
33
+ │ ├── annotations/ # Annotation modules
34
+ │ ├── mcp/ # MCP server tools
35
+ │ └── web/ # Sinatra API + static file serving
36
+ │ └── doc/ # Documentation (markdown)
37
+ ├── docs/ # Project documentation
38
+ └── test/ # Test suite
39
+ ```
data/docs/docker.md ADDED
@@ -0,0 +1,49 @@
1
+ # Docker
2
+
3
+ Archsight is available as a Docker image from the GitHub Container Registry.
4
+
5
+ ## Image
6
+
7
+ ```
8
+ ghcr.io/ionos-cloud/archsight
9
+ ```
10
+
11
+ The image is based on `ruby:4.0-alpine3.23`, exposes port **4567**, and includes a healthcheck.
12
+
13
+ ## Quick Start
14
+
15
+ ```bash
16
+ # Run web server (default)
17
+ docker run -p 4567:4567 -v "/path/to/resources:/resources" ghcr.io/ionos-cloud/archsight
18
+
19
+ # Run in production mode with logging
20
+ docker run -p 4567:4567 -v "/path/to/resources:/resources" ghcr.io/ionos-cloud/archsight web --production
21
+
22
+ # Run lint
23
+ docker run -v "/path/to/resources:/resources" ghcr.io/ionos-cloud/archsight lint -r /resources
24
+
25
+ # Run any command
26
+ docker run ghcr.io/ionos-cloud/archsight version
27
+ ```
28
+
29
+ Access web interface at: <http://localhost:4567>
30
+
31
+ ## Notes
32
+
33
+ - Volume mount `-v "/path/to/resources:/resources"` mounts your resources directory
34
+ - Default command starts the web server on port 4567
35
+ - Pass subcommands directly (lint, version, console, template)
36
+
37
+ ## Environment Variables
38
+
39
+ | Variable | Description | Default |
40
+ |----------|-------------|---------|
41
+ | `ARCHSIGHT_RESOURCES_DIR` | Path to resources directory inside the container | `/resources` |
42
+ | `APP_ENV` | Application environment | `production` |
43
+
44
+ ## Building Locally
45
+
46
+ ```bash
47
+ docker build -t archsight .
48
+ docker run -p 4567:4567 -v "/path/to/resources:/resources" archsight
49
+ ```
@@ -104,8 +104,9 @@ Lists repositories from a GitLab instance and generates child Import resources.
104
104
  - `host` - GitLab host (required)
105
105
  - `exploreGroups` - If "true", explore all visible groups (default: false)
106
106
  - `repoOutputPath` - Output path for repository handler results
107
- - `fallbackTeam` - Default team when no contributor match found
108
- - `botTeam` - Team for bot-only repositories
107
+ - `fallbackTeam` - Default team when no contributor match found (propagated to child imports)
108
+ - `botTeam` - Team for bot-only repositories (propagated to child imports)
109
+ - `corporateAffixes` - Comma-separated corporate username affixes for team matching, e.g., "ionos,1and1" (propagated to child imports)
109
110
 
110
111
  **Environment:**
111
112
  - `GITLAB_TOKEN` - Personal access token (required)
@@ -119,6 +120,9 @@ Lists repositories from a GitHub organization and generates child Import resourc
119
120
  **Configuration:**
120
121
  - `org` - GitHub organization (required)
121
122
  - `repoOutputPath` - Output path for repository handler results
123
+ - `fallbackTeam` - Default team when no contributor match found (propagated to child imports)
124
+ - `botTeam` - Team for bot-only repositories (propagated to child imports)
125
+ - `corporateAffixes` - Comma-separated corporate username affixes for team matching, e.g., "ionos,1and1" (propagated to child imports)
122
126
 
123
127
  **Environment:**
124
128
  - `GITHUB_TOKEN` - GitHub Personal Access Token (required)
@@ -140,6 +144,7 @@ Analyzes a single git repository and generates a TechnologyArtifact resource.
140
144
  - `sccPath` - Path to scc binary (default: scc)
141
145
  - `fallbackTeam` - Default team when no contributor match found
142
146
  - `botTeam` - Team for bot-only repositories
147
+ - `corporateAffixes` - Comma-separated corporate username affixes for team matching (e.g., "ionos,1and1"). Enables matching git usernames like `jsmith-ionos` or `ionos-jsmith` to team member "John Smith". Without this, corporate username pattern matching is inactive.
143
148
 
144
149
  **Output:** Generates one TechnologyArtifact resource with:
145
150
  - Code analysis metrics (languages, LOC, estimated cost)
@@ -287,6 +292,7 @@ metadata:
287
292
  import/config/host: gitlab.company.com
288
293
  import/config/repoOutputPath: generated/repositories.yaml
289
294
  import/config/fallbackTeam: "Team:Platform"
295
+ import/config/corporateAffixes: "ionos,1and1"
290
296
  spec: {}
291
297
  ```
292
298
 
@@ -305,6 +311,8 @@ metadata:
305
311
  import/config/gitUrl: git@gitlab.company.com:company/my-service.git
306
312
  import/config/archived: "false"
307
313
  import/config/visibility: internal
314
+ import/config/fallbackTeam: "Team:Platform"
315
+ import/config/corporateAffixes: "ionos,1and1"
308
316
  import/outputPath: generated/repositories.yaml
309
317
  spec: {}
310
318
  ---
@@ -7,7 +7,7 @@ Welcome to the Architecture Documentation System. This documentation covers how
7
7
  - [Tool Guide](/doc/tool) - How to use the architecture tool
8
8
  - [Query Syntax](/doc/search) - Search and filter resources
9
9
  - [Architecture Modeling](/doc/modeling) - How to model your architecture
10
- - [REST API Documentation](/api/docs) - JSON API for programmatic access
10
+ - [REST API Documentation](/docs/api) - JSON API for programmatic access
11
11
 
12
12
  ## Resource Model
13
13
 
@@ -73,3 +73,5 @@ Resources representing technology infrastructure and artifacts.
73
73
  - [TOGAF](/doc/togaf) - TOGAF framework reference
74
74
  - [Icons Reference](/doc/icons) - Available icons for resource types
75
75
  - [Computed Annotations](/doc/computed_annotations) - Available computed annotations
76
+ - [Import System](/doc/import) - Declarative data imports from external sources
77
+ - [License Scanning](/doc/licenses) - Repository license detection and dependency analysis
@@ -0,0 +1,149 @@
1
+ # Kubernetes (Helm)
2
+
3
+ A Helm chart for deploying [Archsight](https://github.com/ionos-cloud/archsight) on Kubernetes.
4
+
5
+ ## Prerequisites
6
+
7
+ - Kubernetes 1.19+
8
+ - Helm 3.2.0+
9
+
10
+ ## Installing the Chart
11
+
12
+ ### From OCI Registry (Recommended)
13
+
14
+ ```bash
15
+ helm install my-archsight oci://ghcr.io/ionos-cloud/archsight/charts/archsight
16
+ ```
17
+
18
+ ### From Local Source
19
+
20
+ ```bash
21
+ helm install my-archsight ./chart/archsight
22
+ ```
23
+
24
+ ## Configuration
25
+
26
+ The following table lists the configurable parameters of the Archsight chart and their default values.
27
+
28
+ | Parameter | Description | Default |
29
+ |-----------|-------------|---------|
30
+ | `image.repository` | Docker image repository | `archsight` |
31
+ | `image.tag` | Docker image tag | `""` (uses appVersion) |
32
+ | `service.type` | Kubernetes Service type | `ClusterIP` |
33
+ | `service.port` | Service port | `80` |
34
+ | `ingress.enabled` | Enable Ingress resource | `false` |
35
+ | `app.resourcesDir` | Directory where app looks for resources | `/resources` |
36
+
37
+ ### Resource Management Strategies
38
+
39
+ The most important configuration is how you provide your architecture YAML files to the application. This is controlled by the `content.type` parameter.
40
+
41
+ #### 1. ConfigMap (Simple / Static)
42
+ Best for small deployments where the architecture definitions rarely change or are small enough to fit in a ConfigMap (1MB limit).
43
+
44
+ ```yaml
45
+ content:
46
+ type: configMap
47
+ configMap:
48
+ create: true
49
+ data:
50
+ analysis.yaml: |
51
+ apiVersion: architecture/v1alpha1
52
+ kind: Analysis
53
+ metadata:
54
+ name: MyAnalysis
55
+ # ... content ...
56
+ ```
57
+
58
+ #### 2. Persistence (Manual Management)
59
+ Mounts a Persistent Volume. You are responsible for putting files into this volume (e.g., manually copying them or having another process write to it).
60
+
61
+ ```yaml
62
+ content:
63
+ type: persistence
64
+ persistence:
65
+ enabled: true
66
+ size: 1Gi
67
+ ```
68
+
69
+ #### 3. EmptyDir + Git Sync (GitOps / Recommended)
70
+ Uses an `emptyDir` volume that is shared between the main container and init containers. This allows you to fetch your architecture definitions from a Git repository at startup.
71
+
72
+ **Example values.yaml configuration (Public Repo):**
73
+
74
+ ```yaml
75
+ content:
76
+ type: emptyDir
77
+
78
+ initContainers:
79
+ - name: git-sync
80
+ image: alpine/git
81
+ # Clone your architecture repo into /resources
82
+ args: ["clone", "--depth", "1", "https://github.com/my-org/my-architecture.git", "/resources"]
83
+ volumeMounts:
84
+ - name: resources
85
+ mountPath: /resources
86
+ ```
87
+
88
+ **Example values.yaml configuration (Private Repo):**
89
+
90
+ To use a private repository, create a Kubernetes Secret containing your git token (e.g., `git-credentials` with key `token`) and reference it:
91
+
92
+ ```yaml
93
+ content:
94
+ type: emptyDir
95
+
96
+ initContainers:
97
+ - name: git-sync
98
+ image: alpine/git
99
+ env:
100
+ - name: GIT_TOKEN
101
+ valueFrom:
102
+ secretKeyRef:
103
+ name: git-credentials
104
+ key: token
105
+ command: ["/bin/sh", "-c"]
106
+ # Use the env var in the URL so the token is not exposed in the pod spec
107
+ args:
108
+ - "git clone https://oauth2:$GIT_TOKEN@github.com/my-org/my-private-repo.git /resources"
109
+ volumeMounts:
110
+ - name: resources
111
+ mountPath: /resources
112
+ ```
113
+
114
+ ### Sidecars (Auto-Refresh)
115
+
116
+ If you want your application to update dynamically when the git repository changes (without restarting the pod), you can add a sidecar container that periodically pulls changes.
117
+
118
+ **Example (Private Repo with 60s Refresh Loop):**
119
+
120
+ ```yaml
121
+ sidecars:
122
+ - name: git-refresher
123
+ image: alpine/git
124
+ env:
125
+ - name: GIT_TOKEN
126
+ valueFrom:
127
+ secretKeyRef:
128
+ name: git-credentials
129
+ key: token
130
+ command: ["/bin/sh", "-c"]
131
+ args:
132
+ - |
133
+ cd /resources
134
+ # Set the remote URL with the token to ensure authentication
135
+ git remote set-url origin "https://oauth2:${GIT_TOKEN}@github.com/my-org/my-private-repo.git"
136
+ while true; do
137
+ git pull
138
+ sleep 60
139
+ done
140
+ volumeMounts:
141
+ - name: resources
142
+ mountPath: /resources
143
+ ```
144
+
145
+ ## Uninstalling the Chart
146
+
147
+ ```bash
148
+ helm delete my-archsight
149
+ ```