{"id":24077481,"url":"https://github.com/js-hmi/jahmin","last_synced_at":"2025-04-30T08:11:17.749Z","repository":{"id":39764039,"uuid":"253832731","full_name":"JS-HMI/jahmin","owner":"JS-HMI","description":"A Javascript framework to build Human Machine Interfaces for IoT","archived":false,"fork":false,"pushed_at":"2023-01-07T04:38:16.000Z","size":1174,"stargazers_count":5,"open_issues_count":13,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-14T03:54:35.595Z","etag":null,"topics":["automation","browser","framework","hmi","iot","javascript","scada"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JS-HMI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-07T15:19:47.000Z","updated_at":"2024-09-21T03:33:38.000Z","dependencies_parsed_at":"2023-02-06T12:01:13.913Z","dependency_job_id":null,"html_url":"https://github.com/JS-HMI/jahmin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JS-HMI%2Fjahmin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JS-HMI%2Fjahmin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JS-HMI%2Fjahmin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JS-HMI%2Fjahmin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JS-HMI","download_url":"https://codeload.github.com/JS-HMI/jahmin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251666283,"owners_count":21624293,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["automation","browser","framework","hmi","iot","javascript","scada"],"created_at":"2025-01-09T20:16:40.384Z","updated_at":"2025-04-30T08:11:17.730Z","avatar_url":"https://github.com/JS-HMI.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JaHMIn\nA **Ja**vascript framework to build **H**uman **M**achine **In**terfaces for IoT.\n\n- **Demo of basic elements available [here](https://js-hmi.github.io/jmn-basic-elements/demo)**.\n- **Full JSDocs available at: [js-hmi.github.io/jahmin](https://js-hmi.github.io/jahmin/index.html)**.\n- **Tutorials avaliable [here](https://js-hmi.github.io/jahmin/list_tutorial.html)**.\n\n\n### Installation \n\n```js\nnpm install jahmin\n```\n\n\n### Working Principles\n\nJahmin is a framework that helps with the boiler plate necessary to put in comunication browser UI-elements \nwith server-side sensors data. It allows for bi-directional comunications, for monitoring and control.\nJahmin does this by offering an opinionated set of components:\n\n- UI elements are build using web-components inheriting from the, **HMIElement** class. These are **Lit-Element** components\nwith a few helper functions. \n- An app state managment system (using **ImperaJS**) takes care of holding the state and propagating state changes to all elements.\n- A customizable **DataCommsEngine** class is provided for server-client data retrival and communication. \n- An app **ServiceManager** class takes care of initialization and configuration.\n- A customizable Error tray notification mechanism is provided to inform the user of any problem.\n\nThe basic idea is that once you implement the server-client data exchange protocol of your application within the DataCommsEngine class,\nall data points, the variables of your system, are accessible by name from the HMIElements. The framework takes care of connecting, \npopulating and subscribing HMIElements to your data stream automatically. This decoupling between data comunication and UI \ngives the oppurtunity to re-use the components and share them. \nJahmin comes with a set of basic components, which you can explore [here](https://js-hmi.github.io/jmn-basic-elements/demo).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjs-hmi%2Fjahmin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjs-hmi%2Fjahmin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjs-hmi%2Fjahmin/lists"}