{"id":13393718,"url":"https://github.com/frintjs/frint","last_synced_at":"2025-07-25T07:34:20.997Z","repository":{"id":41583639,"uuid":"62719184","full_name":"frintjs/frint","owner":"frintjs","description":"Modular JavaScript framework for building scalable and reactive applications","archived":false,"fork":false,"pushed_at":"2018-09-22T05:41:37.000Z","size":2116,"stargazers_count":757,"open_issues_count":61,"forks_count":33,"subscribers_count":25,"default_branch":"master","last_synced_at":"2025-07-05T13:11:28.707Z","etag":null,"topics":["dependency-injection","framework","javascript","react","reactive","rxjs","vue"],"latest_commit_sha":null,"homepage":"https://frint.js.org/","language":"JavaScript","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/frintjs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-06T12:25:55.000Z","updated_at":"2025-07-02T10:44:13.000Z","dependencies_parsed_at":"2022-07-26T17:15:10.514Z","dependency_job_id":null,"html_url":"https://github.com/frintjs/frint","commit_stats":null,"previous_names":[],"tags_count":88,"template":false,"template_full_name":null,"purl":"pkg:github/frintjs/frint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frintjs%2Ffrint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frintjs%2Ffrint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frintjs%2Ffrint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frintjs%2Ffrint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/frintjs","download_url":"https://codeload.github.com/frintjs/frint/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/frintjs%2Ffrint/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266973470,"owners_count":24014701,"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-07-25T02:00:09.625Z","response_time":70,"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":["dependency-injection","framework","javascript","react","reactive","rxjs","vue"],"created_at":"2024-07-30T17:00:59.175Z","updated_at":"2025-07-25T07:34:20.971Z","avatar_url":"https://github.com/frintjs.png","language":"JavaScript","readme":"# frint\n\n[![npm](https://img.shields.io/npm/v/frint.svg)](https://www.npmjs.com/package/frint)\n[![Build Status](https://img.shields.io/travis/frintjs/frint/master.svg)](http://travis-ci.org/frintjs/frint)\n[![codecov](https://codecov.io/gh/frintjs/frint/branch/master/graph/badge.svg)](https://codecov.io/gh/frintjs/frint)\n[![NSP Status](https://nodesecurity.io/orgs/travix-international-bv/projects/a1b03b99-d210-41f8-88c5-44313d27ab6f/badge)](https://nodesecurity.io/orgs/travix-international-bv/projects/a1b03b99-d210-41f8-88c5-44313d27ab6f)\n[![Join the chat at https://gitter.im/frintjs/frint](https://badges.gitter.im/frintjs/frint.svg)](https://gitter.im/frintjs/frint)\n[![Greenkeeper](https://badges.greenkeeper.io/frintjs/frint.svg)](https://greenkeeper.io/)\n\n\u003e The modular JavaScript framework\n\nFor documentation, visit [https://frint.js.org](https://frint.js.org).\n\nKey characteristics and features include:\n\n* Gives your applications a **structure**\n* **Environment** agnostic (runs in browser, server, and CLI)\n* **Rendering** library agnostic (integrates with React, Vue, and Preact)\n* **Composable** with multiple packages as needed\n* Each package is focused on doing **one thing** only and doing it well\n* **Modular** architecture with Apps\n* Embraces **reactive programming** with RxJS\n* **Progressive** and easy to adopt in existing applications\n\nThis project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code.\nPlease report unacceptable behavior to frintjs-conduct@googlegroups.com.\n\n## Quick start\n\nInstall [`frint-cli`](https://frint.js.org/docs/packages/frint-cli/):\n\n```\n$ npm install -g frint-cli\n```\n\nInitialize an example app:\n\n```\n$ frint new my-directory --example kitchensink\n```\n\nNow you can install all the dependencies, and start the application:\n\n```\n$ cd my-directory\n$ npm install\n$ npm start\n```\n\nFind more examples [here](https://github.com/frintjs/frint/tree/master/examples).\n\n## Packages\n\nThe framework is a collection of these packages, which can be composed together on demand:\n\n| Package                            | Status                                                                               | Description |\n|------------------------------------|--------------------------------------------------------------------------------------|-------------|\n| [frint]                            | [![frint-status]][frint-package]                                                     | Base for creating Apps |\n| [frint-store]                      | [![frint-store-status]][frint-store-package]                                         | State management with reactive stores |\n| [frint-data]                       | [![frint-data-status]][frint-data-package]                                           | Reactive data modelling |\n| [frint-react]                      | [![frint-react-status]][frint-react-package]                                         | React.js integration |\n| [frint-react-server]               | [![frint-react-server-status]][frint-react-server-package]                           | Server-side rendering of Apps |\n| [frint-router]                     | [![frint-router-status]][frint-router-package]                                       | Router services for building Single Page Applications |\n| [frint-router-react]               | [![frint-router-react-status]][frint-router-react-package]                           | React components for building SPAs |\n| [frint-cli]                        | [![frint-cli-status]][frint-cli-package]                                             | CLI runner |\n| [frint-model]                      | [![frint-model-status]][frint-model-package]                                         | Use `frint-data` instead |\n\n### For library developers\n\nThese packages enable you to create packages integrating FrintJS with other rendering libraries:\n\n* [frint-component-utils]: Utils for reactive Components\n* [frint-component-handlers]: Handlers for integrating with other rendering libraries\n* [frint-router-component-handlers]: Handlers for integrating `frint-router` with other rendering libraries\n\n### Internally used\n\n* [frint-test-utils]: Internally used test utilities\n* [frint-config]: Common config for your Apps\n* [frint-compat]: Backwards compatibility for older versions\n\n[frint]: https://frint.js.org/docs/packages/frint\n[frint-store]: https://frint.js.org/docs/packages/frint-store\n[frint-model]: https://frint.js.org/docs/packages/frint-model\n[frint-data]: https://frint.js.org/docs/packages/frint-data\n[frint-react]: https://frint.js.org/docs/packages/frint-react\n[frint-react-server]: https://frint.js.org/docs/packages/frint-react-server\n[frint-router]: https://frint.js.org/docs/packages/frint-router\n[frint-router-react]: https://frint.js.org/docs/packages/frint-router-react\n[frint-cli]: https://frint.js.org/docs/packages/frint-cli\n[frint-compat]: https://frint.js.org/docs/packages/frint-compat\n[frint-component-utils]: https://frint.js.org/docs/packages/frint-component-utils\n[frint-component-handlers]: https://frint.js.org/docs/packages/frint-component-handlers\n[frint-router-component-handlers]: https://frint.js.org/docs/packages/frint-router-component-handlers\n[frint-test-utils]: https://frint.js.org/docs/packages/frint-test-utils\n[frint-config]: https://frint.js.org/docs/packages/frint-config\n\n[frint-status]: https://img.shields.io/npm/v/frint.svg\n[frint-store-status]: https://img.shields.io/npm/v/frint-store.svg\n[frint-model-status]: https://img.shields.io/badge/status-deprecated-orange.svg\n[frint-data-status]: https://img.shields.io/npm/v/frint-data.svg\n[frint-react-status]: https://img.shields.io/npm/v/frint-react.svg\n[frint-react-server-status]: https://img.shields.io/npm/v/frint-react-server.svg\n[frint-router-status]: https://img.shields.io/npm/v/frint-router.svg\n[frint-router-react-status]: https://img.shields.io/npm/v/frint-router-react.svg\n[frint-cli-status]: https://img.shields.io/npm/v/frint-cli.svg\n[frint-compat-status]: https://img.shields.io/npm/v/frint-compat.svg\n[frint-component-utils-status]: https://img.shields.io/npm/v/frint-component-utils.svg\n[frint-component-handlers-status]: https://img.shields.io/npm/v/frint-component-handlers.svg\n[frint-router-component-handlers-status]: https://img.shields.io/npm/v/frint-router-component-handlers.svg\n[frint-test-utils-status]: https://img.shields.io/npm/v/frint-test-utils.svg\n[frint-config-status]: https://img.shields.io/npm/v/frint-config.svg\n\n[frint-package]: https://npmjs.com/package/frint\n[frint-store-package]: https://npmjs.com/package/frint-store\n[frint-model-package]: https://npmjs.com/package/frint-model\n[frint-data-package]: https://npmjs.com/package/frint-data\n[frint-react-package]: https://npmjs.com/package/frint-react\n[frint-react-server-package]: https://npmjs.com/package/frint-react-server\n[frint-router-package]: https://npmjs.com/package/frint-router\n[frint-router-react-package]: https://npmjs.com/package/frint-router-react\n[frint-cli-package]: https://npmjs.com/package/frint-cli\n[frint-compat-package]: https://npmjs.com/package/frint-compat\n[frint-component-utils-package]: https://npmjs.com/package/frint-component-utils\n[frint-component-handlers-package]: https://npmjs.com/package/frint-component-handlers\n[frint-router-component-handlers-package]: https://npmjs.com/package/frint-router-component-handlers\n[frint-test-utils-package]: https://npmjs.com/package/frint-test-utils\n[frint-config-package]: https://npmjs.com/package/frint-config\n\n## Community projects\n\n* [frint-vue](https://github.com/frintjs/frint-vue): Vue.js integration\n* [frint-react-native](https://github.com/frintjs/frint-react-native): React Native integration\n\n## License\n\nMIT © [FrintJS Authors](https://github.com/frintjs/frint/graphs/contributors) and [Travix International](http://travix.com)\n","funding_links":[],"categories":["Tools","JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrintjs%2Ffrint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrintjs%2Ffrint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrintjs%2Ffrint/lists"}