{"id":13393985,"url":"https://github.com/ctrlplusb/easy-peasy","last_synced_at":"2025-05-13T16:04:39.083Z","repository":{"id":38359370,"uuid":"154051159","full_name":"ctrlplusb/easy-peasy","owner":"ctrlplusb","description":"Vegetarian friendly state for React","archived":false,"fork":false,"pushed_at":"2025-04-14T13:05:59.000Z","size":9515,"stargazers_count":5041,"open_issues_count":10,"forks_count":193,"subscribers_count":32,"default_branch":"master","last_synced_at":"2025-04-29T16:49:46.432Z","etag":null,"topics":["hooks","immer","immutable","react","react-hooks","redux","state-management"],"latest_commit_sha":null,"homepage":"https://easy-peasy.dev","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/ctrlplusb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null},"funding":{"github":null,"patreon":null,"open_collective":"easy-peasy","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2018-10-21T20:52:18.000Z","updated_at":"2025-04-28T07:26:03.000Z","dependencies_parsed_at":"2023-09-29T08:54:39.784Z","dependency_job_id":"8f1e526a-1a08-47f4-9dee-3098d5d49fb7","html_url":"https://github.com/ctrlplusb/easy-peasy","commit_stats":{"total_commits":727,"total_committers":70,"mean_commits":"10.385714285714286","dds":0.1911966987620357,"last_synced_commit":"8d0e444bcc8a0bba529c81806ff4c1c01c16f75e"},"previous_names":[],"tags_count":113,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctrlplusb%2Feasy-peasy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctrlplusb%2Feasy-peasy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctrlplusb%2Feasy-peasy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctrlplusb%2Feasy-peasy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ctrlplusb","download_url":"https://codeload.github.com/ctrlplusb/easy-peasy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252590509,"owners_count":21772934,"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":["hooks","immer","immutable","react","react-hooks","redux","state-management"],"created_at":"2024-07-30T17:01:04.638Z","updated_at":"2025-05-05T22:46:29.866Z","avatar_url":"https://github.com/ctrlplusb.png","language":"JavaScript","readme":"\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\u003cp align='center'\u003e\n  \u003cimg src=\"./website/docs/assets/logo-small.png\" width=\"150\" /\u003e\n\u003c/p\u003e\n\u003cp align='center'\u003e\u003cstrong\u003eVegetarian friendly state for React\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\n[![npm](https://img.shields.io/npm/v/easy-peasy.svg?style=flat-square)](http://npm.im/easy-peasy)\n[![MIT License](https://img.shields.io/npm/l/easy-peasy.svg?style=flat-square)](http://opensource.org/licenses/MIT)\n[![Codecov](https://img.shields.io/codecov/c/github/ctrlplusb/easy-peasy.svg?style=flat-square)](https://codecov.io/github/ctrlplusb/easy-peasy)\n\n\u003cp\u003eEasy Peasy is an abstraction of Redux, providing a reimagined API that focuses on \u003cstrong\u003edeveloper experience\u003c/strong\u003e. It allows you to \u003cstrong\u003equickly\u003c/strong\u003e and \u003cstrong\u003eeasily\u003c/strong\u003e manage your state, whilst leveraging the strong \u003cstrong\u003earchitectural guarantees\u003c/strong\u003e and extensive \u003cstrong\u003eeco-system\u003c/strong\u003e that Redux has to offer.\u003c/p\u003e\n\n\u003cul\u003e\n  \u003cli\u003eZero configuration\u003c/li\u003e\n  \u003cli\u003eNo boilerplate\u003c/li\u003e\n  \u003cli\u003eReact hooks based API\u003c/li\u003e\n  \u003cli\u003eExtensive TypeScript support\u003c/li\u003e\n  \u003cli\u003eEncapsulate data fetching\u003c/li\u003e\n  \u003cli\u003eComputed properties\u003c/li\u003e\n  \u003cli\u003eReactive actions\u003c/li\u003e\n  \u003cli\u003eRedux middleware support\u003c/li\u003e\n  \u003cli\u003eState persistence\u003c/li\u003e\n  \u003cli\u003eRedux Dev Tools\u003c/li\u003e\n  \u003cli\u003eGlobal, context, or local stores\u003c/li\u003e\n  \u003cli\u003eBuilt-in testing utils\u003c/li\u003e\n  \u003cli\u003eReact Native supported\u003c/li\u003e\n  \u003cli\u003eHot reloading supported\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\nAll of this comes via a single dependency install.\n\n```\nnpm install easy-peasy\n```\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\n## Fly like an eagle 🦅\n\n**Create your store**\n\n```javascript\nconst store = createStore({\n  todos: ['Create store', 'Wrap application', 'Use store'],\n\n  addTodo: action((state, payload) =\u003e {\n    state.todos.push(payload);\n  }),\n});\n```\n\n**Wrap your application**\n\n```javascript\nfunction App() {\n  return (\n    \u003cStoreProvider store={store}\u003e\n      \u003cTodoList /\u003e\n    \u003c/StoreProvider\u003e\n  );\n}\n```\n\n**Use the store**\n\n```javascript\nfunction TodoList() {\n  const todos = useStoreState((state) =\u003e state.todos);\n  const addTodo = useStoreActions((actions) =\u003e actions.addTodo);\n  return (\n    \u003cdiv\u003e\n      {todos.map((todo, idx) =\u003e (\n        \u003cdiv key={idx}\u003e{todo}\u003c/div\u003e\n      ))}\n      \u003cAddTodo onAdd={addTodo} /\u003e\n    \u003c/div\u003e\n  );\n}\n```\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\n## Examples 📚\n\nSee the [example folder](./examples) for more examples of how to use\n`easy-peasy`.\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\n## Core Team 🛠\n\n\u003ctable\u003e\n  \u003ctr\u003e\n  \u003ctd\u003e\n    \u003ca href=\"https://github.com/no-stack-dub-sack\"\u003e\n      \u003cimg src=\"https://avatars.githubusercontent.com/u/18563015?v=4\" width=\"100px;\" alt=\"\"/\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003ePeter Weinberg\u003c/b\u003e\u003c/sub\u003e\n    \u003c/a\u003e\n  \u003c/td\u003e\n  \u003ctd\u003e\n    \u003ca href=\"https://github.com/jmyrland\"\u003e\n      \u003cimg src=\"https://avatars.githubusercontent.com/u/837651?v=5\" width=\"100px;\" alt=\"\"/\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003eJørn A. Myrland\u003c/b\u003e\u003c/sub\u003e\n    \u003c/a\u003e\n  \u003c/td\u003e\n  \u003ctd\u003e\n    \u003ca href=\"https://github.com/ctrlplusb\"\u003e\n      \u003cimg src=\"https://avatars.githubusercontent.com/u/12164768?v=4\" width=\"100px;\" alt=\"\"/\u003e\n      \u003cbr /\u003e\n      \u003csub\u003e\u003cb\u003eSean Matheson\u003c/b\u003e\u003c/sub\u003e\n    \u003c/a\u003e\n  \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\n## Our Sponsors ❤️\n\nWe have only but great appreciation to those who support this project. If you\nhave the ability to help contribute towards the continued maintenance and\nevolution of this library then please consider\n[[becoming a sponsor](https://opencollective.com/easy-peasy#backer)].\n\n\u003ca href=\"https://opencollective.com/easy-peasy#backers\"\u003e\n    \u003cimg src=\"https://opencollective.com/easy-peasy/backers.svg?width=950\" /\u003e\n\u003c/a\u003e\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\n## Documentation\n\nSee the [official website](https://easy-peasy.dev) for tutorials, docs, recipes,\nand more.\n\n\u003cp\u003e\u0026nbsp;\u003c/p\u003e\n\n## OS Awards Nominee\n\nEasy Peasy was nominated under the \"Productivity Booster\" category.\n","funding_links":["https://opencollective.com/easy-peasy"],"categories":["JavaScript","Uncategorized","Packages","Utilities","react","React [🔝](#readme)","Explanation of each State Management","目录","State Management","Marks","List"],"sub_categories":["Uncategorized","State Management","Easy-peasy","[React - A JavaScript library for building user interfaces](http://facebook.github.io/react)"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctrlplusb%2Feasy-peasy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fctrlplusb%2Feasy-peasy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctrlplusb%2Feasy-peasy/lists"}