# Deployment Architecture — Unit: SlpSoftware Client Setup **Status note**: this diagram documents the **target state after** the Operations-phase cutover (D-15) — it is reference/planning context for Code Generation, not something this unit deploys itself. No infrastructure changes happen as part of this Construction stage. ```mermaid %%{init: {'themeVariables': {'primaryTextColor':'#000000','textColor':'#000000','tertiaryTextColor':'#000000'}}}%% graph TD visitor["Site Visitor / CMS Administrator browser"] proxy["Proxy Pi
nginx + TLS (certbot)"] pimain["pi-main
systemd --user"] svc_test["slpsoftware-test.service
port 5100"] svc_prod["slpsoftware-production.service
port 5101"] dll["SlpModularCms.Api.SlpSoftware.dll
(replaces Api.dll at cutover)"] db["MariaDB
SlpSoftwareTest / SlpSoftwareProduction"] sentry["Sentry (shared project)"] visitor -->|"HTTPS"| proxy proxy -->|"proxy_pass, plain HTTP over LAN"| pimain pimain --> svc_test pimain --> svc_prod svc_test --> dll svc_prod --> dll dll -->|"EF Core / MariaDB provider"| db dll -->|"error/event reporting"| sentry classDef external fill:#e9d8fd,stroke:#553c9a,stroke-width:2px,color:#000000,font-weight:bold; classDef proxy fill:#bee3f8,stroke:#2b6cb0,stroke-width:2px,color:#000000,font-weight:bold; classDef compute fill:#fefcbf,stroke:#b7791f,stroke-width:2px,color:#000000,font-weight:bold; classDef data fill:#c6f6d5,stroke:#2f855a,stroke-width:2px,color:#000000,font-weight:bold; class visitor external; class proxy proxy; class pimain,svc_test,svc_prod,dll compute; class db,sentry data; linkStyle default stroke:#666666,stroke-width:2px; ``` Text alternative: a visitor's browser reaches the proxy Pi over HTTPS, which forwards plain HTTP over the LAN to pi-main; pi-main runs two systemd-managed instances (test on port 5100, production on port 5101), both eventually running `SlpModularCms.Api.SlpSoftware.dll` after the cutover, each talking to its own MariaDB database and the shared Sentry project (purple = external actor, blue = the TLS-terminating proxy, yellow = compute/hosting, green = data/observability backends). ## Local Development (Current Scope of This Unit) ```mermaid %%{init: {'themeVariables': {'primaryTextColor':'#000000','textColor':'#000000','tertiaryTextColor':'#000000'}}}%% graph LR dev["Developer machine"] api["SlpModularCms.Api
(existing dev host)"] apislp["SlpModularCms.Api.SlpSoftware
(new, this unit)"] dbA["Local DB: Api"] dbB["Local DB: Api.SlpSoftware (isolated)"] dev --> api dev --> apislp api --> dbA apislp --> dbB classDef dev fill:#fefcbf,stroke:#b7791f,stroke-width:2px,color:#000000,font-weight:bold; classDef data fill:#c6f6d5,stroke:#2f855a,stroke-width:2px,color:#000000,font-weight:bold; class dev,api,apislp dev; class dbA,dbB data; linkStyle default stroke:#666666,stroke-width:2px; ``` Text alternative: locally, `Api` and the new `Api.SlpSoftware` each connect to their own separate, isolated database (decision Q1 = B) — no shared local dev data between the two.