archsight 0.1.5 → 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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +5 -4
  3. data/README.md +17 -65
  4. data/chart/archsight/README.md +1 -158
  5. data/docs/architecture.md +39 -0
  6. data/docs/docker.md +49 -0
  7. data/{lib/archsight/web/doc → docs}/index.md.erb +3 -1
  8. data/docs/kubernetes.md +149 -0
  9. data/docs/licenses.md +307 -0
  10. data/lib/archsight/cli.rb +1 -1
  11. data/lib/archsight/graph.rb +1 -51
  12. data/lib/archsight/helpers.rb +0 -20
  13. data/lib/archsight/import/handlers/github.rb +3 -1
  14. data/lib/archsight/import/handlers/gitlab.rb +15 -5
  15. data/lib/archsight/import/handlers/repository.rb +53 -5
  16. data/lib/archsight/import/handlers/rest_api.rb +13 -1
  17. data/lib/archsight/import/license_analyzer.rb +650 -0
  18. data/lib/archsight/linter.rb +1 -1
  19. data/lib/archsight/mcp/base.rb +11 -0
  20. data/lib/archsight/renderer.rb +4 -4
  21. data/lib/archsight/resources/business_actor.rb +17 -2
  22. data/lib/archsight/resources/technology_artifact.rb +48 -0
  23. data/lib/archsight/version.rb +1 -1
  24. data/lib/archsight/web/api/docs.rb +37 -2
  25. data/lib/archsight/web/api/json_helpers.rb +79 -13
  26. data/lib/archsight/web/api/openapi/spec.yaml +699 -0
  27. data/lib/archsight/web/api/routes.rb +23 -0
  28. data/lib/archsight/web/application.rb +40 -128
  29. data/lib/archsight/web/editor/helpers.rb +150 -0
  30. data/lib/archsight/web/editor/routes.rb +85 -212
  31. data/lib/archsight/web/public/vue/ApiDocsPage-B1RqTNqh.js +1 -0
  32. data/lib/archsight/web/public/vue/ApiDocsPage-DhNTOH4o.css +1 -0
  33. data/lib/archsight/web/public/vue/DocPage-DzwBgBd4.js +1 -0
  34. data/lib/archsight/web/public/vue/EditorPage-D_miHSv4.js +34 -0
  35. data/lib/archsight/web/public/vue/EditorPage-Dq0MuTnp.css +1 -0
  36. data/lib/archsight/web/public/vue/ErrorPage-CQQtPey3.js +2 -0
  37. data/lib/archsight/web/public/vue/ErrorPage-CwPT3JUr.css +1 -0
  38. data/lib/archsight/web/public/vue/GraphView-DRcIqAiR.css +1 -0
  39. data/lib/archsight/web/public/vue/GraphView-T9jFH_qg.js +1 -0
  40. data/lib/archsight/web/public/vue/InstanceRouter-1Sm-CRhf.js +2 -0
  41. data/lib/archsight/web/public/vue/InstanceRouter-BJkDRXZY.css +1 -0
  42. data/lib/archsight/web/public/vue/KindList-JA_L_-Cz.js +1 -0
  43. data/lib/archsight/web/public/vue/ResourceList-8iqavWdg.js +1 -0
  44. data/lib/archsight/web/public/vue/ResourceList-DP-z-j71.css +1 -0
  45. data/lib/archsight/web/public/vue/SearchResults-BGHbg48-.css +1 -0
  46. data/lib/archsight/web/public/vue/SearchResults-BdgFeHcm.js +1 -0
  47. data/lib/archsight/web/public/vue/_basePickBy-CVgieyx-.js +1 -0
  48. data/lib/archsight/web/public/vue/_baseUniq-BNfrOSaP.js +1 -0
  49. data/lib/archsight/web/public/vue/architectureDiagram-VXUJARFQ-CJXNpTr5.js +36 -0
  50. data/lib/archsight/web/public/vue/blockDiagram-VD42YOAC-B5488Hes.js +122 -0
  51. data/lib/archsight/web/public/vue/c4Diagram-YG6GDRKO-eYY3hprM.js +10 -0
  52. data/lib/archsight/web/public/vue/chunk-4BX2VUAB-ZoXeL4D1.js +1 -0
  53. data/lib/archsight/web/public/vue/chunk-55IACEB6-rNtQYnu_.js +1 -0
  54. data/lib/archsight/web/public/vue/chunk-B4BG7PRW-DolAeVV9.js +165 -0
  55. data/lib/archsight/web/public/vue/chunk-DI55MBZ5-DnN0f_hj.js +220 -0
  56. data/lib/archsight/web/public/vue/chunk-FMBD7UC4-BQWOCMuR.js +15 -0
  57. data/lib/archsight/web/public/vue/chunk-QN33PNHL-DId301Kb.js +1 -0
  58. data/lib/archsight/web/public/vue/chunk-QZHKN3VN-xbY0NLgv.js +1 -0
  59. data/lib/archsight/web/public/vue/chunk-TZMSLE5B-CgF9_37b.js +1 -0
  60. data/lib/archsight/web/public/vue/classDiagram-2ON5EDUG-jGlvI-Za.js +1 -0
  61. data/lib/archsight/web/public/vue/classDiagram-v2-WZHVMYZB-jGlvI-Za.js +1 -0
  62. data/lib/archsight/web/public/vue/clone-6iRPe1-W.js +1 -0
  63. data/lib/archsight/web/public/vue/cose-bilkent-S5V4N54A-CB9Zfu50.js +1 -0
  64. data/lib/archsight/web/public/vue/cytoscape.esm-5J0xJHOV.js +321 -0
  65. data/lib/archsight/web/public/vue/dagre-6UL2VRFP-BqkmE-LI.js +4 -0
  66. data/lib/archsight/web/public/vue/diagram-PSM6KHXK-CKBfqtw3.js +24 -0
  67. data/lib/archsight/web/public/vue/diagram-QEK2KX5R-B78rOlvK.js +43 -0
  68. data/lib/archsight/web/public/vue/diagram-S2PKOQOG-BlXC6Cia.js +24 -0
  69. data/lib/archsight/web/public/vue/erDiagram-Q2GNP2WA-BnliyziJ.js +60 -0
  70. data/lib/archsight/web/public/vue/flowDiagram-NV44I4VS-wuqPowTd.js +162 -0
  71. data/lib/archsight/web/public/vue/ganttDiagram-JELNMOA3-GSffAIH3.js +267 -0
  72. data/lib/archsight/web/public/vue/gitGraphDiagram-V2S2FVAM-OA7VyugW.js +65 -0
  73. data/lib/archsight/web/public/vue/graph-BXHAtA0S.js +1 -0
  74. data/lib/archsight/web/public/vue/graphviz-CJms5bxZ.js +13 -0
  75. data/lib/archsight/web/public/vue/index-DsEsN0_K.js +2 -0
  76. data/lib/archsight/web/public/vue/index-Tiu4C-Sb.css +1 -0
  77. data/lib/archsight/web/public/vue/infoDiagram-HS3SLOUP-nlVe2qgv.js +2 -0
  78. data/lib/archsight/web/public/vue/journeyDiagram-XKPGCS4Q-CtTIcKwf.js +139 -0
  79. data/lib/archsight/web/public/vue/kanban-definition-3W4ZIXB7-837KX0sW.js +89 -0
  80. data/lib/archsight/web/public/vue/katex-C-M49wc6.js +261 -0
  81. data/lib/archsight/web/public/vue/layout-DtE0QdL6.js +1 -0
  82. data/lib/archsight/web/public/vue/mermaid-DpPHPFQh.js +250 -0
  83. data/lib/archsight/web/public/vue/mindmap-definition-VGOIOE7T-9gLF2AoY.js +68 -0
  84. data/lib/archsight/web/public/vue/pieDiagram-ADFJNKIX-CyCNgw3u.js +30 -0
  85. data/lib/archsight/web/public/vue/quadrantDiagram-AYHSOK5B-CkPh8g02.js +7 -0
  86. data/lib/archsight/web/public/vue/requirementDiagram-UZGBJVZJ-Dkt6OSlY.js +64 -0
  87. data/lib/archsight/web/public/vue/sankeyDiagram-TZEHDZUN-BqprTk8x.js +10 -0
  88. data/lib/archsight/web/public/vue/sequenceDiagram-WL72ISMW-CTmTe1FQ.js +145 -0
  89. data/lib/archsight/web/public/vue/stateDiagram-FKZM4ZOC-CphqmkEU.js +1 -0
  90. data/lib/archsight/web/public/vue/stateDiagram-v2-4FDKWEC3-CxaDW5sW.js +1 -0
  91. data/lib/archsight/web/public/vue/timeline-definition-IT6M3QCI-CSQUZkyE.js +61 -0
  92. data/lib/archsight/web/public/vue/treemap-GDKQZRPO-DTojm7Yr.js +162 -0
  93. data/lib/archsight/web/public/{css/graph.css → vue/useGraphviz-A5s4h76R.js} +2 -1
  94. data/lib/archsight/web/public/vue/useHighlight-C6Kb5G3l.js +10 -0
  95. data/lib/archsight/web/public/vue/useMermaid-DqxTrLRB.js +1 -0
  96. data/lib/archsight/web/public/vue/usePanZoom-BybZ_rfh.js +11 -0
  97. data/lib/archsight/web/public/vue/xychartDiagram-PRI3JC2R-B1ZJZtDC.js +7 -0
  98. data/lib/archsight/web/public/vue.html +15 -0
  99. data/media/artifact.jpg +0 -0
  100. data/media/service.jpg +0 -0
  101. metadata +86 -84
  102. data/lib/archsight/web/public/css/artifact.css +0 -995
  103. data/lib/archsight/web/public/css/base.css +0 -201
  104. data/lib/archsight/web/public/css/editor.css +0 -863
  105. data/lib/archsight/web/public/css/highlight.min.css +0 -10
  106. data/lib/archsight/web/public/css/iconoir.css +0 -22
  107. data/lib/archsight/web/public/css/instance.css +0 -824
  108. data/lib/archsight/web/public/css/layout.css +0 -421
  109. data/lib/archsight/web/public/css/mermaid-layers.css +0 -188
  110. data/lib/archsight/web/public/css/pico.min.css +0 -4
  111. data/lib/archsight/web/public/img/archimate.png +0 -0
  112. data/lib/archsight/web/public/img/togaf-high-level.png +0 -0
  113. data/lib/archsight/web/public/js/editor.js +0 -421
  114. data/lib/archsight/web/public/js/graph-zoom.js +0 -18
  115. data/lib/archsight/web/public/js/highlight.min.js +0 -3899
  116. data/lib/archsight/web/public/js/htmx.min.js +0 -1
  117. data/lib/archsight/web/public/js/lexical-editor.js +0 -308
  118. data/lib/archsight/web/public/js/mermaid-init.js +0 -88
  119. data/lib/archsight/web/public/js/mermaid.min.js +0 -2811
  120. data/lib/archsight/web/public/js/sparkline.js +0 -42
  121. data/lib/archsight/web/public/js/svg-pan-zoom.min.js +0 -3
  122. data/lib/archsight/web/public/js/svg-zoom-controls.js +0 -93
  123. data/lib/archsight/web/views/api_docs.erb +0 -19
  124. data/lib/archsight/web/views/index.haml +0 -12
  125. data/lib/archsight/web/views/partials/artifact/_activity.haml +0 -55
  126. data/lib/archsight/web/views/partials/artifact/_agentic.haml +0 -25
  127. data/lib/archsight/web/views/partials/artifact/_deployment.haml +0 -29
  128. data/lib/archsight/web/views/partials/artifact/_git_info.haml +0 -16
  129. data/lib/archsight/web/views/partials/artifact/_language_stats.haml +0 -53
  130. data/lib/archsight/web/views/partials/artifact/_links.haml +0 -24
  131. data/lib/archsight/web/views/partials/artifact/_project_estimate.haml +0 -32
  132. data/lib/archsight/web/views/partials/artifact/_repositories.haml +0 -55
  133. data/lib/archsight/web/views/partials/artifact/_team.haml +0 -83
  134. data/lib/archsight/web/views/partials/artifact/_workflow.haml +0 -69
  135. data/lib/archsight/web/views/partials/components/_activity.haml +0 -37
  136. data/lib/archsight/web/views/partials/components/_git.haml +0 -17
  137. data/lib/archsight/web/views/partials/components/_jira.haml +0 -18
  138. data/lib/archsight/web/views/partials/components/_languages.haml +0 -29
  139. data/lib/archsight/web/views/partials/components/_owner.haml +0 -15
  140. data/lib/archsight/web/views/partials/components/_repositories.haml +0 -37
  141. data/lib/archsight/web/views/partials/components/_status.haml +0 -23
  142. data/lib/archsight/web/views/partials/editor/_field.haml +0 -80
  143. data/lib/archsight/web/views/partials/editor/_form.haml +0 -131
  144. data/lib/archsight/web/views/partials/editor/_relations.haml +0 -39
  145. data/lib/archsight/web/views/partials/editor/_yaml_output.haml +0 -33
  146. data/lib/archsight/web/views/partials/instance/_analysis_detail.haml +0 -67
  147. data/lib/archsight/web/views/partials/instance/_analysis_result.haml +0 -64
  148. data/lib/archsight/web/views/partials/instance/_detail.haml +0 -107
  149. data/lib/archsight/web/views/partials/instance/_graph.haml +0 -6
  150. data/lib/archsight/web/views/partials/instance/_import_detail.haml +0 -87
  151. data/lib/archsight/web/views/partials/instance/_list.haml +0 -84
  152. data/lib/archsight/web/views/partials/instance/_relations.haml +0 -43
  153. data/lib/archsight/web/views/partials/instance/_requirements.haml +0 -41
  154. data/lib/archsight/web/views/partials/instance/_view_detail.haml +0 -57
  155. data/lib/archsight/web/views/partials/layout/_content.haml +0 -50
  156. data/lib/archsight/web/views/partials/layout/_error.haml +0 -22
  157. data/lib/archsight/web/views/partials/layout/_head.haml +0 -26
  158. data/lib/archsight/web/views/partials/layout/_navigation.haml +0 -21
  159. data/lib/archsight/web/views/partials/layout/_sidebar.haml +0 -27
  160. data/lib/archsight/web/views/search.haml +0 -53
  161. /data/{lib/archsight/web/doc → docs}/archimate.md +0 -0
  162. /data/{lib/archsight/web/doc → docs}/computed_annotations.md +0 -0
  163. /data/{lib/archsight/web/doc → docs}/icons.md +0 -0
  164. /data/{lib/archsight/web/doc → docs}/import.md +0 -0
  165. /data/{lib/archsight/web/doc → docs}/modeling.md +0 -0
  166. /data/{lib/archsight/web/doc → docs}/search.md +0 -0
  167. /data/{lib/archsight/web/doc → docs}/togaf.md +0 -0
  168. /data/{lib/archsight/web/doc → docs}/tool.md +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 37f0d691fd1bdc0ce5b3a250c6bf0dc269b2586682ab1c46c25546cfa8d9c251
