Skip to main content

Products

The monorepo ships four products (plus a demo build of the main one). They all share the same code base and design system, but each is a separate app with its own focus, branding, and URL.

ProductApp folderBuilt aroundKind
AquaGenproductionEverythingFull platform
AquaRecycleuwmsUrban Water Index (uwi)Standalone product
LakepulselakepulseLake monitoring (ilm)Standalone product
AquaRainrwiRainwater Index (rwi)Standalone product
AquaGen DemodemoEverything (+ demo pages)Demo build of AquaGen

For how these apps are structured in code, see Standalone Apps. For where each one is hosted, see Deployment & Environments.


AquaGen — the full platform

App: production · Title: AquaGen

AquaGen is the flagship water-management platform. It is the only app that carries the complete feature set:

  • Dashboard and leadership (executive) dashboard
  • Water monitoring — flow, stock, quality, ground water level, energy, consumption
  • Water balance, water neutrality, water usage ratio
  • All sustainability indices — Urban Water Index, Rainwater Index, Ground Water Index
  • RO efficiency, SCADA editor and viewer, HMI
  • Alerts, AquaGPT / AI assistant, account management, reports (v2)

What a given user sees is decided at runtime by their account's permissions, not by the build. One production build serves every customer of the main platform.

Runs as real production on two places at once:

  • Azure Web App aquagen — deployed automatically by CI on every push to main. This is the true production release.
  • Firebase site aquagen — plus all the test, dev, UAT, and pre-prod Firebase sites.

See Deployment & Environments for the full list.


AquaRecycle — urban water & recycling

App: uwms (short for Urban Water Management System) · Title: AquaRecycle

AquaRecycle is a standalone product focused on the Urban Water Index (uwi) — urban water use, recycling, and plant views. It is a trimmed vertical of the platform:

  • Urban Water Index views (plant-view, energy)
  • A subset of monitoring — flow, stock, quality
  • Account management, alerts, AI assistant, reports (v1), feature-locked upsell pages

It uses the current standalone startup pattern with its own UwmsNavigationHelper.

Hosted at the aquarecycle (production) and aquarecycle-dev (dev) Firebase targets.


Lakepulse — lake monitoring

App: lakepulse · Title: Lakepulse

Lakepulse is a standalone product for lake and water-body monitoring, built around the ilm library (satellite water quality, heatmaps, water-risk views). It is the most focused app in the repo — the smallest route table, and the only lightweight app that does not include the general monitoring library.

  • Lake views (ilm) with per-lake pages
  • Account management, alerts, AI assistant, reports (v1), feature-locked pages

It uses the cleanest version of the standalone startup pattern with LakePulseNavigationHelper.

Hosted at the lakepulse (production) and lakepulse-dev (dev) Firebase targets.


AquaRain — rainwater

App: rwi · Title: AquaRain

AquaRain is a standalone product built around the Rainwater Index (rwi). It covers rainwater harvesting and related monitoring:

  • Rainwater Index home (RwiPage)
  • A subset of monitoring — flow, stock, quality
  • Account management, alerts, AI assistant, reports (v1), feature-locked pages

AquaRain is mid-migration to the current startup pattern — its bootstrap.jsx uses the new approach but its app.jsx still holds old wiring. See Standalone Apps → AquaRain is half-migrated. It is also the only app whose dev server runs on port 4202 instead of 4200.

Hosted at the rwi (production) and rwi-dev (dev, site rainwater-dev) Firebase targets.

rwi means two things

rwi is both an app (AquaRain) and a library (the Rainwater Index feature). The AquaRain app is built around the rwi library, but the rwi library is also used inside AquaGen. Don't confuse the two.


AquaGen Demo

App: demo · Title: Aquagen

The demo is a copy of the main production app used for sales and evaluation. Differences from production:

  • No Microsoft (MSAL) login — the demo skips real enterprise sign-in.
  • Adds demo-only pages such as True Cost of Water (trueCost).
  • Drops the pricing page and the feature-locked product page (FeatureLockedProductPage); it keeps the base feature_locked route.

It still uses the same legacy startup pattern as production.

Deployed via deploy.sh (menu choice 5) Demo) to the demo hosting target (site aquagen-demo); the deploy script repoints that target at the demo build.

One confusing detail in the committed config

In the committed firebase.json, test8's public points at dist/apps/demo and demo's at dist/apps/production. This only matters for a manual firebase deploy — the deploy scripts rewrite public to the app being built, so deploy.sh's Demo choice correctly publishes the demo build to the demo target. See Deployment & Environments → Known anomalies.


Which product uses which libraries

A quick view of the feature libraries behind each product. The full inventory is in Architecture → Libraries.

LibraryAquaGenDemoAquaRecycleLakepulseAquaRain
Shared, components, manageAccount, alerts, aquaAi, featureLocked
monitoring
dashboard, leadership, energy, waterBalance, waterNeutrality, waterRatio
gwi, roEfficiency, hmi, scadaEditor, scadaViewer, aquagenLabs
uwi
ilm
rwi
reports (v1)
reportsV2
trueCost

The three standalone products are thin verticals: AquaRecycle around uwi, Lakepulse around ilm, and AquaRain around rwi. Each still gets the common shell — account, alerts, AI assistant, reports, and feature-locked pages.


Next steps