Architecture & Deployment

System design, dual environments, and the calculation pipeline

System Architecture

Browser
HTTPS request
nginx
SSL + static files
Node.js API
Port 3100
PostgreSQL
Port 5433 (shared)

Static frontend served directly by nginx • /api/* proxied to Node.js • Puppeteer/Chromium for PDF generation

Environments

Local Development
Docker Compose with 4 containers
http://localhost:8004
Ports: nginx=8004, backend=4002, frontend=5173, postgres=5434
Production
Bare Node.js on DigitalOcean droplet
https://wit.ipnoelp.com
Port 3100, shared PostgreSQL, Let's Encrypt SSL

Calculation Pipeline

1
PPS Space Calculator — Building block quantities per floor (user input)
2
Tech Breakdown — Block qty × equipment multiplier → equipment quantities by category
3
Network Design — Add site-size-specific equipment (routers, switches, WAPs)
4
Regional Pricing — Equipment quantities × unit costs for the project's region
5
Cost Formulas — Installation (25%), BAU (60% of CAPEX), ITO (10%), PPS (2%), Contingency
6
15-Row Cost Summary — Including/Excluding Network variants + Budget Breakdown

Technology Stack

LayerTechnology
FrontendReact 18, TypeScript, Vite, TailwindCSS, React Query
BackendNode.js 20 (ESM), Express, TypeScript
DatabasePostgreSQL 15 (shared with CMS)
PDFPuppeteer + Chromium (snap)
Excelxlsx library

Current Status

ComponentStatusNotes
DeploymentCompleteRunning at wit.ipnoelp.com
Calculation Engine85%BAU fixed, missing decom formula + equipment mappings
Reference Data90%6 retail building blocks unmapped
ValidationWaitingEmail sent to Craig 2026-02-22
Architecture & Deployment detailsCalculation Engine formulasAPI & Data Model
Back to WIT PropTech