{"id":13452531,"url":"https://github.com/kamilkisiela/loona","last_synced_at":"2025-03-23T19:34:32.466Z","repository":{"id":57123801,"uuid":"133176877","full_name":"kamilkisiela/loona","owner":"kamilkisiela","description":"🌕 Application State Management done with GraphQL","archived":true,"fork":false,"pushed_at":"2020-10-26T03:03:28.000Z","size":3906,"stargazers_count":265,"open_issues_count":43,"forks_count":14,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-10-17T17:15:16.091Z","etag":null,"topics":["angular","apollographql","flux","graphql","loona","react","redux","state-management","typescript"],"latest_commit_sha":null,"homepage":"https://loonajs.com","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/kamilkisiela.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-05-12T19:23:45.000Z","updated_at":"2024-05-24T10:09:44.000Z","dependencies_parsed_at":"2022-08-28T00:35:34.473Z","dependency_job_id":null,"html_url":"https://github.com/kamilkisiela/loona","commit_stats":null,"previous_names":["kamilkisiela/luna"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilkisiela%2Floona","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilkisiela%2Floona/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilkisiela%2Floona/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamilkisiela%2Floona/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kamilkisiela","download_url":"https://codeload.github.com/kamilkisiela/loona/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221624710,"owners_count":16853831,"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":["angular","apollographql","flux","graphql","loona","react","redux","state-management","typescript"],"created_at":"2024-07-31T07:01:26.719Z","updated_at":"2024-10-28T18:31:28.645Z","avatar_url":"https://github.com/kamilkisiela.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003ca href=\"https://loonajs.com\"\u003e\u003cimg src=\"https://loonajs.com/img/logo-big.png\" alt=\"Loona\" height=\"70px\"\u003e\u003c/a\u003e\u003c/p\u003e\n\n[![CircleCI](https://circleci.com/gh/kamilkisiela/loona.svg?style=shield)](https://circleci.com/gh/kamilkisiela/loona) [![Join the community on Spectrum](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/loona/join/l7IDRJF5T)\n\n**Loona is a state management library built on top of Apollo Client.** It brings the simplicity of managing remote data with Apollo, to your local state. Instead of maintaining a second store for your local data with tools like Redux, MobX or NGRX, use Loona to **keep data in just one space and make it a single source of truth**.\n\nWith Loona you get all the benefits of Apollo, like caching, offline persistence and more. On top of that you gain all the other benefits like stream of actions, better sepatation between mutation and store updates.\n\n## UI Frameworks\n\nLoona works with [**React**](./packages/react/README.md) and [**Angular**](./packages/angular/README.md):\n\n- [`@loona/angular`](https://npmjs.org/package/@loona/angular)\n- [`@loona/react`](https://npmjs.org/package/@loona/react)\n\n## Documentation\n\nAll of the documentation for Loona including usage articles and helpful recipes lives on [loonajs.com](https://loonajs.com).\n\n## Read about Loona\n\n- [Introducing Loona](https://medium.com/the-guild/loona-state-management-graphql-77baf6734f1)\n\n## Features\n\n- **Single store** - Keep your remote and local data in just one space and make it a single source of truth.\n- **Separation of concerns** - Loona helps you to keep every piece of your data flow separated.\n- **Benefits of Apollo** - You get all the benefits of Apollo, like caching, offline persistence and more.\n- **Works on Mobile** - Works out of the box with React Native and NativeScript.\n\n## Concept\n\nLoona can be described by few core concepts. First two of them are related to GraphQL:\n\n- **Queries** - ask for what you need.\n- **Mutations** - a way to modify your remote and local data.\n- **Store** - a single source of truth of all your data.\n\nIt also uses a concept of:\n\n- **Actions** - declarative way to call a mutation or trigger a different action\n- **Updates** - modify the store after a mutation happens\n\nBy having it all, Loona helps you to keep every piece of your data's flow separated.\n\n---\n\n## Contributing\n\nThis project uses Lerna.\n\nBootstraping:\n\n```bash\nyarn install\n```\n\nRunning tests locally:\n\n```bash\nyarn test\n```\n\nFormatting code:\n\n```bash\nyarn format\n```\n\nThis project uses TypeScript for static typing. You can get it built into your editor with no configuration by opening this project in [Visual Studio Code](https://code.visualstudio.com/), an open source IDE which is available for free on all platforms.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkamilkisiela%2Floona","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkamilkisiela%2Floona","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkamilkisiela%2Floona/lists"}