4
- data.tar.gz: 56069d4dbdc04607c00c51af729433f63792ffbca81e79d785d5a0d1cfe75b25
3
+ metadata.gz: 750620aa30b68f0a3cfa0f53be2d717ae0496b829e5ecc588a904b3bf39dbd10
4
+ data.tar.gz: 8ddf46b557c7830212d0e699149ce2b53b9476c7748fc90c82480f22be226047
5
5
  SHA512:
6
- metadata.gz: 4e1bc599625fc4ed0d7b16a9a9fd61d420faa4e58186e4ff6ebd6a15ca2ff05e44c1fa88164d45f45acfcd01d09d676d09bd90b57b31fcba30961d823212089e
7
- data.tar.gz: 820b19c2650828976882d746fffa9674ebd7da9c418dcb663096c3cfdaf366aeecd4cb11fcd241b14c400f5d80adf21243774b45de6c6a6137736e832591dda0
6
+ metadata.gz: 39b0cc9b3b321c1e2627197a8f2edb13bdb8fe78273e315b70c886d05d64da534769850f5991e70d6c38d549f7229988d3d2e03bbd075f01e9aad0b4b4aad802
7
+ data.tar.gz: 69c4784e97d7c2aa01bf1030109a621f1eacdf4d7fe131d2e7c56eb29b42524ed3a68c69f97003ef804a7e38cedf118dc186157a948e5c81479191927955fa94
data/Dockerfile CHANGED
@@ -1,11 +1,14 @@
1
1
  # Build stage
