A backend API template for installers and integrators connecting ThingsLog data to portals, mobile apps, billing, ERP, BI, and alerting systems.
For installers, water-system integrators, and utility IT teams: launch your own branded monitoring and alerting app for private customers, communal utilities, municipalities, businesses, and local operators without starting from zero.
- Water-meter installers who want to keep serving customers after installation
- Water-system integrators building portals for small communal utilities, municipalities, buildings, farms, and private owners
- Utility IT teams that need practical monitoring, alerts, reports, and customer workflows without a large enterprise platform project
- Small and mid-size water utilities, local operators, and service providers that want their own app and portal
- Larger utilities that want to test lightweight ThingsLog-powered apps, pilots, or focused operational tools
- Companies that want to launch a white-label monitoring and alerting business
- Technical teams using Codex or Claude to turn ThingsLog APIs into production-ready customer experiences
ThingsLog provides remote IoT monitoring and automation for smart metering, water utilities, pressure, tank level, pumps, energy, gas, agriculture, buildings, and industrial operations. These repositories are especially focused on the everyday problems of small communal utilities, municipalities, local operators, and the installers or integrators serving them: getting reliable data, alerts, reports, and customer visibility without the cost and complexity of a large enterprise rollout. Larger utilities are welcome too, especially for focused pilots, lightweight portals, and operational tools.
- Customer-safe API routes
- Device, counter, alarm endpoints
- Dashboard aggregation endpoint
- Server-side token storage
- Mock mode for tests and demos
- Stack: Node.js, Express, ThingsLog client wrapper, customer-safe API layer
- Use when: You need a backend service that powers your own monitoring app, customer portal, alerting workflow, or third-party integration.
These templates are designed around real ThingsLog solution areas that installers and integrators can package into their own app, portal, reports, and alerting service.
Intelligent Water Smart metering, NRW, pressure, pumps, wastewater, reservoirs, tanks, and customer alerts. Supports popular water meter brands via LoRa, NB-IoT, or wireless M-Bus, plus Modbus devices and analog 4-20 mA or 0-3 V sensors. |
Energy Monitoring Consumption tracking, alarms, reports, optimization workflows, and business efficiency dashboards. |
Smart Agriculture Irrigation, soil and environmental monitoring, farm operations, alerts, and field reporting. |
Water compatibility for your own apps:
- Works with popular water meter brands through LoRa, NB-IoT, or wireless M-Bus integrations.
- Can collect from Modbus devices and industrial controllers.
- Can collect from analog sensors such as 4-20 mA and 0-3 V pressure, level, flow, and environmental sensors.
- Partners and customers can use ThingsLog data in their own apps, portals, alerting services, reports, and integrations.
Water-focused starting points:
- Remote Smart Water Metering
- NRW Leak Detection and Control
- Pressure Management and Control
- Pumping Station Automation and Control
- Wastewater Monitoring
- Tank Level Monitoring
git clone https://github.com/ThingsLog/thingslog-node-express-api-template.git
cd thingslog-node-express-api-template
cp .env.example .env
npm install
npm run devYou need a ThingsLog API token before connecting real devices. For a quick test, use direct login and copy the bearer token from the Authorization response header:
curl -i -X POST "https://iot.thingslog.com:4443/login" \
-H "Content-Type: application/json" \
-d '{"username":"YOUR_USERNAME","password":"YOUR_PASSWORD"}'For installer portals, integrator backends, and production integrations, generate a long-term API token:
KEYCLOAK_TOKEN=$(curl -s -X POST "https://iot.thingslog.com/keycloak/realms/thingslog/protocol/openid-connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=password" \
-d "client_id=thingslog-admin" \
-d "username=YOUR_USERNAME" \
-d "password=YOUR_PASSWORD" | node -e 'let s="";process.stdin.on("data",d=>s+=d);process.stdin.on("end",()=>console.log(JSON.parse(s).access_token))')
curl -i -X POST "https://iot.thingslog.com:4443/api/api-token?expirationTimeHours=720&name=installer-demo-token" \
-H "Authorization: Bearer $KEYCLOAK_TOKEN"Copy the generated API token into THINGSLOG_TOKEN, set THINGSLOG_MOCK=false, choose a real THINGSLOG_DEVICE_NUMBER, and start the app. Now you can rock and roll with live ThingsLog data.
Mock mode is enabled by default so the project starts without credentials. To connect real devices, set these values in .env or the framework-specific env file:
THINGSLOG_MOCK=false
THINGSLOG_BASE_URL=https://iot.thingslog.com:4443
THINGSLOG_TOKEN=your_api_token
THINGSLOG_DEVICE_NUMBER=00000109
THINGSLOG_SENSOR_INDEX=0
THINGSLOG_FROM_DATE=2026-02-01T00:00:00+02:00
THINGSLOG_TO_DATE=2026-02-02T00:00:00+02:00Security rule: ThingsLog API tokens stay server-side. Do not expose them through browser variables such as VITE_*, NEXT_PUBLIC_*, or mobile app bundles.
Open this repo in Codex and paste:
Use this repository to build a branded ThingsLog monitoring and alerting app for installers, water-system integrators, private customers, individuals, small communal utilities, municipalities, businesses, or larger utilities. Keep ThingsLog credentials server-side and preserve mock mode.
First inspect README.md, AGENTS.md, CLAUDE.md, and the existing ThingsLog client code.
Then propose the smallest useful first version for an installer-ready monitoring and alerting portal.
After implementing, run the available build or check commands and summarize how to start it.
Open this repo in Claude and paste:
You are helping an installer or water-system integrator build a branded ThingsLog monitoring and alerting application.
Read README.md, AGENTS.md, and CLAUDE.md before making changes.
Use ThingsLog concepts: customer, site, device, sensor, counter, measurement, alarm.
Keep ThingsLog API tokens server-side.
Preserve mock mode so the app can be demonstrated without credentials.
Build the next useful installer or integrator feature and explain how to run it locally.
src/server.jssrc/thingslog-client.jsAGENTS.mdCLAUDE.md
- Branded monitoring portal for private water customers, households, buildings, farms, and industrial sites
- Practical utility IT dashboard for small communal utilities, municipalities, and local water operators
- District metering, pressure-zone, tank, pumping-station, and alarm-response views without a heavy enterprise platform project
- Alerting service for leaks, abnormal consumption, missed transmissions, low battery, pressure thresholds, and tank level
- Installer operations portal for device commissioning, site handover, maintenance, and customer support
- Monthly monitoring package with reports, notifications, SLA checks, and field-service follow-up
- Integration service for billing, ERP, GIS, BI, SCADA, maintenance systems, and customer mobile apps
This repository is part of the ThingsLog installer and integrator template family. For stack selection, copy-paste startup commands, Codex prompts, Claude prompts, and security-review prompts, start here:
- Website: https://thingslog.com
- REST Swagger UI: https://iot.thingslog.com:4443/swagger-ui.html
- Support: https://support.thingslog.com
Applications, portals, reports, and integrations that use ThingsLog data or APIs should mention ThingsLog and include a visible link to thingslog.com. Recommended wording:
Powered by ThingsLog
Use the wording in the footer, about screen, documentation, or customer-facing integration page of your software portal or app.
This project is licensed under the Apache License 2.0.
You may use, modify, and distribute these templates in your own commercial or internal applications, including branded monitoring portals and alerting services, subject to the terms of the Apache License 2.0.
ThingsLog names, logos, screenshots, website images, product names, and other brand assets remain the property of ThingsLog or their respective owners. The open source license applies to the code, documentation, and examples, not to ThingsLog trademarks or brand assets.



