Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 20 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
[![License](https://img.shields.io/github/license/0xLeif/AppState)](https://github.com/0xLeif/AppState/blob/main/LICENSE)
[![Version](https://img.shields.io/github/v/release/0xLeif/AppState)](https://github.com/0xLeif/AppState/releases)

Read this in other languages: [Simplified Chinese](documentation/README.zh-CN.md) | [Spanish](documentation/README.es.md) | [French](documentation/README.fr.md) | [Hindi](documentation/README.hi.md) | [Portuguese](documentation/README.pt.md) | [Russian](documentation/README.ru.md) | [German](documentation/README.de.md)

**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.

## Requirements
Expand Down Expand Up @@ -38,9 +40,9 @@

## Getting Started

To 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**.
To integrate **AppState** into your Swift project, you’ll need to use the Swift Package Manager. Follow the [Installation Guide](documentation/en/installation.md) for detailed instructions on setting up **AppState**.

After 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.
After installation, refer to the [Usage Overview](documentation/en/usage-overview.md) for a quick introduction on how to manage state and inject dependencies into your project.

## Quick Example

Expand Down Expand Up @@ -74,28 +76,28 @@ This snippet demonstrates defining a state value in an `Application` extension a

Here’s a detailed breakdown of **AppState**'s documentation:

- [Installation Guide](documentation/installation.md): How to add **AppState** to your project using Swift Package Manager.
- [Usage Overview](documentation/usage-overview.md): An overview of key features with example implementations.
- [Installation Guide](documentation/en/installation.md): How to add **AppState** to your project using Swift Package Manager.
- [Usage Overview](documentation/en/usage-overview.md): An overview of key features with example implementations.

### Detailed Usage Guides:

- [State and Dependency Management](documentation/usage-state-dependency.md): Centralize state and inject dependencies throughout your app.
- [Slicing State](documentation/usage-slice.md): Access and modify specific parts of the state.
- [StoredState Usage Guide](documentation/usage-storedstate.md): How to persist lightweight data using `StoredState`.
- [FileState Usage Guide](documentation/usage-filestate.md): Learn how to persist larger amounts of data securely on disk.
- [Keychain SecureState Usage](documentation/usage-securestate.md): Store sensitive data securely using the Keychain.
- [iCloud Syncing with SyncState](documentation/usage-syncstate.md): Keep state synchronized across devices using iCloud.
- [FAQ](documentation/faq.md): Answers to common questions when using **AppState**.
- [Constant Usage Guide](documentation/usage-constant.md): Access read-only values from your state.
- [ObservedDependency Usage Guide](documentation/usage-observeddependency.md): Work with `ObservableObject` dependencies in your views.
- [Advanced Usage](documentation/advanced-usage.md): Techniques like just‑in‑time creation and preloading dependencies.
- [Best Practices](documentation/best-practices.md): Tips for structuring your app’s state effectively.
- [Migration Considerations](documentation/migration-considerations.md): Guidance when updating persisted models.
- [State and Dependency Management](documentation/en/usage-state-dependency.md): Centralize state and inject dependencies throughout your app.
- [Slicing State](documentation/en/usage-slice.md): Access and modify specific parts of the state.
- [StoredState Usage Guide](documentation/en/usage-storedstate.md): How to persist lightweight data using `StoredState`.
- [FileState Usage Guide](documentation/en/usage-filestate.md): Learn how to persist larger amounts of data securely on disk.
- [Keychain SecureState Usage](documentation/en/usage-securestate.md): Store sensitive data securely using the Keychain.
- [iCloud Syncing with SyncState](documentation/en/usage-syncstate.md): Keep state synchronized across devices using iCloud.
- [FAQ](documentation/en/faq.md): Answers to common questions when using **AppState**.
- [Constant Usage Guide](documentation/en/usage-constant.md): Access read-only values from your state.
- [ObservedDependency Usage Guide](documentation/en/usage-observeddependency.md): Work with `ObservableObject` dependencies in your views.
- [Advanced Usage](documentation/en/advanced-usage.md): Techniques like just‑in‑time creation and preloading dependencies.
- [Best Practices](documentation/en/best-practices.md): Tips for structuring your app’s state effectively.
- [Migration Considerations](documentation/en/migration-considerations.md): Guidance when updating persisted models.

## Contributing

We welcome contributions! Please check out our [Contributing Guide](documentation/contributing.md) for how to get involved.
We welcome contributions! Please check out our [Contributing Guide](documentation/en/contributing.md) for how to get involved.

## Next Steps

With **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). You can also review the [Constant](documentation/usage-constant.md) and [ObservedDependency](documentation/usage-observeddependency.md) guides for additional features.
With **AppState** installed, you can start exploring its key features by checking out the [Usage Overview](documentation/en/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/en/advanced-usage.md). You can also review the [Constant](documentation/en/usage-constant.md) and [ObservedDependency](documentation/en/usage-observeddependency.md) guides for additional features.
101 changes: 101 additions & 0 deletions documentation/README.de.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# AppState

[![macOS Build](https://img.shields.io/github/actions/workflow/status/0xLeif/AppState/macOS.yml?label=macOS&branch=main)](https://github.com/0xLeif/AppState/actions/workflows/macOS.yml)
[![Ubuntu Build](https://img.shields.io/github/actions/workflow/status/0xLeif/AppState/ubuntu.yml?label=Ubuntu&branch=main)](https://github.com/0xLeif/AppState/actions/workflows/ubuntu.yml)
[![Windows Build](https://img.shields.io/github/actions/workflow/status/0xLeif/AppState/windows.yml?label=Windows&branch=main)](https://github.com/0xLeif/AppState/actions/workflows/windows.yml)
[![License](https://img.shields.io/github/license/0xLeif/AppState)](https://github.com/0xLeif/AppState/blob/main/LICENSE)
[![Version](https://img.shields.io/github/v/release/0xLeif/AppState)](https://github.com/0xLeif/AppState/releases)

**AppState** ist eine Swift 6-Bibliothek, die entwickelt wurde, um die Verwaltung des Anwendungszustands auf eine threadsichere, typsichere und SwiftUI-freundliche Weise zu vereinfachen. Sie bietet eine Reihe von Werkzeugen, um den Zustand in Ihrer gesamten Anwendung zu zentralisieren und zu synchronisieren sowie Abhängigkeiten in verschiedene Teile Ihrer App zu injizieren.

## Anforderungen

- **iOS**: 15.0+
- **watchOS**: 8.0+
- **macOS**: 11.0+
- **tvOS**: 15.0+
- **visionOS**: 1.0+
- **Swift**: 6.0+
- **Xcode**: 16.0+

**Unterstützung für Nicht-Apple-Plattformen**: Linux & Windows

> 🍎 Mit diesem Symbol gekennzeichnete Funktionen sind spezifisch für Apple-Plattformen, da sie auf Apple-Technologien wie iCloud und dem Schlüsselbund basieren.

## Hauptmerkmale

**AppState** enthält mehrere leistungsstarke Funktionen zur Verwaltung von Zustand und Abhängigkeiten:

- **State**: Zentralisierte Zustandsverwaltung, die es Ihnen ermöglicht, Änderungen in der gesamten App zu kapseln und zu übertragen.
- **StoredState**: Persistenter Zustand mit `UserDefaults`, ideal zum Speichern kleiner Datenmengen zwischen App-Starts.
- **FileState**: Persistenter Zustand, der mit `FileManager` gespeichert wird und nützlich ist, um größere Datenmengen sicher auf der Festplatte zu speichern.
- 🍎 **SyncState**: Synchronisieren Sie den Zustand über mehrere Geräte mit iCloud und stellen Sie die Konsistenz der Benutzereinstellungen sicher.
- 🍎 **SecureState**: Speichern Sie sensible Daten sicher mit dem Schlüsselbund und schützen Sie Benutzerinformationen wie Token oder Passwörter.
- **Abhängigkeitsmanagement**: Injizieren Sie Abhängigkeiten wie Netzwerkdienste oder Datenbankclients in Ihre gesamte App für eine bessere Modularität und Testbarkeit.
- **Slicing**: Greifen Sie auf bestimmte Teile eines Zustands oder einer Abhängigkeit zu, um eine granulare Kontrolle zu erhalten, ohne den gesamten Anwendungszustand verwalten zu müssen.
- **Constants**: Greifen Sie auf schreibgeschützte Teile Ihres Zustands zu, wenn Sie unveränderliche Werte benötigen.
- **Observed Dependencies**: Beobachten Sie `ObservableObject`-Abhängigkeiten, damit Ihre Ansichten aktualisiert werden, wenn sie sich ändern.

## Erste Schritte

Um **AppState** in Ihr Swift-Projekt zu integrieren, müssen Sie den Swift Package Manager verwenden. Befolgen Sie die [Installationsanleitung](de/installation.md) für detaillierte Anweisungen zur Einrichtung von **AppState**.

Nach der Installation finden Sie in der [Verwendungsübersicht](de/usage-overview.md) eine kurze Einführung in die Verwaltung des Zustands und die Injektion von Abhängigkeiten in Ihr Projekt.

## Schnelles Beispiel

Unten sehen Sie ein minimales Beispiel, das zeigt, wie man einen Zustandsausschnitt definiert und von einer SwiftUI-Ansicht darauf zugreift:

```swift
import AppState
import SwiftUI

private extension Application {
var counter: State<Int> {
state(initial: 0)
}
}

struct ContentView: View {
@AppState(\.counter) var counter: Int

var body: some View {
VStack {
Text("Zähler: \(counter)")
Button("Inkrementieren") { counter += 1 }
}
}
}
```

Dieser Ausschnitt zeigt, wie man einen Zustandswert in einer `Application`-Erweiterung definiert und den `@AppState`-Property-Wrapper verwendet, um ihn in einer Ansicht zu binden.

## Dokumentation

Hier ist eine detaillierte Aufschlüsselung der Dokumentation von **AppState**:

- [Installationsanleitung](de/installation.md): So fügen Sie **AppState** mit dem Swift Package Manager zu Ihrem Projekt hinzu.
- [Verwendungsübersicht](de/usage-overview.md): Eine Übersicht über die wichtigsten Funktionen mit Beispielimplementierungen.

### Detaillierte Verwendungsanleitungen:

- [Zustands- und Abhängigkeitsmanagement](de/usage-state-dependency.md): Zentralisieren Sie den Zustand und injizieren Sie Abhängigkeiten in Ihrer gesamten App.
- [Zustand slicen](de/usage-slice.md): Greifen Sie auf bestimmte Teile des Zustands zu und ändern Sie sie.
- [StoredState-Verwendungsanleitung](de/usage-storedstate.md): So persistieren Sie leichtgewichtige Daten mit `StoredState`.
- [FileState-Verwendungsanleitung](de/usage-filestate.md): Erfahren Sie, wie Sie größere Datenmengen sicher auf der Festplatte persistieren.
- [SecureState mit Schlüsselbund verwenden](de/usage-securestate.md): Speichern Sie sensible Daten sicher mit dem Schlüsselbund.
- [iCloud-Synchronisierung mit SyncState](de/usage-syncstate.md): Halten Sie den Zustand über Geräte hinweg mit iCloud synchron.
- [FAQ](de/faq.md): Antworten auf häufig gestellte Fragen zur Verwendung von **AppState**.
- [Konstanten-Verwendungsanleitung](de/usage-constant.md): Greifen Sie auf schreibgeschützte Werte aus Ihrem Zustand zu.
- [ObservedDependency-Verwendungsanleitung](de/usage-observeddependency.md): Arbeiten Sie mit `ObservableObject`-Abhängigkeiten in Ihren Ansichten.
- [Erweiterte Verwendung](de/advanced-usage.md): Techniken wie Just-in-Time-Erstellung und Vorabladen von Abhängigkeiten.
- [Beste Praktiken](de/best-practices.md): Tipps zur effektiven Strukturierung des Zustands Ihrer App.
- [Überlegungen zur Migration](de/migration-considerations.md): Anleitung zur Aktualisierung persistierter Modelle.

## Mitwirken

Wir freuen uns über Beiträge! Bitte lesen Sie unsere [Anleitung für Mitwirkende](de/contributing.md), um zu erfahren, wie Sie sich beteiligen können.

## Nächste Schritte

Nach der Installation von **AppState** können Sie die wichtigsten Funktionen erkunden, indem Sie sich die [Verwendungsübersicht](de/usage-overview.md) und detailliertere Anleitungen ansehen. Beginnen Sie mit der effektiven Verwaltung von Zustand und Abhängigkeiten in Ihren Swift-Projekten! Für fortgeschrittenere Verwendungstechniken wie die Just-In-Time-Erstellung und das Vorabladen von Abhängigkeiten siehe die [Anleitung zur erweiterten Verwendung](de/advanced-usage.md). Sie können auch die Anleitungen zu [Konstanten](de/usage-constant.md) und [ObservedDependency](de/usage-observeddependency.md) für zusätzliche Funktionen einsehen.
Loading
Loading