2
2
  FROM ruby:4.0-alpine3.23 AS builder
3
3
 
4
- RUN apk add --no-cache build-base git libffi-dev yaml-dev
4
+ RUN apk add --no-cache build-base git libffi-dev yaml-dev nodejs npm
5
5
 
6
6
  WORKDIR /app
7
7
  COPY . .
8
8
 
9
+ # Build frontend assets
10
+ RUN cd frontend && npm ci && npm run build
11
+
9
12
  # Build and install the gem
10
13
  RUN gem build archsight.gemspec && \
11
14
  gem install --no-document archsight-*.gem
@@ -13,8 +16,6 @@ RUN gem build archsight.gemspec && \
13
16
  # Runtime stage
14
17
  FROM ruby:4.0-alpine3.23
15
18
 
16
- RUN apk add --no-cache graphviz
17
-
18
19
  # Copy installed gems from builder (including default gems that were updated)
19
20
  COPY --from=builder /usr/local/bundle /usr/local/bundle
20
21
  COPY --from=builder /usr/local/lib/ruby/gems /usr/local/lib/ruby/gems
@@ -35,4 +36,4 @@ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
35
36
  CMD wget --no-verbose --tries=1 --spider http://localhost:4567/ || exit 1
36
37
 
37
38
  ENTRYPOINT ["archsight"]
