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.
| Product | App folder | Built around | Kind |
|---|---|---|---|
| AquaGen | production | Everything | Full platform |
| AquaRecycle | uwms | Urban Water Index (uwi) | Standalone product |
| Lakepulse | lakepulse | Lake monitoring (ilm) | Standalone product |
| AquaRain | rwi | Rainwater Index (rwi) | Standalone product |
| AquaGen Demo | demo | Everything (+ 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 tomain. 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 thingsrwi 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
pricingpage and the feature-locked product page (FeatureLockedProductPage); it keeps the basefeature_lockedroute.
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.
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.
| Library | AquaGen | Demo | AquaRecycle | Lakepulse | AquaRain |
|---|---|---|---|---|---|
| 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
- Standalone Apps — how AquaRecycle, Lakepulse, and AquaRain are built in code.
- Deployment & Environments — where each product is hosted.
- Architecture → Libraries — the shared libraries behind every product.