32ea0d7c4d6c5f1aa4b85a50ee6c66bd26f759f5
drill-cloud-v3
Lightweight Drill Cloud API for an existing PostgreSQL/TimescaleDB database.
What is intentionally absent
- No migrations.
- No
tag-translationmodule. - No alarm log writes.
- No automatic
edgeortagupserts during ingest.
Database
The current cloud database schema uses these public tables:
edge(id, name, parent_id, tag_ids)tag(id, name, min, max, comment, unit_of_measurement, edge_ids, precision, tag_group)current(id, edge, tag, value, createdAt, updatedAt)history(id, edge, timestamp, tag, value, createdAt)
history is expected to be a TimescaleDB hypertable partitioned by timestamp.
Historical chart ranges use continuous aggregates:
history_1mhistory_5mhistory_1hhistory_1d
API
All routes are served under the /api prefix.
GET /api/healthGET /api/edgeGET /api/tag?edge=edge5&search=pressureGET /api/current?edge=edge5&tags=tag1,tag2GET /api/history?edge=edge5&tags=tag1,tag2&from=2026-06-01T00:00:00Z&to=2026-06-02T00:00:00ZPOST /api/ingestPOST /api/ingest/:edge
POST /api/ingest accepts one point:
{
"edge": "edge5",
"tag": "hook_weight_1",
"timestamp": "2026-06-19T00:00:00Z",
"value": 12.34
}
POST /api/ingest/:edge accepts a compact edge payload:
{
"timestamp": "2026-06-19T00:00:00Z",
"values": {
"hook_weight_1": 12.34,
"rotary_rpm": 80
}
}
Local Run
npm install
cp .env.example .env
npm run start:dev
The default port is 3101.
Description
Languages
TypeScript
97.5%
JavaScript
1.8%
Dockerfile
0.7%