{"id":3618,"url":"https://github.com/abbasnaqdi/reactor","last_synced_at":"2025-10-30T00:47:06.809Z","repository":{"id":128265291,"uuid":"137922881","full_name":"abbasnaqdi/reactor","owner":"abbasnaqdi","description":"Reactor is key value database and is a great alternative to Shared Preferences.","archived":false,"fork":false,"pushed_at":"2025-06-08T12:42:49.000Z","size":378,"stargazers_count":39,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-08T13:21:27.488Z","etag":null,"topics":["android-database","android-library","androidlibrary","key-value-database","kotlin-android","kotlin-library","shared-preferences","sharedpreferences"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/abbasnaqdi.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,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-06-19T17:20:01.000Z","updated_at":"2025-05-13T23:44:25.000Z","dependencies_parsed_at":"2023-04-12T14:18:07.572Z","dependency_job_id":null,"html_url":"https://github.com/abbasnaqdi/reactor","commit_stats":null,"previous_names":["abbasnaqdi/reactor","oky2abbas/reactor"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/abbasnaqdi/reactor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abbasnaqdi%2Freactor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abbasnaqdi%2Freactor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abbasnaqdi%2Freactor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abbasnaqdi%2Freactor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abbasnaqdi","download_url":"https://codeload.github.com/abbasnaqdi/reactor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abbasnaqdi%2Freactor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281726183,"owners_count":26550920,"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","status":"online","status_checked_at":"2025-10-29T02:00:06.901Z","response_time":59,"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":["android-database","android-library","androidlibrary","key-value-database","kotlin-android","kotlin-library","shared-preferences","sharedpreferences"],"created_at":"2024-01-05T20:16:46.575Z","updated_at":"2025-10-30T00:47:06.748Z","avatar_url":"https://github.com/abbasnaqdi.png","language":"Kotlin","funding_links":[],"categories":["Libraries"],"sub_categories":["Utility"],"readme":"##### `Reactor`\n\n[![](https://jitpack.io/v/aaaamirabbas/reactor.svg)](https://jitpack.io/#dfmAbbas/reactor)\n[![License](http://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/aaaamirabbas/reactor)\n[![API](https://img.shields.io/badge/API-15%2B-blue.svg?style=flat)](https://github.com/aaaamirabbas/reactor)\n\n**Reactor** is a `fast` and `secure` key-value library for Android, and has an embedded database based on the JSON structure and is a great alternative to Shared Preferences.\n\n##### Features + Road map\n\n###### First Edition 1.x.x\n\n- [x] `Save and restore a variety of objects (serialization and deserialization)`\n- [x] `Symmetric encryption of objects (signed by target application at runtime + Hardware_ID)`\n- [x] `Very high performance‍`\n- [x] `Very low library size (No need for other libraries)`\n- [x] `Supported and tested in API 15 and above`\n- [x] `Minimal and easy to use :)`\n\n###### Second Edition 2.x.x\n\n- [ ] `Save and restore all temporary object pool at runtime in RAM`\n- [ ] `Add a data branch (branches can be independent of the main branch) `\n- [ ] `Imports safe data from Shared Preferences to Reactor`\n- [ ] ‍‍`Change the underlying AES password generation`\n- [ ] `Change the storage infrastructure`\n- [ ] ‍‍‍`Add concurrency + thread-safe functionality`\n\n[![Donate](https://img.shields.io/badge/Cryptocurrency-Donate-green)](https://idpay.ir/aaaamirabbas) **BTC**: `1HPZyUP9EJZi2S87QrvCDrE47qRV4i5Fze`\n\n[![Donate](https://img.shields.io/badge/Cryptocurrency-Donate-blue)](https://idpay.ir/aaaamirabbas) **ETH or USDT**: `0x4a4b0A26Eb31e9152653E4C08bCF10f04a0A02a9`\n\n##### Getting Started :\n\nAdd to your root build.gradle :Ï\n\n```java\nallprojects {\n  repositories {\n      ...\n      maven { url 'https://jitpack.io' }\n    }\n  }\n```\n\nAdd the dependency :\n\n```java\ndependencies {\n    implementation 'com.github.aaaamirabbas:reactor:1.5.6'\n}\n```\n\n##### Simple API (default) :\n\nIn `Kotlin` :\n\n```java\nval reactor = Reactor(context)\nval reactor = Reactor(context, false) // disable encryption\n\n-----------------------------------------------------------\n\nreactor.put(\"firstName\", \"abbas\")\nreactor.put(\"lastName\", null)\nreactor.put(\"age\", 23)\nreactor.put(\"customDataClass\", SampleData())\n\n-----------------------------------------------------------\n\nval firstName = reactor.get\u003cString\u003e(\"firstName\")\nval lastName : String? = reactor.get(\"lastName\")\nval isDay = reactor.get\u003cBoolean\u003e(\"isDay\", false)\nval customDataClass = reactor.get(\"customDataClass\")\n\n-----------------------------------------------------------\n\nreactor.remove\u003cInt\u003e(\"year\", \"week\")\nreactor.eraseAllData()\n```\n\nIn `Java` :\n\n```java\nReactor reactor = new Reactor(getContext());\nReactor reactor = new Reactor(getContext(), false); // disable encryption\n\n-----------------------------------------------------------\n\nreactor.put(\"firstName\", \"abbas\");\nreactor.put(\"lastName\", null);\nreactor.put(\"age\", 23);\nreactor.put(\"customDataClass\", new SampleData());\n\n-----------------------------------------------------------\n\nString firstName = reactor.get(\"firstName\", \"abbas\");\nString lastName = reactor.get(\"lastName\", null);\nInteger age = reactor.get(\"age\", 26);\nSampleData customDataClass = reactor.get(\"array\");\n\n-----------------------------------------------------------\n\nreactor.remove(\"age\", 0);\nreactor.eraseAllData();\n```\n\n##### Custom data class Sample :\n\n```Kotlin\n// definition\ndata class SampleData(\n    val id: Int = 24,\n    val name: String = \"abbas\"\n) : ReactorContract\n\n-----------------------------------------------------------\n\n// save, restore, remove\nreactor.put(\"simpleData\", SampleData())\nreactor.get\u003cSampleData\u003e(\"simpleData\") // return null if is not found\nreactor.remove\u003cSampleData\u003e(\"simpleData\")\n```\n\n##### FAQ :\n\n###### Need more help?\n\n- [Check out the classes in this folder](sample/src/main/java/com/aaaamirabbas/sample)\n\n###### How to store and restore the custom class ?\n\n- [See this issue : #1](https://github.com/aaaamirabbas/reactor/issues/1)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabbasnaqdi%2Freactor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabbasnaqdi%2Freactor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabbasnaqdi%2Freactor/lists"}