Skip to content

Environments and URLs

Staging

ServiceURL
Web applicationhttps://web.linter-iot-stg.icent.digital
REST APIhttps://api.linter-iot-stg.icent.digital
Ingestion (health)https://ingest.linter-iot-stg.icent.digital
MQTT brokermqtts://mqtt.linter-iot-stg.icent.digital:8883
This documentationhttps://docs.linter-iot-stg.icent.digital

Local development

The services run on the developer’s machine (pnpm dev:api, pnpm dev:web, the ingest with uvicorn) against the infrastructure started with pnpm infra:up (MongoDB, Mosquitto, Mongo Express and Azurite).

ServiceURL
Webhttp://localhost:5173
APIhttp://localhost:3010
Ingestionhttp://localhost:8000
MQTTmqtts://localhost:8883
This documentationhttp://localhost:4321 (pnpm dev:docs)

Self-hosted with Docker

The whole platform can also run in containers on a single Linux machine (./scripts/stack.sh init, up, seed); see Self-hosted with Docker. STACK_HOST is the address users and devices open, and every port can be changed in infra/.env:

ServiceDefault URL
Webhttp://<STACK_HOST>:8080
APIhttp://<STACK_HOST>:3010
MQTTmqtts://<STACK_HOST>:8883
Ingestionhttp://127.0.0.1:8000
Mongo Expresshttp://127.0.0.1:8081

With the infra/.env made by init, the ingestion service, MongoDB and Mongo Express listen only on the machine itself (ADMIN_BIND, see Ports and firewall). The web container writes the API URL into /config.js when it starts, so the same image serves any address. The documentation is not part of the stack: the web links to the public site unless PUBLIC_DOCS_URL is set.

Health checks

ServiceEndpointResponse
APIGET /v1/health{ status, mongo, uptime }
IngestionGET /health{ status, mongo, mqtt_worker, mqtt_connected, commands_dispatcher }

On the ingest, mqtt_worker says that the MQTT loop is running, mqtt_connected that it has a session with the broker right now (the loop retries for ever), and commands_dispatcher that device commands are being dispatched (also true when they are disabled on purpose).

Versioning

Every endpoint lives under the /v1 prefix. Breaking changes will be published under a new prefix; /v1 stays stable for the duration of the pilot.

OpenAPI specification

The specification is generated from the service code itself and is available at:

GET https://api.linter-iot-stg.icent.digital/docs/json

The interactive reference in this documentation is fed from that URL, so it always reflects what is deployed.