You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -128,25 +128,91 @@ Local tests will use [localstack](https://www.localstack.cloud/), started & stop
128
128
129
129
### Diagrams
130
130
131
-
The [C4 model](https://c4model.com/) is a simple and intuitive way to create software architecture diagrams that are clear, consistent, scalable and most importantly collaborative. This should result in documenting all the system interfaces, external dependencies and integration points.
The source for diagrams should be in Git for change control and review purposes. Recommendations are [draw.io](https://app.diagrams.net/) (example above in [docs](.docs/diagrams/) folder) and [Mermaids](https://github.com/mermaid-js/mermaid). Here is an example Mermaids sequence diagram:
136
-
137
131
```mermaid
138
-
sequenceDiagram
139
-
User->>+Service: GET /users?params=...
140
-
Service->>Service: auth request
141
-
Service->>Database: get all users
142
-
Database-->>Service: list of users
143
-
Service->>Service: filter users
144
-
Service-->>-User: list[User]
145
-
```
146
-
147
-
### Modularity
132
+
graph TB
133
+
subgraph "System Context"
134
+
direction TB
135
+
Client["NHS App / Client"]
136
+
Consumer["Postman / Consumer"]
137
+
API["Eligibility Signposting API"]
138
+
AWS["AWS"]
139
+
end
140
+
141
+
Client -->|"HTTP Request"| API
142
+
Consumer -->|"HTTP Request"| API
143
+
API -->|"Deployed on"| AWS
144
+
145
+
subgraph "Container Diagram"
146
+
direction TB
147
+
subgraph "AWS Infrastructure"
148
+
direction TB
149
+
APIGW["API Gateway"]
150
+
Lambda["Python Lambda (app.py)"]
151
+
DynamoDB["DynamoDB Table"]
152
+
S3Bucket["S3 Bucket (rules)"]
153
+
IAM["IAM Roles & Policies"]
154
+
end
155
+
subgraph "CI/CD Pipeline"
156
+
direction TB
157
+
GH["GitHub Actions"]
158
+
TF["Terraform"]
159
+
end
160
+
end
161
+
162
+
Client -->|"HTTPS POST /eligibility"| APIGW
163
+
APIGW -->|"Invoke"| Lambda
164
+
Lambda -->|"GetItem/PutItem"| DynamoDB
165
+
Lambda -->|"GetObject"| S3Bucket
166
+
Lambda -->|"Uses"| IAM
167
+
168
+
GH -->|"runs pipelines"| TF
169
+
TF -->|"provisions"| APIGW
170
+
TF -->|"provisions"| DynamoDB
171
+
TF -->|"provisions"| S3Bucket
172
+
TF -->|"provisions"| IAM
173
+
174
+
subgraph "Eligibility Lambda Function - Components"
Most of the projects are built with customisability and extendability in mind. At a minimum, this can be achieved by implementing service level configuration options and settings. The intention of this section is to show how this can be used. If the system processes data, you could mention here for example how the input is prepared for testing - anonymised, synthetic or live data.
0 commit comments