38
- CMD ["web", "--port", "4567"]
39
+ CMD ["web", "--port", "4567", "--host", "0.0.0.0"]
data/README.md CHANGED
@@ -7,6 +7,10 @@
7
7
 
8
8
  Ruby gem for visualizing and managing enterprise architecture documentation using YAML resources with GraphViz visualization. Inspired by ArchiMate 3.2.
9
9
 
10
+ | Service view | Artifact view |
11
+ |:---:|:---:|
12
+ | ![Service detail with graph and relations](media/service.jpg) | ![Artifact detail with metadata](media/artifact.jpg) |
13
+
10
14
  ## Installation
11
15
 
12
16
  Add to your Gemfile:
@@ -21,16 +25,8 @@ Or install directly:
21
25
  gem install archsight
22
26
  ```
23
27
 
24
- ### Option 2: Helm (Kubernetes)
25
-
26
- ```bash
27
- helm install archsight oci://ghcr.io/ionos-cloud/archsight/charts/archsight
28
- ```
29
-
30
28
  ## Quick Start
31
29
 
32
- ### Option 1: CLI
33
-
34
30
  ```bash
35
31
  # Start web server (looks for resources in current directory)
36
32
  archsight web
@@ -44,29 +40,7 @@ ARCHSIGHT_RESOURCES_DIR=/path/to/resources archsight web
44
40
 
