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 +127,91 @@ Local tests will use [localstack](https://www.localstack.cloud/), started & stop
128
127
129
128
### Diagrams
130
129
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
130
```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
131
+
graph TB
132
+
subgraph "System Context"
133
+
direction TB
134
+
Client["NHS App / Client"]
135
+
Consumer["Postman / Consumer"]
136
+
API["Eligibility Signposting API"]
137
+
AWS["AWS"]
138
+
end
139
+
140
+
Client -->|"HTTP Request"| API
141
+
Consumer -->|"HTTP Request"| API
142
+
API -->|"Deployed on"| AWS
143
+
144
+
subgraph "Container Diagram"
145
+
direction TB
146
+
subgraph "AWS Infrastructure"
147
+
direction TB
148
+
APIGW["API Gateway"]
149
+
Lambda["Python Lambda (app.py)"]
150
+
DynamoDB["DynamoDB Table"]
151
+
S3Bucket["S3 Bucket (rules)"]
152
+
IAM["IAM Roles & Policies"]
153
+
end
154
+
subgraph "CI/CD Pipeline"
155
+
direction TB
156
+
GH["GitHub Actions"]
157
+
TF["Terraform"]
158
+
end
159
+
end
160
+
161
+
Client -->|"HTTPS POST /eligibility"| APIGW
162
+
APIGW -->|"Invoke"| Lambda
163
+
Lambda -->|"GetItem/PutItem"| DynamoDB
164
+
Lambda -->|"GetObject"| S3Bucket
165
+
Lambda -->|"Uses"| IAM
166
+
167
+
GH -->|"runs pipelines"| TF
168
+
TF -->|"provisions"| APIGW
169
+
TF -->|"provisions"| DynamoDB
170
+
TF -->|"provisions"| S3Bucket
171
+
TF -->|"provisions"| IAM
172
+
173
+
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