{"id":14155517,"url":"https://github.com/design-first/system-runtime","last_synced_at":"2026-01-07T17:25:13.814Z","repository":{"id":24946375,"uuid":"28364002","full_name":"design-first/system-runtime","owner":"design-first","description":"A JavaScript library that runs systems","archived":false,"fork":false,"pushed_at":"2024-01-13T14:20:06.000Z","size":12613,"stargazers_count":129,"open_issues_count":4,"forks_count":39,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-12-13T06:48:04.612Z","etag":null,"topics":["javascript","metamodel","model","mson","nosql","orm","schema","system"],"latest_commit_sha":null,"homepage":"https://designfirst.io/systemruntime/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/design-first.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"github":"ecarriou"}},"created_at":"2014-12-22T22:58:20.000Z","updated_at":"2025-12-02T07:44:35.000Z","dependencies_parsed_at":"2024-06-19T02:07:11.565Z","dependency_job_id":null,"html_url":"https://github.com/design-first/system-runtime","commit_stats":{"total_commits":795,"total_committers":9,"mean_commits":88.33333333333333,"dds":0.1534591194968553,"last_synced_commit":"02d883c7f9cabf615e39ff96d2ef04f3f212d6b3"},"previous_names":["system-designer/monoco","system-designer/system-runtime"],"tags_count":177,"template":false,"template_full_name":null,"purl":"pkg:github/design-first/system-runtime","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/design-first%2Fsystem-runtime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/design-first%2Fsystem-runtime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/design-first%2Fsystem-runtime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/design-first%2Fsystem-runtime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/design-first","download_url":"https://codeload.github.com/design-first/system-runtime/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/design-first%2Fsystem-runtime/sbom","scorecard":{"id":336072,"data":{"date":"2025-08-11","repo":{"name":"github.com/design-first/system-runtime","commit":"59fcdd154f62d0877929f5ecfde758cf4e9f0c37"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/node.js.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":3,"reason":"dependency not pinned by hash detected -- score normalized to 3","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node.js.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/design-first/system-runtime/node.js.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node.js.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/design-first/system-runtime/node.js.yml/main?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"23 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-434g-2637-qmqr","Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m","Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw","Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p","Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747","Warn: Project is vulnerable to: GHSA-vjh7-7g9h-fjfh","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-h7cp-r72f-jxh6","Warn: Project is vulnerable to: GHSA-v62p-rq8g-8h59","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T04:45:31.414Z","repository_id":24946375,"created_at":"2025-08-18T04:45:31.414Z","updated_at":"2025-08-18T04:45:31.414Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27773321,"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","status":"online","status_checked_at":"2025-12-16T02:00:10.477Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["javascript","metamodel","model","mson","nosql","orm","schema","system"],"created_at":"2024-08-17T08:03:45.446Z","updated_at":"2026-01-07T17:25:13.808Z","avatar_url":"https://github.com/design-first.png","language":"JavaScript","funding_links":["https://github.com/sponsors/ecarriou"],"categories":["nosql"],"sub_categories":[],"readme":"# System Runtime\n\n[![unit tests](https://github.com/design-first/system-runtime/actions/workflows/node.js.yml/badge.svg)](https://github.com/design-first/system-runtime/actions/workflows/node.js.yml)\n\n## What is System Runtime ?\n\nWhen you code, you do not create an application, you create in fact a [system](https://en.wikipedia.org/wiki/System).\nSystem Runtime gives you the APIs to create the model, components and behaviors of your system.\n\n## What is a system ?\n\nA system:\n\n* is defined by a model,\n* is composed by components and\n* reacts to events with actions that we call behaviors.\n\n![Image Alt](https://designfirst.io/img/system.png)\n\n## How does System Runtime work?\n\n#### Create a system\n\nUse System Runtime APIs to create your system:\n\n```js\n// create a system\nconst system = runtime.system('system');\n\n// add some business logic in the start method\nsystem.on('start', () =\u003e console.log('Hello world !'));\n\n// run the system\nsystem.start();\n```\n\nNow you can bundle your system into a JSON object:\n\n```js\n// create a bundle\nruntime.bundle();\n```\n\nIt will return this JSON:\n```json\n{\n  \"_id\": \"154cd18d0210516\",\n  \"name\": \"system\",\n  \"description\": \"\",\n  \"version\": \"0.0.1\",\n  \"schemas\": {},\n  \"models\": {},\n  \"types\": {},\n  \"behaviors\": {\n    \"1ea9c1d5f811ae1\": {\n      \"_id\": \"1ea9c1d5f811ae1\",\n      \"component\": \"154cd18d0210516\",\n      \"state\": \"start\",\n      \"action\": \"() =\u003e console.log('Hello world !')\",\n      \"useCoreAPI\": false,\n      \"core\": false\n    }\n  },\n  \"components\": {}\n}\n```\n\n#### Install the bundle in HTML\n\nJust add a link tag in your HTML to install and start your bundle:\n\n```html\n\u003c!-- install your bundle --\u003e\n\u003clink rel=\"system\" type=\"application/json\" href=\"system.json\"\u003e\n```\n\n#### Install the bundle in Node.js\n\nJust call *install* API to install and start your bundle:\n\n```js\n// require System Runtime\nconst runtime = require('system-runtime');\n\n// install your bundle \nruntime.install('system.json');\n```\n\n## How System runtime helps you to create your system ?\n\n#### Create your system\n\nCreating a system in System Runtime is very simple, you do not have to code but just to define its model in a human readable format called [MSON](https://designfirst.io/systemruntime/documentation/docs/design-your-model.html#defining-your-model).\n\nWith [MSON](https://designfirst.io/systemruntime/documentation/docs/design-your-model.html#defining-your-model) you can define types, classes, one to one / one to many relationships and multi inheritance between classes.\n\n```js\nconst metamodel = runtime.require('metamodel');\n\n// create the Jedi schema\nmetamodel.schema('Jedi', {\n  'firstName': 'property',\n  'lastName': 'property',\n  'nickname': 'property',\n  'father': 'link',\n  'shout': 'method'\n});\n\nmetamodel.create();\n```\n\n#### Create your components\n\nOnce your model is created, you will be able to get the classes of your model and create components based on your model.\n\nBecause you have defined a model for your system, a [Dynamic Type Check](https://en.wikipedia.org/wiki/Type_system#DYNAMIC) is done on every action of your system.\n\n```js\n// get your component class\nconst Jedi = runtime.require('Jedi');\n\n// create components\nconst luke = new Jedi({\n  'firstName': 'Luke',\n  'lastName': 'Skywalker'\n});\n\nconst anakin = new Jedi({\n  'firstName': 'Anakin',\n  'lastName': 'Skywalker'\n});\n\n// add a link\nluke.father(anakin);\n\n// get the first name of luke father\nluke.father().firstName();\n```\n\n#### Manage your components \n\nAll your components are stored in System Runtime NoSQL Database. In fact, System Runtime acts as an ODM (Object-Document Mapper) to manage your components as NoSQL Documents.\n\nYou can find, create, update, delete components like you do in a NoSQL Database.\n\n```js\n// get a collection\nconst Jedi = runtime.require('db').collections().Jedi;\n\n// find components\nJedi.find({\n  'firstName': 'Luke'\n});\n\n// update components\nJedi.update({\n  'firstName': 'Anakin'\n},{\n  'nickname': 'Darth Vader'\n});\n\n// remove components\nJedi.remove({\n  'firstName': 'Anakin'\n});;\n```\n\n## What contains System Runtime ?\n\n![Image Alt](https://designfirst.io/img/archi.png)\n\n#### A metamodel\n\nSystem Runtime contains a metamodel to help you to design your model. The definition of the model is made on a JSON format called [MSON](https://designfirst.io/systemruntime/documentation/docs/design-your-model.html#defining-your-model), no code is needed. \n\nWith [MSON](https://designfirst.io/systemruntime/documentation/docs/design-your-model.html#defining-your-model) you can define types, classes, one to one / one to many relationships and multi inheritance between classes. \n\n[MSON](https://designfirst.io/systemruntime/documentation/docs/design-your-model.html#defining-your-model) is based on [UML](http://uml.org), so learning it is very easy.\n\n#### A component factory\n\nSystem Runtime uses the [Model-Driven Architecture](http://www.omg.org/mda/) approach to create classes based on your design. Use them to instantiate your components. \n\n#### A NoSQL Database\n\nSystem Runtime acts as an ODM (Object-Document Mapper) to manage your components as NoSQL Documents. \n\nSystem Runtime has a micro NoSQL Database that stores your components and you can export/import them into another System Runtime NoSQL Database. \n\nThanks to System Runtime NoSQL Database, you can compose your system with an another system.\n\n#### A workflow engine\n\nSystem Runtime checks at runtime if the signatures of invoked methods are compliant with your model. \n\nWith System Runtime your components really behave the way you designed them.\n\n## Build\n\n#### Installation\n\nClone the repository:\n\n```sh\ngit clone https://github.com/design-first/system-runtime.git\n```\n\nOnce you have cloned the repository, install the dependencies:\n\n```sh\nnpm i\n```\t \t\n\n#### Build\n\nThen build System Runtime:\n\n```sh\nnpm run build\n```\t \n\nIt will:\n*  build System Runtime core module for the server library and\n*  build System Runtime client library on **/dist** directory\n\n## Development\n\nTo start System Runtime in development mode:\n\n```sh\nnpm run dev\n```\n\nAll the modifications to the source code of System Runtime will rebuild the project.\n\n## Documentation\n\n* [Quick Start](https://designfirst.io/systemruntime/documentation/docs/quick-start.html)\n* [Guide](https://designfirst.io/systemruntime/documentation/docs/install-system-runtime.html)\n* [Examples](https://designfirst.io/systemruntime/documentation/docs/a-basic-hello-world.html)\n\n## Community\n\n* [Code of Conduct](CODE_OF_CONDUCT.md)\n* [Contributing Guidelines](CONTRIBUTING.md)\n\n## License\n\nCopyright 2026 Erwan Carriou\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License. \n\n**Do not use System Runtime if you do not believe in Equality and Diversity.**\n\n**System Runtime is not for people of hate.**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdesign-first%2Fsystem-runtime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdesign-first%2Fsystem-runtime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdesign-first%2Fsystem-runtime/lists"}