Forms Platform is organized into several packages:
Package | Description | Dependencies |
---|---|---|
Forms | Platform services and domain logic | Common, Database |
Server | Platform Node.js web server | Auth, Common, Database, Design, Forms |
Design | User-facing interface components | Common, Forms |
Auth | Authentication and authorization | Common, Database |
Common | Shared utilities | None |
Database | Backend storage | Common |
This C4-like architectural diagram documents data flows in a typical deployment scenario:
flowchart TB
%% Style definitions
classDef blue fill:#2374ab,color:#fff
classDef invisible opacity:0
subgraph "External Users"
formFiller[Form Filler: Submits forms]
formCreator[Form Creator: Uses no-code interface to create forms]
formReviewer[Form Reviewer: Reviews submitted forms]
end
subgraph platform["Forms Platform (Internal)"]
style platform fill:#fcf8d4,color:#000
webServer[Platform Server: Handles form creation, submission, and interactions]:::blue
database[(Postgres DB: Stores form data and user information)]
end
subgraph "External Systems"
loginGov[Login.gov: Handles authentication]
subgraph "Agency Systems"
agencyBackend[Agency Backend Systems: Receives submitted form data]
s3Bucket[Amazon S3: Stores completed forms]
end
end
formCreator -->|Creates forms using| webServer
formFiller -->|Submits forms via| webServer
formReviewer -->|Reviews submitted forms using| webServer
webServer -->|Stores and retrieves form data from| database
webServer -->|Authenticates form creators - https| loginGov
webServer -->|Submits form data to Agency Backend - https| agencyBackend
webServer -->|Uploads form PDFs to S3 Bucket - https| s3Bucket
%% Forcing "External Systems" to be below "Forms Platform"
dummyNode[ ]:::invisible
webServer --> dummyNode
dummyNode --> loginGov