{"id":13509700,"url":"https://github.com/christhekeele/mnemonix","last_synced_at":"2025-04-30T22:15:46.652Z","repository":{"id":145660707,"uuid":"72074313","full_name":"christhekeele/mnemonix","owner":"christhekeele","description":"A unified interface to Elixir and Erlang key/value stores.","archived":false,"fork":false,"pushed_at":"2018-01-14T04:19:18.000Z","size":410,"stargazers_count":39,"open_issues_count":16,"forks_count":5,"subscribers_count":3,"default_branch":"development","last_synced_at":"2025-04-30T22:15:44.192Z","etag":null,"topics":["adapter","elixir","key-value-store"],"latest_commit_sha":null,"homepage":"https://christhekeele.github.io/mnemonix","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/christhekeele.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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}},"created_at":"2016-10-27T05:33:14.000Z","updated_at":"2024-04-16T04:37:41.000Z","dependencies_parsed_at":"2024-01-05T21:59:56.955Z","dependency_job_id":"86103518-cf34-4cd3-941f-c75b7f250cb9","html_url":"https://github.com/christhekeele/mnemonix","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christhekeele%2Fmnemonix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christhekeele%2Fmnemonix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christhekeele%2Fmnemonix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/christhekeele%2Fmnemonix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/christhekeele","download_url":"https://codeload.github.com/christhekeele/mnemonix/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251789624,"owners_count":21644087,"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":["adapter","elixir","key-value-store"],"created_at":"2024-08-01T02:01:11.697Z","updated_at":"2025-04-30T22:15:46.629Z","avatar_url":"https://github.com/christhekeele.png","language":"Elixir","funding_links":[],"categories":["Utilities"],"sub_categories":[],"readme":"Mnemonix\n========\n\n\u003e **A unified interface to key/value stores.**\n\n[hex]: https://hex.pm/packages/mnemonix\n[hex-version-badge]:   https://img.shields.io/hexpm/v/mnemonix.svg?maxAge=86400\u0026style=flat-square\n[hex-downloads-badge]: https://img.shields.io/hexpm/dt/mnemonix.svg?maxAge=86400\u0026style=flat-square\n[hex-license-badge]:   https://img.shields.io/badge/license-MIT-7D26CD.svg?maxAge=86400\u0026style=flat-square\n\n[docs]: https://inch-ci.org/github/christhekeele/mnemonix\n[docs-badge]: https://inch-ci.org/github/christhekeele/mnemonix.svg?branch=master\u0026style=flat-square\n\n[deps]: https://beta.hexfaktor.org/github/christhekeele/mnemonix\n[deps-badge]: https://beta.hexfaktor.org/badge/all/github/christhekeele/mnemonix.svg?branch=master\u0026style=flat-square\n\n[![Version][hex-version-badge]][hex]\n[![Downloads][hex-downloads-badge]][hex]\n[![License][hex-license-badge]][hex]\n[![Documentation][docs-badge]][docs]\n[![Dependencies][deps-badge]][deps]\n\n## Synopsis\n\n`Mnemonix` aims to help you:\n\n  - Get running with key/value stores with minimal ceremony\n  - Experiment with different key/value store backends for your application\n  - Allow end-users of your library liberty to choose their preferred backend\n  - Enable composing access to different key/value stores with different read/write strategies\n\nIt encodes the behaviour, lifecycle, and feature set of a key/value store behind a common `GenServer` interface, normalizes different store APIs to conform to that interface, polyfills stores lacking features, and exposes access to them through a familiar `Map` API.\n\nLearn more about starting a store and manipulating it with the `Mnemonix` API [in the documentation](https://hexdocs.pm/mnemonix/index.html).\n\n##### Pronunciation: **`/nɛˈmɑːnɪks/`** – *`noo-MAHN-icks`*\n\n\u003e Mnemonic systems are techniques or strategies consciously used to improve memory. They help use information already stored in long-term memory to make memorization an easier task.\n\u003e\n\u003e — *[Mnemonics](https://en.wikipedia.org/wiki/Mnemonic)*, **Wikipedia**\n\n## Status\n\n|         :thumbsup:         |  [Continuous Integration][status]   |        [Test Coverage][coverage]         |\n|:--------------------------:|:-----------------------------------:|:----------------------------------------:|\n|      [Master][master]      |   ![Build Status][master-status]    |   ![Coverage Status][master-coverage]    |\n| [Development][development] | ![Build Status][development-status] | ![Coverage Status][development-coverage] |\n\n[status]: https://travis-ci.org/christhekeele/mnemonix\n[coverage]: https://coveralls.io/github/christhekeele/mnemonix\n\n[master]: https://github.com/christhekeele/mnemonix/tree/master\n[master-status]: https://img.shields.io/travis/christhekeele/mnemonix/master.svg?maxAge=86400\u0026style=flat-square\n[master-coverage]: https://img.shields.io/coveralls/christhekeele/mnemonix/master.svg?maxAge=86400\u0026style=flat-square\n\n[development]: https://github.com/christhekeele/mnemonix/tree/development\n[development-status]: https://img.shields.io/travis/christhekeele/mnemonix/development.svg?maxAge=86400\u0026style=flat-square\n[development-coverage]: https://img.shields.io/coveralls/christhekeele/mnemonix/development.svg?maxAge=86400\u0026style=flat-square\n\n## Features\n\nNaturally, `Mnemonix` gives you `Map`-style functions to manipulate various key/value stores. However, `Mnemonix` also offers extra features beyond simple Map functions. Stores that don't natively support these features have the capability added through an Elixir polyfill, guaranteeing you can use and switch stores without worrying about what features they support under the hood.\n\nAvailable features are:\n\n- `Mnemonix.Features.Map` - The key/value manipulation you know and love\n- `Mnemonix.Features.Bump` - Increment/decrement integer values\n- `Mnemonix.Features.Expiry` - Set entries to remove themselves from the store with a ttl\n- `Mnemonix.Features.Enumerable` - Iterate over all key/value pairs in supported stores\n\n## Installation\n\nAdd `Mnemonix` to your project's dependencies in its `mix.exs`:\n\n```elixir\ndef deps do\n  [\n    # ...\n    {:mnemonix, \"~\u003e 0.10.0\"},\n    # ...\n  ]\nend\n```\n\n## Contributing\n\n[Pull requests](https://github.com/christhekeele/mnemonix/pulls) are welcome and greatly appreciated!\n\nPlease submit them against the [`development`](https://github.com/christhekeele/mnemonix/tree/development) branch rather than [`master`](https://github.com/christhekeele/mnemonix/tree/master)––this allows useful changes to be finessed before release. The GitHub UI should do this by default.\n\nHere are some useful commands if you've just forked the project and want to contribute:\n\n- `mix deps.get` - Get development dependencies\n- `mix test` - Run the test suite\n- `mix credo list` - Run static code analysis for style pointers on Elixir source\n- `mix dialyzer` - Run static code analysis for type checking on compiled BEAM bytecode\n- `mix coveralls.html` - Generate test suite coverage report\n- `mix docs` - Generate documentation pages\n- `mix inch` - Evaluate quality of documentation\n- `mix checks` - Run all of the above checks and analyses\n- `mix clean` - If any of the above stop behaving as expected\n\nFor more information on helping the development of Mnemonix,\ncheck out the [contributing guide](https://hexdocs.pm/mnemonix/contributing.html).\n\nNotes\n-----\n\n- *Not to be confused with the mnemonicode library, [`Mnemonex`](https://github.com/mwmiller/mnemonex).*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchristhekeele%2Fmnemonix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchristhekeele%2Fmnemonix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchristhekeele%2Fmnemonix/lists"}