45
41
  Access at: <http://localhost:4567>
46
42
 
47
- ### Option 2: Docker
48
-
49
- ```bash
50
- # Run web server (default)
51
- docker run -p 4567:4567 -v "/path/to/resources:/resources" ghcr.io/ionos-cloud/archsight
52
-
53
- # Run in production mode with logging
54
- docker run -p 4567:4567 -v "/path/to/resources:/resources" ghcr.io/ionos-cloud/archsight web --production
55
-
56
- # Run lint
57
- docker run -v "/path/to/resources:/resources" ghcr.io/ionos-cloud/archsight lint -r /resources
58
-
59
- # Run any command
60
- docker run ghcr.io/ionos-cloud/archsight version
61
- ```
62
-
63
- Access web interface at: <http://localhost:4567>
64
-
65
- **Notes:**
66
-
67
- - Volume mount `-v "/path/to/resources:/resources"` mounts your resources directory
68
- - Default command starts the web server on port 4567
69
- - Pass subcommands directly (lint, version, console, template)
43
+ Also available as [Docker](docs/docker.md) image and [Helm chart](docs/kubernetes.md).
70
44
 
71
45
  ## CLI Commands
72
46
 
@@ -85,6 +59,7 @@ archsight version # Show version
85
59
  ```bash
86
60
  archsight web [--resources PATH] [--port PORT] [--host HOST]
87
61
  [--production] [--disable-reload] [--enable-logging]
62
+ [--inline-edit]
88
63
  ```
89
64
 
90
65
  | Option | Description |
@@ -95,6 +70,7 @@ archsight web [--resources PATH] [--port PORT] [--host HOST]
95
70
  | `--production` | Run in production mode (quiet startup) |
96
71
  | `--disable-reload` | Disable the reload button in the UI |
97
72
  | `--enable-logging` | Enable request logging (default: false in dev, true in prod) |
73
+ | `--inline-edit` | Enable inline editing to save directly to source files |
98
74
 
99
75
  ## Features
100
76
 
