1
1
workspace "ng2react" "A tool that converts AngularJS components to React using OpenAI API" {
2
2
!docs ./arc42
3
+ !identifiers hierarchical
3
4
model {
4
- openAiApi = softwareSystem "OpenAI" "Public API for generative AI " "External"
5
+ openAi = softwareSystem "OpenAI" "OpenAI API" "External"
5
6
6
- ng2react = softwareSystem "ng2react" "IDE Plugin" {
7
- feedbackApi = container "@ng2react/feedback" "API for submitting feedback from the IDE plugin" {
8
- feedbackDatabase = component "Feedback Database" "A database for storing feedback data"
9
- feedbackRestService = component "Feedback Service" "Handles communication between the API and the database" "OpenAPI" {
10
- feedbackRestService -> feedbackDatabase "Stores/Retrieves feedback"
11
- }
12
- feedbackViewer = component "Feedback Analysis Client" "A client for reviewing submitted feedback" {
13
- this -> feedbackRestService "Retrieves feedback"
14
- }
15
- }
7
+ ng2react = softwareSystem "AngularJS to React" "Software System" {
8
+ filesystem = container "File System" "Where the user's project files exist" {
16
9
17
- ng2react_core = container "@ng2react/core" "Main Ng2React API" "NodeJS" {
18
- typescript = component "Typescript" "AST Parsing" "JavaScript" "External"
19
- ng2react_core_component = component "@ng2react/core" "Core business logic" "JavaScript" {
20
- this -> typescript "Uses"
21
- this -> openAiApi "Uses"
22
- }
23
10
}
24
11
25
- ide_nodejs = container "NodeJS IDE" "IDEs that support JavaScript plugins" "IDE" {
26
- ng2react_vscode = component "@ng2react/vscode" "VSCode IDE Plugin" "JavaScript" {
27
- this -> ng2react_core_component "Uses"
28
- this -> feedbackRestService "Sends anlysis to"
29
- }
12
+ cli_wrapper = container "@ng2react/cli" "Command line interface for ng2react" "stdio" {
13
+ !include ng2react-core.dsl
30
14
}
31
15
32
- ng2react_cli = container "@ng2react/cli" "Command line interface for ng2react" "stdio" {
33
- typescript_cli = component "Typescript" "AST Parsing" "JavaScript" "External"
34
- ng2react_core_component_cli = component "@ng2react/core" "Core business logic" "JavaScript" {
35
- this -> typescript_cli "Uses"
36
- this -> openAiApi "Uses"
37
- }
38
- ng2react_cli_component = component "@ng2react/cli" "Command line interface for ng2react" "JavaScript" {
39
- this -> ng2react_core_component_cli "Uses"
16
+ IDE = container "Generic IDE" "Integrated Development Environment" "Native" {
17
+ ide_plugin = component "IDE Extension" "IDE Specific Implementation" "Native" {
18
+ this -> cli_wrapper.ng2react_core "Makes API calls" "stdio"
19
+ this -> filesystem "Read/Write"
40
20
}
41
21
}
42
22
43
- ng2react_ide_generic = container "Generic IDE" "IDEs without native JavaScript support" "IntelliJ, Eclipse, NeoVim, etc." {
44
- ng2react_intellij = component "@ng2react/intellij" "IntelliJ Plugin" "Kotlin" "Proposed" {
45
- this -> ng2react_cli_component "Uses"
23
+ vscode = container "VSCode" "JavaScript IDE" {
24
+ !include ng2react-core.dsl
25
+ ide_plugin = component "IDE Plugin" "IDE Extension" "JavaScript" {
26
+ this -> ng2react_core "Uses" "JavaScript API"
27
+ this -> filesystem "Read/Write"
46
28
}
47
- ng2react_neovim = component "@ng2react/NeoVim" "NeoVim Plugin" "Lua" "Proposed" {
48
- this -> ng2react_cli_component "Uses"
49
- }
50
- ng2react_eclipse = component "@ng2react/eclipse" "Eclipse Plugin" "Java" "Proposed" {
51
- this -> ng2react_cli_component "Uses"
52
- }
53
29
}
54
- }
55
-
56
- product_contributor = person "Developer/Analist" "A contributor to the ng2react software system." {
57
- this -> feedbackViewer "Analyses data from"
58
30
}
59
-
60
- generic_ide_user = person "User" "AngularJS/React developer who wants to convert AngularJS components to React" {
61
- this -> ide_nodejs "Uses"
62
- this -> ng2react_ide_generic "Uses"
31
+
32
+ ide_user = person "User" "AngularJS/React developer who wants to convert AngularJS components to React" {
33
+ this -> ng2react.IDE.ide_plugin "Uses"
34
+ this -> ng2react.VSCode.ide_plugin "Uses"
63
35
}
64
36
65
37
deploymentEnvironment "Live" {
66
38
deploymentNode "Developer Laptop" "" "Microsoft Windows 10 or Apple macOS" {
67
39
deploymentNode "IDE" "" "An integrated development environment with ng2react plugin support" {
68
- plugin = containerInstance ide_nodejs
69
- }
70
- }
71
- deploymentNode "Remote Server" "" "Feedback API" "" {
72
- deploymentNode "FeedbackAPI" "" "" {
73
- // softwareSystemInstance feedbackApi
74
- server = containerInstance feedbackApi
75
-
40
+ ideWithPlugin = containerInstance ng2react.IDE
76
41
}
77
42
}
78
43
}
@@ -84,53 +49,56 @@ workspace "ng2react" "A tool that converts AngularJS components to React using O
84
49
autoLayout
85
50
}
86
51
87
- container ng2react "IDE_Containers " {
52
+ container ng2react "SoftwareSystem_Generic " {
88
53
include *
54
+ exclude ng2react.vscode
89
55
autoLayout lr
90
56
}
91
57
92
- container ng2react "IDE_Containers_VSCode" {
93
- include *
94
- exclude ng2react_ide_generic ng2react_cli
95
- autoLayout
96
- }
97
-
98
- container ng2react "IDE_Containers_Generic" {
99
- include *
100
- exclude ng2react_vscode feedbackApi ide_nodejs product_contributor ng2react_core
101
- autoLayout
102
- }
103
-
104
-
105
- component ng2react_ide_generic "Generic_IDE_Plugins" {
58
+ container ng2react "SoftwareSystem_VSCode" {
106
59
include *
60
+ exclude ng2react.IDE ng2react.cli_wrapper
107
61
autoLayout lr
108
62
}
109
63
110
- component ide_nodejs "NodeJS_IDE_Plugins " {
64
+ component ng2react.IDE "Generic_IDE " {
111
65
include *
112
66
autoLayout lr
113
67
}
114
68
115
- component ng2react_core "Ng2React_Core " {
69
+ component ng2react.cli_wrapper "AngularJS2React_CLI " {
116
70
include *
117
71
autoLayout lr
118
72
}
119
73
120
- component ng2react_cli "Ng2React_CLI " {
74
+ component ng2react.vscode "VSCode_IDE " {
121
75
include *
122
76
autoLayout lr
123
77
}
124
78
125
- component feedbackApi "Feedback_API " {
79
+ deployment ng2react "Live " {
126
80
include *
127
81
autoLayout lr
82
+ description "An example development deployment scenario for the Internet Banking System."
128
83
}
129
84
130
- deployment ng2react "Live" {
131
- include *
85
+ dynamic ng2react "ScanProject" {
86
+ title "User converts AngularJS component to React"
87
+ ide_user -> ng2react.IDE "Opens AngularJS project inside IDE"
88
+ ng2react.IDE -> ng2react.cli_wrapper "Sends files for analysis"
89
+ ng2react.cli_wrapper -> ng2react.IDE "Returns list of convertable components"
90
+ ng2react.IDE -> ide_user "Displays list of convertable components"
132
91
autoLayout
133
- description "An example development deployment scenario for the Internet Banking System."
92
+ }
93
+
94
+ dynamic ng2react {
95
+ title "User converts AngularJS component to React"
96
+ ide_user -> ng2react.IDE "Selects component for conversion"
97
+ ng2react.IDE -> ng2react.cli_wrapper "Sends component reference"
98
+ ng2react.cli_wrapper -> openAi "Sends generated prompt"
99
+ ng2react.cli_wrapper -> ng2react.IDE "Returns Markdown, JSX, and original prompt"
100
+ ng2react.IDE -> ide_user "Displays markdown response with save options"
101
+ autoLayout lr
134
102
}
135
103
136
104
theme default
0 commit comments