{"id":13692686,"url":"https://github.com/reactiveui/akavache","last_synced_at":"2026-04-08T02:01:05.074Z","repository":{"id":1965698,"uuid":"2896461","full_name":"reactiveui/Akavache","owner":"reactiveui","description":"An asynchronous, persistent key-value store created for writing desktop and mobile applications, based on SQLite3. Akavache is great for both storing important data as well as cached local data that expires.","archived":false,"fork":false,"pushed_at":"2026-04-03T13:18:00.000Z","size":82407,"stargazers_count":2542,"open_issues_count":70,"forks_count":282,"subscribers_count":100,"default_branch":"main","last_synced_at":"2026-04-03T20:02:42.744Z","etag":null,"topics":["akavache","c-sharp","cache","cross-platform","dotnet","reactive-extensions","reactive-programming","xamarin"],"latest_commit_sha":null,"homepage":"https://evolve.xamarin.com/session/56e2044afd00c0253cae33a3","language":"C#","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/reactiveui.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["reactivemarbles"]}},"created_at":"2011-12-02T05:15:37.000Z","updated_at":"2026-03-30T07:51:54.000Z","dependencies_parsed_at":"2023-12-02T07:04:25.183Z","dependency_job_id":"377a290d-a88b-4a69-b86a-1552e0a76c19","html_url":"https://github.com/reactiveui/Akavache","commit_stats":{"total_commits":1431,"total_committers":61,"mean_commits":"23.459016393442624","dds":0.5220125786163522,"last_synced_commit":"8ecb41c23343ab1f162e45c55bcd6c5ea6f9fd96"},"previous_names":["github/akavache","akavache/akavache"],"tags_count":85,"template":false,"template_full_name":null,"purl":"pkg:github/reactiveui/Akavache","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactiveui%2FAkavache","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactiveui%2FAkavache/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactiveui%2FAkavache/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactiveui%2FAkavache/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reactiveui","download_url":"https://codeload.github.com/reactiveui/Akavache/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactiveui%2FAkavache/sbom","scorecard":{"id":765956,"data":{"date":"2025-08-11","repo":{"name":"github.com/reactiveui/Akavache","commit":"fe7d0961a399449acf741cc8443f2a8452163a91"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.9,"checks":[{"name":"Maintained","score":10,"reason":"14 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":6,"reason":"Found 6/9 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci-build.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci-build.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/reactiveui/Akavache/ci-build.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/lock.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/reactiveui/Akavache/lock.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/reactiveui/Akavache/release.yml/main?enable=pin","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 10.2.41 not signed: https://api.github.com/repos/reactiveui/Akavache/releases/206055508","Warn: release artifact 10.1.6 not signed: https://api.github.com/repos/reactiveui/Akavache/releases/175250221","Warn: release artifact 10.2.41 does not have provenance: https://api.github.com/repos/reactiveui/Akavache/releases/206055508","Warn: release artifact 10.1.6 does not have provenance: https://api.github.com/repos/reactiveui/Akavache/releases/175250221"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T00:48:03.372Z","repository_id":1965698,"created_at":"2025-08-23T00:48:03.372Z","updated_at":"2025-08-23T00:48:03.372Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31536473,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["akavache","c-sharp","cache","cross-platform","dotnet","reactive-extensions","reactive-programming","xamarin"],"created_at":"2024-08-02T17:01:00.900Z","updated_at":"2026-04-08T02:01:05.068Z","avatar_url":"https://github.com/reactiveui.png","language":"C#","funding_links":["https://github.com/sponsors/reactivemarbles"],"categories":["Database"],"sub_categories":[],"readme":"[![NuGet Stats](https://img.shields.io/nuget/v/akavache.sqlite3.svg)](https://www.nuget.org/packages/akavache.sqlite3) ![Build](https://github.com/reactiveui/Akavache/workflows/Build/badge.svg) [![Code Coverage](https://codecov.io/gh/reactiveui/akavache/branch/main/graph/badge.svg)](https://codecov.io/gh/reactiveui/akavache)\n\u003cbr\u003e\n\u003ca href=\"https://www.nuget.org/packages/akavache.sqlite3\"\u003e\n        \u003cimg src=\"https://img.shields.io/nuget/dt/akavache.sqlite3.svg\"\u003e\n\u003c/a\u003e\n\u003ca href=\"#backers\"\u003e\n        \u003cimg src=\"https://opencollective.com/reactiveui/backers/badge.svg\"\u003e\n\u003c/a\u003e\n\u003ca href=\"#sponsors\"\u003e\n        \u003cimg src=\"https://opencollective.com/reactiveui/sponsors/badge.svg\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://reactiveui.net/slack\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/chat-slack-blue.svg\"\u003e\n\u003c/a\u003e\n\n\u003cimg alt=\"Akavache\" src=\"https://raw.githubusercontent.com/reactiveui/styleguide/master/logo_akavache/main.png\" width=\"150\" /\u003e\n\n# Akavache: An Asynchronous Key-Value Store for Native Applications\n\nAkavache is an *asynchronous*, *persistent* (i.e., writes to disk) key-value store created for writing desktop and mobile applications in C#, based on SQLite3. Akavache is great for both storing important data (i.e., user settings) as well as cached local data that expires.\n\n## What's New\n\nAkavache V11.1 introduced a new **Builder Pattern** for initialization, improved serialization support, and enhanced cross-serializer compatibility:\n\n- 🏗️ **Builder Pattern**: New fluent API for configuring cache instances\n- 🔄 **Multiple Serializer Support**: Choose between System.Text.Json, Newtonsoft.Json, each with a BSON variant\n- 🔗 **Cross-Serializer Compatibility**: Read data written by different serializers\n- 🧩 **Modular Design**: Install only the packages you need\n- 📱 **Enhanced .NET MAUI Support**: First-class support for .NET 9 cross-platform development\n- 🔒 **Improved Security**: Better encrypted cache implementation\n\n### Development History\n\nAkavache V11.1+ represents a significant evolution in the library's architecture, developed through extensive testing and community feedback in our incubator project. The new features and improvements in V11.1 were first prototyped and battle-tested in the [ReactiveMarbles.CacheDatabase](https://github.com/reactivemarbles/CacheDatabase) repository, which served as an experimental ground for exploring new caching concepts and architectural patterns.\n\n**Key Development Milestones:**\n\n- **🧪 Incubation Phase**: The builder pattern, modular serialization system, and enhanced API were first developed and tested in ReactiveMarbles.CacheDatabase\n- **🔬 Community Testing**: Early adopters and contributors provided valuable feedback on the new architecture through real-world usage scenarios\n- **🚀 Production Validation**: The incubator project allowed us to validate performance improvements, API ergonomics, and cross-platform compatibility before integrating into Akavache\n- **📈 Iterative Refinement**: Multiple iterations based on community feedback helped shape the final V11.1 API design and feature set\n\nThis careful incubation process ensured that V11.1 delivers not just new features, but a more robust, flexible, and maintainable caching solution that builds upon years of community experience and testing.\n\n## Quick Start\n\n### 1. Install Packages\n\n```xml\n\u003cPackageReference Include=\"Akavache.Sqlite3\" Version=\"*\" /\u003e\n\u003cPackageReference Include=\"Akavache.SystemTextJson\" Version=\"*\" /\u003e\n```\n\n### 2. Initialize Akavache\n\n\u003e **Note:** `WithAkavache`, `WithAkavacheCacheDatabase` and `Initialize` always requires an `ISerializer` defined as a generic type, such as `WithAkavache\u003cSystemJsonSerializer\u003e`. This ensures the cache instance is properly configured for serialization.\n\n#### Static Initialization (Recommended for most apps)\n```csharp\nusing Akavache.Core;\nusing Akavache.SystemTextJson;\nusing Akavache.Sqlite3;\nusing Splat.Builder;\n\n// Initialize with the builder pattern\nAppBuilder.CreateSplatBuilder()\n    .WithAkavacheCacheDatabase\u003cSystemJsonSerializer\u003e(builder =\u003e\n        builder.WithApplicationName(\"MyApp\")\n               .WithSqliteProvider() // REQUIRED: Explicitly initialize SQLite provider\n               .WithSqliteDefaults());\n```\n\n\u003e **Important:** Always call `WithSqliteProvider()` explicitly before `WithSqliteDefaults()`. While `WithSqliteDefaults()` will automatically call `WithSqliteProvider()` if not already initialized (for backward compatibility), this automatic behavior is **deprecated and may be removed in future versions**. Explicit provider initialization is the recommended pattern for forward compatibility with other DI containers.\n\n#### Dependency Injection Registration (for DI containers)\n\n```csharp\nusing Akavache.Core;\nusing Akavache.SystemTextJson;\nusing Akavache.Sqlite3;\nusing Splat.Builder;\n\n// Example: Register Akavache with Splat DI\nAppBuilder.CreateSplatBuilder()\n    .WithAkavache\u003cSystemJsonSerializer\u003e(\n        \"MyApp\",\n        builder =\u003e builder.WithSqliteProvider()    // REQUIRED: Explicit provider initialization\n                          .WithSqliteDefaults(),\n        (splat, instance) =\u003e splat.RegisterLazySingleton(() =\u003e instance));\n\n// For in-memory cache (testing or lightweight scenarios):\nAppBuilder.CreateSplatBuilder()\n    .WithAkavache\u003cSystemJsonSerializer\u003e(\n        \"Akavache\",\n        builder =\u003e builder.WithInMemoryDefaults(),  // No provider needed for in-memory\n        (splat, instance) =\u003e splat.RegisterLazySingleton(() =\u003e instance));\n```\n\n### 3. Use the Cache\n\n#### Basic Operations\n\n```csharp\n// Store an object\nvar user = new User { Name = \"John\", Email = \"john@example.com\" };\nawait CacheDatabase.UserAccount.InsertObject(\"current_user\", user);\n\n// Retrieve an object\nvar cachedUser = await CacheDatabase.UserAccount.GetObject\u003cUser\u003e(\"current_user\");\n\n// Store with expiration\nawait CacheDatabase.LocalMachine.InsertObject(\"temp_data\", someData, DateTimeOffset.Now.AddHours(1));\n\n// Get or fetch pattern\nvar data = await CacheDatabase.LocalMachine.GetOrFetchObject(\"api_data\", \n    async () =\u003e await httpClient.GetFromJsonAsync\u003cApiResponse\u003e(\"https://api.example.com/data\"));\n```\n\n#### Cache Types\n\nAkavache provides four types of caches:\n\n- **UserAccount**: User settings and preferences that should persist and potentially sync\n- **LocalMachine**: Cached data that can be safely deleted by the system\n- **Secure**: Encrypted storage for sensitive data like credentials and API keys\n- **InMemory**: Temporary storage that doesn't persist between app sessions\n\n```csharp\n// User preferences (persistent)\nawait CacheDatabase.UserAccount.InsertObject(\"user_settings\", settings);\n\n// API cache (temporary)\nawait CacheDatabase.LocalMachine.InsertObject(\"api_cache\", apiData, DateTimeOffset.Now.AddHours(6));\n\n// Sensitive data (encrypted)\nawait CacheDatabase.Secure.SaveLogin(\"john.doe\", \"secretPassword\", \"myapp.com\");\n\n// Session data (in-memory only)\nawait CacheDatabase.InMemory.InsertObject(\"current_session\", sessionData);\n```\n\n## Installation\n\nAkavache uses a modular package structure. Choose the packages that match your needs:\n\n### Core Package (In Memory only)\n```xml\n\u003cPackageReference Include=\"Akavache\" Version=\"*\" /\u003e\n```\n\n### Storage Backends (Choose One - Recommended)\n```xml\n\u003c!-- SQLite persistence (most common) --\u003e\n\u003cPackageReference Include=\"Akavache.Sqlite3\" Version=\"*\" /\u003e\n\n\u003c!-- Encrypted SQLite persistence --\u003e\n\u003cPackageReference Include=\"Akavache.EncryptedSqlite3\" Version=\"*\" /\u003e\n```\n\n### Serializers (Choose One - Required)\n```xml\n\u003c!-- System.Text.Json (fastest, .NET native) --\u003e\n\u003cPackageReference Include=\"Akavache.SystemTextJson\" Version=\"*\" /\u003e\n\n\u003c!-- Newtonsoft.Json (most compatible) --\u003e\n\u003cPackageReference Include=\"Akavache.NewtonsoftJson\" Version=\"*\" /\u003e\n```\n\n### Optional Extensions\n```xml\n\u003c!-- Image/Bitmap support --\u003e\n\u003cPackageReference Include=\"Akavache.Drawing\" Version=\"*\" /\u003e\n\n\u003c!-- Settings helpers --\u003e\n\u003cPackageReference Include=\"Akavache.Settings\" Version=\"*\" /\u003e\n```\n\n## Framework Support\n\nAkavache supports:\n\n- ✅ **.NET Framework 4.6.2/4.7.2** - Windows desktop applications\n- ✅ **.NET Standard 2.0** - Cross-platform libraries\n- ✅ **.NET 8.0** - Modern .NET applications\n- ✅ **.NET 9.0** - Latest .NET applications\n- ✅ **.NET 10.0** - Latest .NET applications\n- ✅ **Mobile Targets** - `net9.0-android`, `net9.0-ios`, `net9.0-maccatalyst`, `net10.0-android`, `net10.0-ios`, `net10.0-maccatalyst`\n- ✅ **Desktop Targets** - `net9.0-windows10.0.19041.0`, `net10.0-windows10.0.19041.0` (WinUI), `net9.0`, `net10.0` (cross-platform)\n\n### Serializer Compatibility\n\n| Serializer | .NET Framework 4.6.2+ | .NET 8.0+ | Mobile | Performance |\n|------------|------------------------|-------------------|------------|--------|-------------|\n| **System.Text.Json** | ✅ Via NuGet | ✅ | ✅ | **Fastest** |\n| **Newtonsoft.Json** | ✅ Built-in | ✅ | ✅ | Compatible |\n\n**Recommendation**: Use **System.Text.Json** for new projects for best performance. Use **Newtonsoft.Json** when migrating from older Akavache versions or when you need maximum compatibility.\n\n## Akavache.Settings: Configuration Made Easy\n\nAkavache.Settings provides a specialized settings database for application configuration that survives app updates and reinstalls.\n\n### Quick Settings Example\n\n```csharp\nusing Akavache.Settings;\n\n// 1. Create a settings class\npublic class AppSettings : SettingsBase\n{\n    public AppSettings() : base(nameof(AppSettings)) { }\n\n    public bool EnableNotifications\n    {\n        get =\u003e GetOrCreate(true);  // Default: true\n        set =\u003e SetOrCreate(value);\n    }\n\n    public string UserName\n    {\n        get =\u003e GetOrCreate(\"DefaultUser\");\n        set =\u003e SetOrCreate(value);\n    }\n\n    public int MaxRetries\n    {\n        get =\u003e GetOrCreate(3);\n        set =\u003e SetOrCreate(value);\n    }\n}\n\n// 2. Initialize with your app\nvar appSettings = default(AppSettings);\n\nAppBuilder.CreateSplatBuilder()\n    .WithAkavache\u003cSystemJsonSerializer\u003e(builder =\u003e\n        builder.WithApplicationName(\"MyApp\")\n               .WithSqliteProvider()\n               .WithSettingsStore\u003cAppSettings\u003e(settings =\u003e appSettings = settings));\n\n// 3. Use the settings\nappSettings.EnableNotifications = false;\nappSettings.UserName = \"John Doe\";\nappSettings.MaxRetries = 5;\n\nConsole.WriteLine($\"User: {appSettings.UserName}\");\nConsole.WriteLine($\"Notifications: {appSettings.EnableNotifications}\");\n```\n\nSettings are automatically persisted and will survive app updates, making them perfect for user preferences and application configuration.\n\n## Documentation\n\n📚 **Complete documentation is available in the [/docs](docs/) folder:**\n\n- **[Installation Guide](docs/installation.md)** - Detailed installation and package selection\n- **[Configuration](docs/configuration.md)** - Builder pattern, providers, and advanced setup\n- **[Serializers](docs/serializers.md)** - System.Text.Json vs Newtonsoft.Json comparison\n- **[Cache Types](docs/cache-types.md)** - UserAccount, LocalMachine, Secure, and InMemory caches\n- **[Basic Operations](docs/basic-operations.md)** - CRUD operations and error handling\n- **[Migration Guide](docs/migration-v10-to-v11.md)** - Upgrading from V10.x to V11.1\n- **[Settings Management](docs/settings.md)** - Complete Akavache.Settings guide\n- **[Platform Notes](docs/platform-notes.md)** - Platform-specific guidance\n- **[Performance](docs/performance.md)** - Benchmarks and optimization tips\n- **[Best Practices](docs/best-practices.md)** - Recommended patterns and anti-patterns\n- **[Troubleshooting](docs/troubleshooting/)** - Common issues and solutions\n\n## Support and Contributing\n\n- 📖 **Documentation**: [https://github.com/reactiveui/Akavache](https://github.com/reactiveui/Akavache)\n- 🐛 **Issues**: [GitHub Issues](https://github.com/reactiveui/Akavache/issues)\n- 💬 **Chat**: [ReactiveUI Slack](https://reactiveui.net/slack)\n- 📦 **NuGet**: [Akavache Packages](https://www.nuget.org/packages?q=akavache)\n\n## Thanks \n\nThis project is tested with BrowserStack.\n\nWe want to thank the following contributors and libraries that help make Akavache possible:\n\n### Core Libraries\n\n- **SQLite**: [sqlite-net-pcl](https://github.com/praeclarum/sqlite-net) and [SQLitePCLRaw](https://github.com/ericsink/SQLitePCL.raw) - Essential SQLite support for .NET\n- **System.Reactive**: [Reactive Extensions for .NET](https://github.com/dotnet/reactive) - The foundation of Akavache's asynchronous API\n- **Splat**: [Splat](https://github.com/reactiveui/splat) - Cross-platform utilities and service location\n- **System.Text.Json**: Microsoft's high-performance JSON serializer\n- **Newtonsoft.Json**: James Newton-King's Json.NET - The most popular .NET JSON library\n\n### Microsoft\n\n\u003ca href=\"https://dotnetfoundation.org\"\u003e\n  \u003cimg src=\"https://theme.dotnetfoundation.org/img/logo.svg\" width=\"100\" /\u003e\n\u003c/a\u003e\n\nWe thank Microsoft for their ongoing support of the .NET ecosystem and the development tools that make Akavache possible.\n\n## License\n\nAkavache is licensed under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactiveui%2Fakavache","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freactiveui%2Fakavache","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactiveui%2Fakavache/lists"}