@@ -125,7 +101,7 @@ claude mcp add --transport sse ionos-architecture http://localhost:4567/mcp/sse
125
101
  **Browse & Search:**
126
102
 
127
103
  - Browse resources by type (Products, Services, Components, Requirements, etc.)
128
- - Search by name or tag using the [query language](lib/archsight/web/doc/search.md)
104
+ - Search by name or tag using the [query language](docs/search.md)
129
105
  - Filter by annotations (quality attributes, status, frameworks)
130
106
 
131
107
  **Visualization:**
@@ -183,42 +159,18 @@ Detailed documentation is available in the web interface under the Help menu:
183
159
 
184
160
  | Guide | Description |
185
161
  |-------|-------------|
186
- | [Modeling Guide](lib/archsight/web/doc/modeling.md) | How to model architecture using resource types and relations |
187
- | [Query Language](lib/archsight/web/doc/search.md) | Full query syntax reference for searching resources |
188
- | [Computed Annotations](lib/archsight/web/doc/computed_annotations.md) | Aggregating values across relations |
189
- | [ArchiMate Reference](lib/archsight/web/doc/archimate.md) | ArchiMate concepts and mapping |
190
- | [TOGAF Reference](lib/archsight/web/doc/togaf.md) | TOGAF alignment and concepts |
162
+ | [Modeling Guide](docs/modeling.md) | How to model architecture using resource types and relations |
163
+ | [Query Language](docs/search.md) | Full query syntax reference for searching resources |
164
+ | [Computed Annotations](docs/computed_annotations.md) | Aggregating values across relations |
165
+ | [ArchiMate Reference](docs/archimate.md) | ArchiMate concepts and mapping |
166
+ | [TOGAF Reference](docs/togaf.md) | TOGAF alignment and concepts |
167
+ | [Architecture](docs/architecture.md) | Technology stack and directory structure |
168
+ | [Docker](docs/docker.md) | Running Archsight in Docker |
169
+ | [Kubernetes](docs/kubernetes.md) | Helm chart deployment guide |
191
170
 
192
171
  ## Architecture
193
172
 
194
- ### Technology Stack
195
-
196
- - **Web Framework**: Sinatra
197
- - **Templating**: Haml
198
- - **Styling**: Pico CSS v2.x
199
- - **Interactivity**: HTMX
200
- - **Icons**: Iconoir (1,671+ icons)
201
- - **Visualization**: GraphViz (@hpcc-js/wasm for client-side SVG)
202
-
203
- ### Directory Structure
204
-
205
- ```text
206
- archsight/
207
- ├── exe/archsight # CLI executable
208
- ├── lib/
209
- │ ├── archsight.rb # Entry point
210
- │ └── archsight/
211
- │ ├── cli.rb # Thor CLI
212
- │ ├── configuration.rb # Resources path config
213
- │ ├── database.rb # YAML loader and validator
214
- │ ├── query/ # Query language (lexer, parser, evaluator)
215
- │ ├── resources/ # Resource types (20+)
216
- │ ├── annotations/ # Annotation modules
217
- │ ├── mcp/ # MCP server tools
218
- │ └── web/ # Sinatra app, views, assets
219
- │ └── doc/ # Documentation (markdown)
220
- └── test/ # Test suite
221
- ```
173
+ See [Architecture](docs/architecture.md) for the technology stack and directory structure.
222
174
 
223
175
  ## Contributing
224
176
 
@@ -1,160 +1,3 @@
1
1
  # Archsight Helm Chart
2
2
 
