{"id":13780405,"url":"https://github.com/agile-ts/agile","last_synced_at":"2025-03-29T22:30:44.726Z","repository":{"id":44754861,"uuid":"290018288","full_name":"agile-ts/agile","owner":"agile-ts","description":"🌌   Global State and Logic Library for JavaScript/Typescript applications","archived":true,"fork":false,"pushed_at":"2024-07-07T10:05:28.000Z","size":9840,"stargazers_count":95,"open_issues_count":5,"forks_count":8,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-17T06:02:31.221Z","etag":null,"topics":["agiel-ts","agile","api","functional-reactive-programming","global-state","javascript","modular","react-global-state","react-native","react-state-management","reactive","reactjs","redux-alternative","replace-redux","simple","spacy","state","state-management","typescript","vue"],"latest_commit_sha":null,"homepage":"https://agile-ts.org","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/agile-ts.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-24T19:15:27.000Z","updated_at":"2024-10-16T15:20:37.000Z","dependencies_parsed_at":"2024-08-03T18:22:22.364Z","dependency_job_id":null,"html_url":"https://github.com/agile-ts/agile","commit_stats":{"total_commits":1446,"total_committers":5,"mean_commits":289.2,"dds":0.06154910096818811,"last_synced_commit":"594bc7a87fcaebe2cf16f6dd5d095587e7050196"},"previous_names":["agile-architecture/agile"],"tags_count":161,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agile-ts%2Fagile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agile-ts%2Fagile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agile-ts%2Fagile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agile-ts%2Fagile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agile-ts","download_url":"https://codeload.github.com/agile-ts/agile/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245217905,"owners_count":20579300,"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":["agiel-ts","agile","api","functional-reactive-programming","global-state","javascript","modular","react-global-state","react-native","react-state-management","reactive","reactjs","redux-alternative","replace-redux","simple","spacy","state","state-management","typescript","vue"],"created_at":"2024-08-03T18:01:15.370Z","updated_at":"2025-03-29T22:30:39.967Z","avatar_url":"https://github.com/agile-ts.png","language":"TypeScript","funding_links":[],"categories":["List"],"sub_categories":[],"readme":"\u003e ⚠️ **No longer actively maintained**.\n\u003e\n\u003e Check out [`feature-state`](https://github.com/inbeta-group/monorepo/tree/develop/packages/feature-state)! It offers similar functionality to AgileTs but is significantly more lightweight. I've incorporated my learnings over the years, including insights from AgileTs, to create this new state management library, embracing the principle that the best code is no code :)\n\u003e\n\u003e 👉 If you face any problem feel free open an [issue](https://github.com/agile-ts/agile/issues).\n\u003e\n\u003e ❓ If you've any questions, don't hesitate to start a [discussion](https://github.com/agile-ts/agile/discussions).\n\n\u003cimg src=\"https://raw.githubusercontent.com/agile-ts/agile/master/static/header_background.png\" alt=\"AgileTs\"\u003e\n\n\u003e 🎇 **Global State and Logic Library**\n\n \u003cbr /\u003e\n\n\u003cp align=\"left\"\u003e\n \u003ca href=\"https://github.com/agile-ts/agile\"\u003e\n   \u003cimg src=\"https://img.shields.io/github/license/agile-ts/agile.svg?label=license\u0026style=flat\u0026colorA=293140\u0026colorB=4a4872\" alt=\"GitHub License\"/\u003e\n \u003c/a\u003e\n \u003ca href=\"https://npm.im/@agile-ts/core\"\u003e\n   \u003cimg src=\"https://img.shields.io/bundlephobia/min/@agile-ts/core.svg?label=bundle%20size\u0026style=flat\u0026colorA=293140\u0026colorB=4a4872\" alt=\"npm minified size\"/\u003e\n \u003c/a\u003e\n \u003ca href=\"https://npm.im/@agile-ts/core\"\u003e\n   \u003cimg src=\"https://img.shields.io/npm/dt/@agile-ts/core.svg?label=downloads\u0026style=flat\u0026colorA=293140\u0026colorB=4a4872\" alt=\"npm total downloads\"/\u003e\n \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"left\"\u003e\n \u003ca href=\"https://agile-ts.org\"\u003e\n   \u003cimg src=\"https://img.shields.io/badge/Status-Beta-green.svg\" alt=\"Status\"/\u003e\n \u003c/a\u003e\n \u003ca href=\"https://github.com/agile-ts/agile/actions?query=workflow%3ARelease\"\u003e\n   \u003cimg src=\"https://github.com/agile-ts/agile/workflows/Release/badge.svg\" alt=\"Build Status\"/\u003e\n \u003c/a\u003e\n \u003ca href=\"https://github.com/agile-ts/agile/actions?query=workflow%3A%22Test+All+Packages%22\"\u003e\n   \u003cimg src=\"https://github.com/agile-ts/agile/workflows/Test%20All%20Packages/badge.svg\" alt=\"Build Status\"/\u003e\n \u003c/a\u003e\n \u003ca href=\"https://coveralls.io/github/agile-ts/agile?branch=master\"\u003e\n   \u003cimg src=\"https://coveralls.io/repos/github/agile-ts/agile/badge.svg?branch=master\" alt=\"Coverage Badge\"/\u003e\n \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"left\"\u003e\n \u003ca href=\"https://twitter.com/intent/tweet?text=I%20just%20discovered%20AgileTs%3B%20a%20global%2C%20spacy%20and%20overall%20easy%20to%20use%20State%20Manager.%0A%60%60%60ts%0Aconst%20MY_STATE%20%3D%20App.createState(%22Hello%20stranger%22)%3B%0AMY_STATE.set(%22Hello%20friend%22)%3B%0A%60%60%60%0Ahttps%3A%2F%2Fgithub.com%2Fagile-ts%2Fagile%2F%20%0A%0A%40AgileTypescript%20%0A%23agilets%20%23statemanagement%20%23webdev%20\"\u003e\u003cimg src=\"http://randojs.com/images/tweetShield.svg\" alt=\"Tweet\" height=\"20\"/\u003e\n \u003c/a\u003e\n \u003ca href=\"https://discord.gg/T9GzreAwPH\"\u003e\n   \u003cimg src=\"https://img.shields.io/discord/795291052897992724.svg?label=\u0026logo=discord\u0026logoColor=ffffff\u0026color=7389D8\u0026labelColor=6A7EC2\" alt=\"Join Discord\"/\u003e\n \u003c/a\u003e\n\u003c/p\u003e \n\n\u003cbr /\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/agile-ts/agile/master/static/how_to_create_state_header.png\" alt=\"How to create a State?\"/\u003e\n\n```tsx\n// -- core.js ------------------------------------------\n\n// 1️⃣ Create State with the initial value \"Hello Friend!\"\nconst MY_FIRST_STATE = createState(\"Hello Friend!\");\n\n\n// -- MyComponent.whatever ------------------------------------------\n\n// 2️⃣ Bind initialized State to the desired UI-Component.\n// And wolla, the Component is reactive. \n// Everytime the State mutates the Component re-renders.\nconst myFirstState = useAgile(MY_FIRST_STATE);\nconsole.log(myFirstState); // Returns \"Hello Friend!\"\n```\nWant to learn how to implement AgileTs in your preferred UI-Framework?\nCheck out our [Quick Start Guides](https://agile-ts.org/docs/Installation.md).\n\n### ⛳️ Sandbox\nTest AgileTs yourself in a [codesandbox](https://codesandbox.io/s/agilets-first-state-f12cz).\nIt's only one click away. Just select your preferred Framework below.\n\n- [React](https://codesandbox.io/s/agilets-first-state-f12cz)\n- [React-Native](https://snack.expo.io/@bennodev/agilets-first-state)\n- [Vue](https://codesandbox.io/s/agilets-first-state-i5xxs)\n- Svelte (coming soon)\n\nMore examples can be found in the [Example section](https://agile-ts.org/docs/examples).\n\n\n\u003cbr /\u003e\n\n\n\u003cbr /\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/agile-ts/agile/master/static/why_should_i_use_agile.png\" alt=\"Why should I use AgileTs?\"/\u003e\n\nAgileTs is an atom based global State and Logic Library implemented in Typescript.\nIt offers a reimagined API that focuses on **developer experience**\nand allows you to **easily** and **flexible** manage your application States.\nBesides [States](https://agile-ts.org/docs/core/state),\nAgileTs offers some other powerful APIs that make your life easier,\nsuch as [Collections](https://agile-ts.org/docs/core/collection)\nand [Computed States](https://agile-ts.org/docs/core/computed).\nThe philosophy behind AgileTs is simple:\n\n### 🚅 Straightforward\n\nWrite minimalistic, boilerplate-free code that captures your intent.\n```ts\n// Create State with the inital value 'frank'\nconst MY_STATE = createState('frank');\n\n// Update the State value from 'frank' to 'jeff'\nMY_STATE.set('jeff');\n\n// Undo the latest State value change\nMY_STATE.undo();\n\n// Reset the State value to its initial value\nMY_STATE.reset();\n\n// Permanently store the State value in an external Storage\nMY_STATE.persist(\"storage-key\"); \n```\n\n### 🤸‍ Flexible\n\n- Works in nearly any UI-Framework (currently supported are [React](https://reactjs.org/), [React-Native](https://reactnative.dev/) and [Vue](https://vuejs.org/)).\n- Surly behaves with the workflow that suits you best.\n  No need for _reducers_, _actions_, ..\n- Has **0** external dependencies.\n\n### ⛳️ Centralize\n\nAgileTs is designed to take all business logic out of the UI-Components\nand put them in a central place, often called `core`.\nThe advantage of keeping logic separate to UI-Components,\nis that your code is more decoupled, portable, scalable,\nand above all, easily testable.\n\nYou can learn more about ways to centralize your application logic with AgileTs\nin our [Style Guides](https://agile-ts.org/docs/style-guide).\n\n### 🎯 Easy to Use\n\nLearn the powerful tools of AgileTs in a short period of time.\nAn excellent place to start are our [Quick Start Guides](https://agile-ts.org/docs/Installation),\nor if you don't like to follow tutorials,\nyou can jump straight into the [Example section](https://agile-ts.org/docs/examples/Introduction).\n\n\n\u003cbr /\u003e\n\n\n\u003cbr /\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/agile-ts/agile/master/static/installation_header.png\" alt=\"Installation\"/\u003e\n\nIn order to use AgileTs in a UI-Framework, we need to install **two packages**.\n\n- The [`core`](https://agile-ts.org/docs/core) package contains the State Management Logic of AgileTs\n  and therefore provides powerful classes like the [`State Class`](https://agile-ts.org/docs/core/state).\n  ```\n  npm install @agile-ts/core\n  ```\n\n- A _fitting Integration_ for the UI-Framework of your choice, on the other hand,\n  is an interface to the actual UI and provides useful functionalities \n  to bind States to UI-Components for reactivity.\n  I prefer React, so let's go with the [React Integration](https://www.npmjs.com/package/@agile-ts/react) for now.\n  ```\n  npm install @agile-ts/react\n  ```\n\n\n\u003cbr /\u003e\n\n\n\u003cbr /\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/agile-ts/agile/master/static/documentation_header.png\" alt=\"Documentation\"/\u003e\n\nDoes AgileTs sound interesting to you?\nTake a look at our **[documentation](https://agile-ts.org/docs/introduction)**, \nto learn more about its functionalities and capabilities.\nIf you have any further questions, \nfeel free to join our [Community Discord](https://discord.gg/T9GzreAwPH).\nWe will be happy to help you.\n\n- Overview\n  - [Introduction](https://agile-ts.org/docs/introduction/)\n  - [Installation](https://agile-ts.org/docs/installation)  \n  - [Style Guides](https://agile-ts.org/docs/style-guide)\n  - [Supported Frameworks](https://agile-ts.org/docs/frameworks)\n  - [Contributing](https://agile-ts.org/docs/contributing)\n- Quick Start\n  - [React](https://agile-ts.org/docs/quick-start/react)\n  - [Vue](https://agile-ts.org/docs/quick-start/vue)\n- Packages\n  - [core](https://agile-ts.org/docs/core)\n    - [Agile Instance](https://agile-ts.org/docs/core/agile-instance)\n    - [State](https://agile-ts.org/docs/core/state)\n    - [Collection](https://agile-ts.org/docs/core/collection)\n    - [Computed](https://agile-ts.org/docs/core/computed)\n    - [Storage](https://agile-ts.org/docs/core/storage)\n    - [Integration](https://agile-ts.org/docs/core/integration)\n  - [react](https://agile-ts.org/docs/react)\n    - [React Hooks](https://agile-ts.org/docs/react/hooks)\n    - [AgileHOC](https://agile-ts.org/docs/react/AgileHOC)\n- Examples\n  - [React](https://agile-ts.org/docs/examples/react)\n  - [React-Native](https://agile-ts.org/docs/examples/react-native)  \n  - [Vue](https://agile-ts.org/docs/examples/vue)\n- [Typescript Interfaces](https://agile-ts.org/docs/interfaces)  \n\n\n\u003cbr /\u003e\n\n\n\u003cbr /\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/agile-ts/agile/master/static/contribute_header.png\" alt=\"Contribute\"/\u003e\n\nGet a part of AgileTs and start contributing. We welcome any meaningful contribution. 😀\nTo find out more about contributing, check out the [CONTRIBUTING.md](https://github.com/agile-ts/agile/blob/master/CONTRIBUTING.md).\n\n\u003ca href=\"https://codeclimate.com/github/agile-ts/agile/coverage.svg\"\u003e\n   \u003cimg src=\"https://codeclimate.com/github/agile-ts/agile/badges/gpa.svg\" alt=\"Maintainability\"/\u003e\n\u003c/a\u003e\n\n### ♥️ Contributors \n\n\u003ca href=\"https://github.com/agile-ts/agile/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=agile-ts/agile\" /\u003e\n\u003c/a\u003e\n\n[Become a contributor](https://github.com/agile-ts/agile/blob/master/CONTRIBUTING.md)\n\n\n\u003cbr /\u003e\n\n\n\u003cbr /\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/agile-ts/agile/master/static/packages_of_agile.png\" alt=\"Packages of Agile\"/\u003e\n\n| Name                                                                     |                                                                               Latest Version                                                                                | Description                                 |\n| ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- |\n| [@agile-ts/core](/packages/core)                                         |               [![badge](https://img.shields.io/npm/v/@agile-ts/core.svg?style=flat-square)](https://www.npmjs.com/package/@agile-ts/core)                                   | State Manager Logic                         |\n| [@agile-ts/react](/packages/react)                                       |               [![badge](https://img.shields.io/npm/v/@agile-ts/react.svg?style=flat-square)](https://www.npmjs.com/package/@agile-ts/react)                                 | React Integration                           |\n| [@agile-ts/vue](/packages/vue)                                           |               [![badge](https://img.shields.io/npm/v/@agile-ts/vue.svg?style=flat-square)](https://www.npmjs.com/package/@agile-ts/vue)                                     | Vue Integration                             |\n| [@agile-ts/api](/packages/api)                                           |               [![badge](https://img.shields.io/npm/v/@agile-ts/api.svg?style=flat-square)](https://www.npmjs.com/package/@agile-ts/api)                                     | Promise based API                           |\n| [@agile-ts/multieditor](/packages/multieditor)                           |               [![badge](https://img.shields.io/npm/v/@agile-ts/multieditor.svg?style=flat-square)](https://www.npmjs.com/package/@agile-ts/multieditor)                     | Simple Form Manager                         |\n| [@agile-ts/event](/packages/event)                                       |               [![badge](https://img.shields.io/npm/v/@agile-ts/event.svg?style=flat-square)](https://www.npmjs.com/package/@agile-ts/event)                                 | Handy class for emitting UI Events          |\n| [@agile-ts/logger](/packages/logger)                                     |               [![badge](https://img.shields.io/npm/v/@agile-ts/logger.svg?style=flat-square)](https://www.npmjs.com/package/@agile-ts/logger)                               | Logging API of AgileTs                      |\n| [@agile-ts/utils](/packages/utils)                                       |               [![badge](https://img.shields.io/npm/v/@agile-ts/utils.svg?style=flat-square)](https://www.npmjs.com/package/@agile-ts/utils)                                 | Utilities of AgileTs                        |\n| [@agile-ts/proxytree](/packages/proxytree)                               |               [![badge](https://img.shields.io/npm/v/@agile-ts/proxytree.svg?style=flat-square)](https://www.npmjs.com/package/@agile-ts/proxytree)                         | Proxy Tree for tracking accessed properties |                         |\n\n\u003cbr /\u003e\n\n\n\u003cbr /\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/agile-ts/agile/master/static/credits_header.png\" alt=\"Credits\"/\u003e\n\nAgileTs is inspired by [MVVM Libraries](https://de.wikipedia.org/wiki/Model_View_ViewModel) \nlike [MobX](https://mobx.js.org/README.html) and [PulseJs](https://github.com/pulse-framework/pulse).\n\n### 🕐 Time spent building this project\n[![wakatime](https://wakatime.com/badge/user/aa5a8ce7-1c57-4f26-a159-ea57ec5ea7c1/project/6d1a7308-89b1-4e95-9623-64c0c6116d0a.svg)](https://wakatime.com/badge/user/aa5a8ce7-1c57-4f26-a159-ea57ec5ea7c1/project/6d1a7308-89b1-4e95-9623-64c0c6116d0a)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagile-ts%2Fagile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagile-ts%2Fagile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagile-ts%2Fagile/lists"}