{"id":22043083,"url":"https://github.com/coatyio/coaty-js","last_synced_at":"2025-05-08T01:22:56.075Z","repository":{"id":33110300,"uuid":"151112170","full_name":"coatyio/coaty-js","owner":"coatyio","description":"Collaborative IoT framework in JavaScript/TypeScript for Node.js and browsers.","archived":false,"fork":false,"pushed_at":"2023-10-20T08:31:05.000Z","size":7977,"stargazers_count":44,"open_issues_count":8,"forks_count":7,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-15T18:50:00.358Z","etag":null,"topics":["agent","coaty","collaborative","decentralized","distributed","framework","iot","javascript","typescript"],"latest_commit_sha":null,"homepage":"https://coaty.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coatyio.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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}},"created_at":"2018-10-01T15:32:01.000Z","updated_at":"2024-08-29T20:01:08.000Z","dependencies_parsed_at":"2024-06-19T05:32:30.362Z","dependency_job_id":"eb2c51e1-e569-4c47-8c4a-7e01f89e8ad1","html_url":"https://github.com/coatyio/coaty-js","commit_stats":{"total_commits":314,"total_committers":4,"mean_commits":78.5,"dds":"0.015923566878980888","last_synced_commit":"d3cda64e6227910beff136f74e2c8a38a72640b7"},"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coatyio%2Fcoaty-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coatyio%2Fcoaty-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coatyio%2Fcoaty-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coatyio%2Fcoaty-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coatyio","download_url":"https://codeload.github.com/coatyio/coaty-js/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252979619,"owners_count":21835091,"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":["agent","coaty","collaborative","decentralized","distributed","framework","iot","javascript","typescript"],"created_at":"2024-11-30T12:14:21.565Z","updated_at":"2025-05-08T01:22:56.049Z","avatar_url":"https://github.com/coatyio.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Coaty Framework - JavaScript\n\n[![Powered by Coaty 2](https://img.shields.io/badge/Powered%20by-Coaty%202-FF8C00.svg)](https://coaty.io)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![release](https://img.shields.io/badge/release-Conventional%20Commits-yellow.svg)](https://conventionalcommits.org/)\n[![npm version](https://badge.fury.io/js/%40coaty%2Fcore.svg)](https://www.npmjs.com/package/@coaty/core)\n\nUsing the Coaty [koʊti] framework as a middleware, you can build distributed\napplications out of decentrally organized application components, so called\n*Coaty agents*, which are loosely coupled and communicate with each other in\n(soft) real-time. The main focus is on IoT prosumer scenarios where smart agents\nact in an autonomous, collaborative, and ad-hoc fashion. Coaty agents can run on\nIoT devices, mobile devices, in microservices, cloud or backend services.\n\nThe Coaty framework provides a production-ready application and communication layer\nfoundation for building collaborative IoT applications in an easy-to-use yet powerful and\nefficient way. The key properties of the framework include:\n\n* a lightweight and modular object-oriented software architecture favoring a\n  resource-oriented and declarative programming style,\n* standardized event based communication patterns on top of an open\n  publish-subscribe messaging protocol such as [MQTT](https://mqtt.org) or\n  [WAMP](https://wamp-proto.org/),\n* a platform-agnostic, extensible object model to discover, distribute, share,\n  query, and persist hierarchically typed data, and\n* rule based, context driven routing of IoT (sensor) data using smart backpressure\n  strategies.\n\nCoaty supports interoperable framework implementations for multiple platforms.\nThe Coaty JS package provides the cross-platform implementation targeted at\nJavaScript/TypeScript, running as mobile or web apps in the browser, or as Node.js\nservices.\n\nCoaty JS comes with complete API documentation, a developer guide, a coding\nstyle guide, best-practice examples, and additional extensions.\n\n## Learn how to use\n\nIf you are new to Coaty or would like to learn more, we recommend reviewing the\n[framework documentation](https://coatyio.github.io/coaty-js/) of the\n[coaty-js](https://github.com/coatyio/coaty-js) project. This documentation\nincludes:\n\n* a [Developer Guide](https://coatyio.github.io/coaty-js/man/developer-guide/)\n  that provides the basics to get started developing a Coaty project with the\n  Coaty JS framework,\n* a complete [API\n  documentation](https://coatyio.github.io/coaty-js/api/index.html) of all\n  public type and member definitions of the Coaty JS framework sources,\n* a [Coding Style\n  Guide](https://coatyio.github.io/coaty-js/man/coding-style-guide/) for Coaty\n  JS framework and application developers,\n* a specification of the [Coaty communication\n  event patterns](https://coatyio.github.io/coaty-js/man/communication-events/),\n* guidance notes on [rights\n  management](https://coatyio.github.io/coaty-js/man/rights-management/) in a\n  Coaty application,\n* a guide on the [OGC SensorThings API\n  integration](https://coatyio.github.io/coaty-js/man/sensor-things-guide/) in\n  Coaty JS,\n* a [Migration Guide](https://coatyio.github.io/coaty-js/man/migration-guide/)\n  to upgrade an existing Coaty JS application to a newer Coaty JS major release.\n\nCoaty JS also includes a set of fully documented [code\nexamples](https://github.com/coatyio/coaty-examples) that demonstrate best\npractices and typical usage patterns.\n\nCoaty JS also includes a ready-to-use\n[template](https://github.com/coatyio/coaty-examples/tree/master/template/js)\nfor a Coaty agent running in Node.js and programmed in TypeScript. Copy and use\nit as a blueprint for your own Coaty agent projects.\n\nCoaty JS is also accompanied by a set of additional extensions to the core\nframework supplied in separate projects on\n[github](https://github.com/coatyio/). Extensions, such as connectors, adapters,\nor building blocks, provide reusable functionality for specialized use cases and\napplication scenarios build on top of the Coaty core.\n\nFinally, the integration tests delivered with the framework itself also provide\na valuable source of programming examples for experienced developers.\n\nNote that the framework makes heavy use of the Reactive Programming paradigm\nusing RxJS observables. Understanding observables is an indispensable\nprerequisite for developing applications with the framework. An introduction to\nReactive Programming can be found [here](http://reactivex.io/). Examples and\nexplanations can be found on the [RxJS](https://rxjs.dev/) and [Learn\nRxJS](https://www.learnrxjs.io/) websites.\n\nIf you are new to TypeScript programming, we recommend to take a look at the official\n[TypeScript website](http://www.typescriptlang.org/). Its \"Playground\" is especially useful\nto interactively try some TypeScript code in your browser.\n\nTo program Coaty applications, we recommend to use [Visual Studio\nCode](https://code.visualstudio.com/), a free, open source IDE that runs\neverywhere. Install the VS Code extension \"TSLint\" to enable TypeScript linting\nwithin the IDE.\n\n## Getting started\n\nTo build and run Coaty agents with the Coaty JS technology stack\nyou need to install the `Node.js` JavaScript runtime (version 8 or higher) globally on\nyour target machine. Download and installation details can be found [here](http://nodejs.org/).\n\nThe framework uses the package dependency manager `npm` to download dependent libraries.\nnpm comes with `Node.js` so you need to install it first.\n\n## Installing the framework\n\nCoaty JS includes a *standard distribution package*\nthat targets Coaty agents using ECMAScript version `es5` and\nmodule format `commonjs`. It can be used to develop Node.js services\nand browser or Cordova apps bundled with Webpack, Browserify, or any\nother commonjs-compatible bundler. This package should be used to\ndevelop web and mobile apps using e.g. Angular or Ionic.\n\nYou can install the latest standard distribution package in your\nagent project as follows:\n\n```sh\nnpm install @coaty/core\n```\n\n*Note*: The distribution package defines several optional dependency modules, including\n`pg`, `cordova-sqlite-storage`, and `sqlite3`. You need to install any such\noptional dependency as a package dependency in your application project *if* you intend to make\nuse of the associated functionality. For example, if you want to make use of the framework's\nUnified Storage API by persisting objects in a PostgreSQL database, you have to install\nthe `pg` module.\n\nAs need arises, more non-standard distribution packages will be made available,\ne.g. to target ECMAScript versions ES6 or later. If you need such a package,\nplease contact one of the project maintainers.\n\n## Contributing\n\nIf you like Coaty, please consider \u0026#x2605; starring\n[the project on github](https://github.com/coatyio/coaty-js). Contributions to the\nCoaty framework are welcome and appreciated. Please follow the recommended practice\ndescribed in [CONTRIBUTING.md](https://github.com/coatyio/coaty-js/blob/master/CONTRIBUTING.md).\nThis document also contains detailed information on how to build, test, and release the\nframework.\n\n## License\n\nCode and documentation copyright 2018 Siemens AG.\n\nCode is licensed under the [MIT License](https://opensource.org/licenses/MIT).\n\nDocumentation is licensed under a\n[Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/).\n\n## Credits\n\nLast but certainly not least, a big *Thank You!* to the folks who helped to\nimplement Coaty JS and make it even better:\n\n* Nejc Zupan [@zupan](https://github.com/zupan)\n* Markus Sauer [@markussauer](https://github.com/markussauer)\n* Alihan Livdumlu [@adragonite](https://github.com/adragonite)\n* Atakan Dulker [@phynics](https://github.com/phynics)\n* Antoine Beyet\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoatyio%2Fcoaty-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoatyio%2Fcoaty-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoatyio%2Fcoaty-js/lists"}