{"id":13338741,"url":"https://github.com/0xLeif/AppState","last_synced_at":"2025-03-11T10:31:53.714Z","repository":{"id":205214325,"uuid":"713148692","full_name":"0xLeif/AppState","owner":"0xLeif","description":"🧠 Effortless State Management and Dependency Injection for Swift 6 Applications","archived":false,"fork":false,"pushed_at":"2024-11-01T23:58:01.000Z","size":269,"stargazers_count":86,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-28T14:17:22.547Z","etag":null,"topics":["apple","dependency-injection","ios","linux","macos","observable","property-wrapper","published","sendable","state","state-management","swift","swift-on-server","swiftui","tvos","ubuntu","visionos","watchos","windows"],"latest_commit_sha":null,"homepage":"https://0xleif.github.io/AppState/","language":"Swift","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/0xLeif.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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},"funding":{"github":["0xLeif"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2023-11-01T23:55:56.000Z","updated_at":"2025-02-11T22:22:33.000Z","dependencies_parsed_at":"2024-04-19T01:41:03.692Z","dependency_job_id":"cf3d66aa-e076-4473-abe6-419f3707b3a0","html_url":"https://github.com/0xLeif/AppState","commit_stats":{"total_commits":88,"total_committers":2,"mean_commits":44.0,"dds":"0.011363636363636354","last_synced_commit":"c4fc9e1871c0faf7a78d5577b5ff748f8e0e953f"},"previous_names":["0xleif/appstate"],"tags_count":45,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xLeif%2FAppState","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xLeif%2FAppState/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xLeif%2FAppState/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xLeif%2FAppState/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0xLeif","download_url":"https://codeload.github.com/0xLeif/AppState/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243015443,"owners_count":20222082,"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":["apple","dependency-injection","ios","linux","macos","observable","property-wrapper","published","sendable","state","state-management","swift","swift-on-server","swiftui","tvos","ubuntu","visionos","watchos","windows"],"created_at":"2024-07-29T19:17:08.991Z","updated_at":"2025-03-11T10:31:52.399Z","avatar_url":"https://github.com/0xLeif.png","language":"Swift","funding_links":["https://github.com/sponsors/0xLeif"],"categories":["Open Source"],"sub_categories":["Libraries"],"readme":"# AppState\n\n[![macOS Build](https://img.shields.io/github/actions/workflow/status/0xLeif/AppState/macOS.yml?label=macOS\u0026branch=main)](https://github.com/0xLeif/AppState/actions/workflows/macOS.yml)\n[![Ubuntu Build](https://img.shields.io/github/actions/workflow/status/0xLeif/AppState/ubuntu.yml?label=Ubuntu\u0026branch=main)](https://github.com/0xLeif/AppState/actions/workflows/ubuntu.yml)\n[![Windows Build](https://img.shields.io/github/actions/workflow/status/0xLeif/AppState/windows.yml?label=Windows\u0026branch=main)](https://github.com/0xLeif/AppState/actions/workflows/windows.yml)\n[![License](https://img.shields.io/github/license/0xLeif/AppState)](https://github.com/0xLeif/AppState/blob/main/LICENSE)\n[![Version](https://img.shields.io/github/v/release/0xLeif/AppState)](https://github.com/0xLeif/AppState/releases)\n\n**AppState** is a Swift 6 library designed to simplify the management of application state in a thread-safe, type-safe, and SwiftUI-friendly way. It provides a set of tools to centralize and synchronize state across your application, as well as inject dependencies into various parts of your app.\n\n## Requirements\n\n- **iOS**: 15.0+\n- **watchOS**: 8.0+\n- **macOS**: 11.0+\n- **tvOS**: 15.0+\n- **visionOS**: 1.0+\n- **Swift**: 6.0+\n- **Xcode**: 16.0+\n  \n**Non-Apple Platform Support**: Linux \u0026 Windows\n\n\u003e 🍎 Features marked with this symbol are specific to Apple platforms, as they rely on Apple technologies such as iCloud and the Keychain.\n\n## Key Features\n\n**AppState** includes several powerful features to help manage state and dependencies:\n\n- **State**: Centralized state management that allows you to encapsulate and broadcast changes across the app.\n- **StoredState**: Persistent state using `UserDefaults`, ideal for saving small amounts of data between app launches.\n- **FileState**: Persistent state stored using `FileManager`, useful for storing larger amounts of data securely on disk.\n- 🍎 **SyncState**: Synchronize state across multiple devices using iCloud, ensuring consistency in user preferences and settings.\n- 🍎 **SecureState**: Store sensitive data securely using the Keychain, protecting user information such as tokens or passwords.\n- **Dependency Management**: Inject dependencies like network services or database clients across your app for better modularity and testing.\n- **Slicing**: Access specific parts of a state or dependency for granular control without needing to manage the entire application state.\n\n## Getting Started\n\nTo integrate **AppState** into your Swift project, you’ll need to use the Swift Package Manager. Follow the [Installation Guide](documentation/installation.md) for detailed instructions on setting up **AppState**.\n\nAfter installation, refer to the [Usage Overview](documentation/usage-overview.md) for a quick introduction on how to manage state and inject dependencies into your project.\n\n## Documentation\n\nHere’s a detailed breakdown of **AppState**'s documentation:\n\n- [Installation Guide](documentation/installation.md): How to add **AppState** to your project using Swift Package Manager.\n- [Usage Overview](documentation/usage-overview.md): An overview of key features with example implementations.\n  \n### Detailed Usage Guides:\n\n- [State and Dependency Management](documentation/usage-state-dependency.md): Centralize state and inject dependencies throughout your app.\n- [Slicing State](documentation/usage-slice.md): Access and modify specific parts of the state.\n- [StoredState Usage Guide](documentation/usage-storedstate.md): How to persist lightweight data using `StoredState`.\n- [FileState Usage Guide](documentation/usage-filestate.md): Learn how to persist larger amounts of data securely on disk.\n- [Keychain SecureState Usage](documentation/usage-securestate.md): Store sensitive data securely using the Keychain.\n- [iCloud Syncing with SyncState](documentation/usage-syncstate.md): Keep state synchronized across devices using iCloud.\n\n## Contributing\n\nWe welcome contributions! Please check out our [Contributing Guide](documentation/contributing.md) for how to get involved.\n\n## Next Steps\n\nWith **AppState** installed, you can start exploring its key features by checking out the [Usage Overview](documentation/usage-overview.md) and more detailed guides. Get started with managing state and dependencies effectively in your Swift projects! For more advanced usage techniques, like Just-In-Time creation and preloading dependencies, see the [Advanced Usage Guide](documentation/advanced-usage.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xLeif%2FAppState","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0xLeif%2FAppState","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xLeif%2FAppState/lists"}