{"id":17749712,"url":"https://github.com/kaltsoon/kilke","last_synced_at":"2026-01-27T09:41:19.256Z","repository":{"id":41797958,"uuid":"153480983","full_name":"Kaltsoon/kilke","owner":"Kaltsoon","description":"🧪 IOT platform for reading and visualising sensor data","archived":false,"fork":false,"pushed_at":"2025-07-20T04:53:03.000Z","size":3149,"stargazers_count":2,"open_issues_count":57,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-20T06:39:51.510Z","etag":null,"topics":["docker","iot","javascript"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kaltsoon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-10-17T15:32:30.000Z","updated_at":"2025-07-20T04:53:14.000Z","dependencies_parsed_at":"2025-07-20T06:12:43.539Z","dependency_job_id":"608c3827-9797-43e0-9209-9e8904500344","html_url":"https://github.com/Kaltsoon/kilke","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Kaltsoon/kilke","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kaltsoon%2Fkilke","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kaltsoon%2Fkilke/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kaltsoon%2Fkilke/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kaltsoon%2Fkilke/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kaltsoon","download_url":"https://codeload.github.com/Kaltsoon/kilke/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kaltsoon%2Fkilke/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28811125,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T07:41:26.337Z","status":"ssl_error","status_checked_at":"2026-01-27T07:41:08.776Z","response_time":168,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","iot","javascript"],"created_at":"2024-10-26T11:24:34.755Z","updated_at":"2026-01-27T09:41:19.247Z","avatar_url":"https://github.com/Kaltsoon.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧪 Kilke\n\n\u003e _\"A small metal object that jingles.\"_\n\u003e\n\u003e — A definition for the Finnish word \"kilke\".\n\nKilke is an IOT platform for reading and visualising sensor data and to automatically control certain laboratory devices (e.g. pumps) based on the sensor outputs. The platform was developed for a research project which purpose was to extract valuable minerals from mining wastewater. Its architecture consists of five components, which can be found in the `packages` directory.\n\n```mermaid\nflowchart LR\n    api[API]\n    client[Client]\n    sr[System Reader]\n    sio[System IO]\n    pc[Pump Controller]\n    pg[(PostgreSQL)]\n    api --\u003e pg\n    client --\u003e api\n    sr --\u003e api\n    sr --\u003e sio\n    pc --\u003e api\n    pc --\u003e sio\n```\n\n## Setup\n\n1. Install [Docker](https://www.docker.com/)\n2. Run `docker-compose up`\n3. Once `db` and `api` services are running, run the migrations by running `docker-compose exec api yarn migrate:latest`\n4. _(Optional)_ Create a system by calling the API with the following request:\n\n```bash\ncurl -d '{\"name\": \"System\"}' -H \"Content-Type: application/json\" -X POST http://localhost:5000/api/v1/systems\n```\n\nAfter the setup is done, the client should be available at \u003chttp://localhost:8080/\u003e.\n\n### Package configuration\n\nYou can override each package's configuration in the `.env` file within package's directory (e.g. `packages/api/.env`). Note that some of these changes (such as ports) require altering the `Dockerfile`s and `docker-compose.yml` file as well.\n\n## System configuration\n\nSystem configuration format:\n\n```javascript\n{\n  sensors: {\n    [string]: { // key for the sensor\n      title: string,\n      subtitle: string,\n      decimals: number, // how many decimals are used to display measurements\n      reactorTitle: string, // title showed in the reactor view\n      unit: {\n        unit: string, // unit short name, such as \"RPM\"\n        title: string, // unit long name, such as \"Temperature\"\n      },\n      calibration: {\n        x1: number,\n        x2: number,\n        y1: number,\n        y2: number,\n      },\n    },\n  },\n  pumps: {\n    [string]: { // key for the pump\n      title: string,\n      subtitle: string,\n    },\n  },\n  binarySensors: {\n    [string]: {\n      title: string,\n      subtitle: string,\n      reactorTitle: string,\n    },\n  },\n  visualization: {\n    tabs: Array\u003c{\n      title: string,\n      sensors: Array\u003cstring\u003e, // array of sensor keys\n    }\u003e,\n  },\n  reactor: {\n    pumps: Array\u003cstring\u003e, // pump keys\n    sensors: Array\u003cstring\u003e, // sensor keys\n    binarySensors: Array\u003cstring\u003e, // binary sensor keys\n  }\n}\n```\n\n## Inspecting logs\n\nRun `docker-compose logs \u003cservice\u003e` where `\u003cservice\u003e` is the target service. E.g. `docker-compose logs system-reader`\n\n## Database connection\n\nOnce containers are running after running `docker-compose up`, you can access the database container by running `docker-compose exec db /bin/bash`. Once connected to the database container you can access the database from terminal by running the command:\n\n```\npsql -U postgres -d kilke\n```\n\n## License\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaltsoon%2Fkilke","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkaltsoon%2Fkilke","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkaltsoon%2Fkilke/lists"}