{"id":17233889,"url":"https://github.com/caseywebdev/pave","last_synced_at":"2025-04-14T02:31:25.315Z","repository":{"id":65350790,"uuid":"51798108","full_name":"caseywebdev/pave","owner":"caseywebdev","description":"Paving the way to better state management.","archived":false,"fork":false,"pushed_at":"2025-03-10T16:53:57.000Z","size":582,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-03-27T16:40:52.120Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/caseywebdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"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":"2016-02-16T01:18:41.000Z","updated_at":"2025-03-10T16:54:00.000Z","dependencies_parsed_at":"2024-07-26T16:12:11.739Z","dependency_job_id":null,"html_url":"https://github.com/caseywebdev/pave","commit_stats":null,"previous_names":[],"tags_count":164,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caseywebdev%2Fpave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caseywebdev%2Fpave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caseywebdev%2Fpave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caseywebdev%2Fpave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caseywebdev","download_url":"https://codeload.github.com/caseywebdev/pave/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248810883,"owners_count":21165195,"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":[],"created_at":"2024-10-15T05:27:06.943Z","updated_at":"2025-04-14T02:31:22.808Z","avatar_url":"https://github.com/caseywebdev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pave\nPaving the way to better state management.\n\n## Why?\n\nPave is a data layer inspired by [Relay], [GraphQL], [Falcor] and [Om (next)].\nPave attempts to take the best pieces of each (subjectively) and expose a simple\nAPI that makes managing app state much easier.\n\n## Goals\n\n- **Performance**\u003cbr\u003e\n  The core of any data layer will have many hot paths and should run\n  efficiently.\n\n- **Flexible Schema**\u003cbr\u003e\n  There is no requirement that your data is strictly typed,\n  but you can add constraints on inputs and outputs as you see fit.\n\n- **POJO**\u003cbr\u003e\n  All data is represented as JSON-friendly Plain Ol' JavaScript\n  Objects so there is no need to worry about how to serialize `X` and how to\n  deserialize `Y`. There are no classes in Pave.\n\n- **Multiple Remotes**\u003cbr\u003e\n  Create a client side schema to use Pave with an existing REST API, implement a\n  Pave schema on the server or mix and match. Allowing multiple remotes both on\n  the client and server makes integrating Pave into an existing project\n  manageable.\n\n- **Immutable**\u003cbr\u003e\n  The cache accepts updates without mutating previous states. This makes\n  history tracking trivial and prohibits unexpected mutations.\n\n- **Small**\u003cbr\u003e\n  pave\u003cbr\u003e\n  [![pave](https://packagephobia.com/badge?p=pave)](https://packagephobia.com/result?p=pave)\n\n  graphql\u003cbr\u003e\n  [![pave](https://packagephobia.com/badge?p=graphql)](https://packagephobia.com/result?p=graphql)\n\n  falcor\u003cbr\u003e\n  [![pave](https://packagephobia.com/badge?p=falcor)](https://packagephobia.com/result?p=falcor)\n\n  react-relay\u003cbr\u003e\n  [![pave](https://packagephobia.com/badge?p=react-relay)](https://packagephobia.com/result?p=react-relay)\n\n  @apollo/client\u003cbr\u003e\n  [![pave](https://packagephobia.com/badge?p=@apollo/client)](https://packagephobia.com/result?p=@apollo/client)\n\n## Install\n\n```bash\nnpm install pave\n```\n\n[Falcor]: https://github.com/netflix/falcor\n[GraphQL]: https://github.com/facebook/graphql\n[Om (next)]: https://github.com/omcljs/om\n[Relay]: https://github.com/facebook/relay\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaseywebdev%2Fpave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaseywebdev%2Fpave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaseywebdev%2Fpave/lists"}