3
- A Helm chart for deploying [Archsight](https://github.com/ionos-cloud/archsight) on Kubernetes.
4
-
5
- ## Introduction
6
-
7
- This chart bootstraps an Archsight deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. It is designed to be flexible in how you provide the architecture "resources" (YAML files) to the application.
8
-
9
- ## Prerequisites
10
-
11
- - Kubernetes 1.19+
12
- - Helm 3.2.0+
13
-
14
- ## Installing the Chart
15
-
16
- ### From OCI Registry (Recommended)
17
-
18
- To install the chart from the GitHub Container Registry:
19
-
20
- ```bash
21
- helm install my-archsight oci://ghcr.io/ionos-cloud/archsight/charts/archsight
22
- ```
23
-
24
- ### From Local Source
25
-
26
- To install the chart with the release name `my-archsight` from local source:
27
-
28
- ```bash
29
- helm install my-archsight ./chart/archsight
30
- ```
31
-
32
- ## Configuration
33
-
34
- The following table lists the configurable parameters of the Archsight chart and their default values.
35
-
36
- | Parameter | Description | Default |
37
- |-----------|-------------|---------|
38
- | `image.repository` | Docker image repository | `archsight` |
39
- | `image.tag` | Docker image tag | `""` (uses appVersion) |
40
- | `service.type` | Kubernetes Service type | `ClusterIP` |
41
- | `service.port` | Service port | `80` |
42
- | `ingress.enabled` | Enable Ingress resource | `false` |
43
- | `app.resourcesDir` | Directory where app looks for resources | `/resources` |
44
-
45
- ### Resource Management Strategies
46
-
47
- The most important configuration is how you provide your architecture YAML files to the application. This is controlled by the `content.type` parameter.
48
-
49
- #### 1. ConfigMap (Simple / Static)
50
- Best for small deployments where the architecture definitions rarely change or are small enough to fit in a ConfigMap (1MB limit).
51
-
52
- ```yaml
53
- content:
54
- type: configMap
55
- configMap:
56
- create: true
57
- data:
58
- analysis.yaml: |
59
- apiVersion: architecture/v1alpha1
60
- kind: Analysis
61
- metadata:
62
- name: MyAnalysis
63
- # ... content ...
64
- ```
65
-
66
- #### 2. Persistence (Manual Management)
67
- 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).
68
-
69
- ```yaml
70
- content:
71
- type: persistence
72
- persistence:
73
- enabled: true
74
- size: 1Gi
75
- ```
76
-
77
- #### 3. EmptyDir + Git Sync (GitOps / Recommended)
78
- 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.
79
-
80
- **Example values.yaml configuration (Public Repo):**
81
-
82
- ```yaml
83
- content:
84
- type: emptyDir
85
-
86
- initContainers:
87
- - name: git-sync
88
- image: alpine/git
89
- # Clone your architecture repo into /resources
90
- args: ["clone", "--depth", "1", "https://github.com/my-org/my-architecture.git", "/resources"]
91
- volumeMounts:
92
- - name: resources
93
- mountPath: /resources
94
- ```
95
-
96
- **Example values.yaml configuration (Private Repo):**
97
-
98
- To use a private repository, create a Kubernetes Secret containing your git token (e.g., `git-credentials` with key `token`) and reference it:
99
-
100
- ```yaml
101
- content:
102
- type: emptyDir
103
-
104
- initContainers:
105
- - name: git-sync
106
- image: alpine/git
107
- env:
108
- - name: GIT_TOKEN
109
- valueFrom:
110
- secretKeyRef:
111
- name: git-credentials
112
- key: token
113
- command: ["/bin/sh", "-c"]
114
- # Use the env var in the URL so the token is not exposed in the pod spec
115
- args:
116
- - "git clone https://oauth2:$GIT_TOKEN@github.com/my-org/my-private-repo.git /resources"
117
- volumeMounts:
118
- - name: resources
119
- mountPath: /resources
120
- ```
121
-
122
-
123
- ### Sidecars (Auto-Refresh)
124
-
125
- 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.
126
-
127
- **Example (Private Repo with 60s Refresh Loop):**
128
-
129
- ```yaml
130
- sidecars:
131
- - name: git-refresher
132
- image: alpine/git
133
- env:
134
- - name: GIT_TOKEN
135
- valueFrom:
136
- secretKeyRef:
137
- name: git-credentials
138
- key: token
139
- command: ["/bin/sh", "-c"]
140
- args:
141
- - |
142
- cd /resources
143
- # Set the remote URL with the token to ensure authentication
144
- git remote set-url origin "https://oauth2:${GIT_TOKEN}@github.com/my-org/my-private-repo.git"
145
- while true; do
146
- git pull
147
- sleep 60
148
- done
149
- volumeMounts:
150
- - name: resources
151
- mountPath: /resources
152
- ```
153
-
154
- ## Uninstalling the Chart
155
-
156
- To uninstall/delete the `my-archsight` deployment:
157
-
158
- ```bash
159
- helm delete my-archsight
160
- ```
3
+ See the full documentation at [docs/kubernetes.md](../../docs/kubernetes.md).
@@ -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
+ ```
@@ -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
+ ```