{"id":37019392,"url":"https://github.com/marykdb/maryk","last_synced_at":"2026-03-06T15:04:41.483Z","repository":{"id":45455644,"uuid":"290454412","full_name":"marykdb/maryk","owner":"marykdb","description":"Maryk is a Kotlin Multiplatform library which helps you to store, query and send data in a structured way over multiple platforms. The data store stores any value with a version, so it is possible to request only the changed data or live listen for updates.","archived":false,"fork":false,"pushed_at":"2026-02-25T22:03:39.000Z","size":10426,"stargazers_count":17,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-26T00:55:21.090Z","etag":null,"topics":["data","database","graph","json","kotlin","kotlin-multiplatform","rocksdb","serialization","versioned","yaml"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marykdb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null,"notice":"NOTICE.txt","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2020-08-26T09:32:43.000Z","updated_at":"2026-02-25T22:03:42.000Z","dependencies_parsed_at":"2025-12-30T19:01:15.386Z","dependency_job_id":null,"html_url":"https://github.com/marykdb/maryk","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/marykdb/maryk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marykdb%2Fmaryk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marykdb%2Fmaryk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marykdb%2Fmaryk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marykdb%2Fmaryk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marykdb","download_url":"https://codeload.github.com/marykdb/maryk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marykdb%2Fmaryk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30182687,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T14:42:24.748Z","status":"ssl_error","status_checked_at":"2026-03-06T14:42:14.925Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["data","database","graph","json","kotlin","kotlin-multiplatform","rocksdb","serialization","versioned","yaml"],"created_at":"2026-01-14T02:09:15.025Z","updated_at":"2026-03-06T15:04:37.639Z","avatar_url":"https://github.com/marykdb.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](https://www.apache.org/licenses/LICENSE-2.0)\n[![Download](https://img.shields.io/maven-central/v/io.maryk/maryk-core)](https://central.sonatype.com/artifact/io.maryk/maryk-core)\n\n# Maryk: Cross-Platform Data Modeling and Storage\n\nMaryk is a **Kotlin Multiplatform** framework for defining, validating, serializing, and storing data models consistently across multiple platforms, including **iOS**, **macOS**, **watchOS**, **tvOS**, **Linux**, **Windows**, **Android**, **JVM**, **JavaScript** and **Wasm**. With a fully version-aware data store and flexible querying, Maryk makes it easy to maintain complex data structures while ensuring backward compatibility and efficient data handling.\n\nThe [RocksDB](/store/rocksdb/README.md) persistence layer is available for the **JVM**, **iOS**, **macOS**, **tvOS**, **watchOS**, **Android**, **Android Native**, **Windows** and **Linux**.\nThe [FoundationDB](/store/foundationdb/README.md) persistence layer is available on supported platforms that have the FoundationDB client library (`libfdb_c`) present (JVM, macOS, linux).\n\n## Key Features\n\n- **Unified Data Modeling**: Define your [data models](core/docs/datamodel.md) once and use them everywhere, ensuring a single source of truth across platforms.\n\n- **Flexible Property Types and Inheritance**: Create models with a variety of [property types](core/docs/properties/README.md), and reuse model structures to build complex data hierarchies.\n\n- **Built-in Validation**: Enforce data quality with [validations](core/docs/properties/README.md#validation) such as required fields, uniqueness, min/max constraints, and regex checks.\n\n- **Cross-Platform Serialization**: Seamlessly [serialize and deserialize](core/docs/serialization/README.md) data as JSON, YAML, or Protocol Buffers, facilitating easy communication between clients and services.\n\n- **Model Serialization \u0026 Compatibility**: Serialize your schemas themselves and run compatibility checks across different clients, ensuring smooth upgrades and migrations.\n\n- **Version-Aware Storage and Queries**: Store data in [NoSQL data stores](store/memory/README.md) (in-memory/[RocksDB](store/rocksdb/README.md)/[FoundationDB](store/foundationdb/README.md)) and leverage [versioning](core/docs/versioning.md) to request historical states, compare past values, and minimize bandwidth by fetching only changed fields.\n\n- **Data Aggregations \u0026 Insights**: Perform [aggregations](core/docs/aggregations.md) (count, sum, average, min/max, grouped by time intervals or enums) for richer analytics and decision-making.\n\n- **CLI tooling**: Browse and edit records in a terminal via the [Maryk CLI](cli/README.md).\n\n## Getting Started\n\n1. **Add Maryk Core Dependency**:  \nIn your `build.gradle.kts`:\n```kotlin\nimplementation(\"io.maryk:maryk-core:\u003cversion\u003e\")\n```\n\n2. **Define Your Data Models**:  \nCreate a Kotlin data model:\n```kotlin\nobject Person : RootDataModel\u003cPerson\u003e() {\n   val firstName by string(index = 1u)\n   val lastName by string(index = 2u)\n   val dateOfBirth by date(index = 3u)\n}\n```\n\n3. **Create and Validate Instances**:  \n```kotlin\nval johnSmith = Person.create {\n   firstName with \"John\"\n   lastName with \"Smith\"\n   dateOfBirth with LocalDate(2017, 12, 5)\n}\n\n// Validate the object\nPerson.validate(johnSmith)\n```\n\n4. **Serialize Your Data Objects**:  \n```kotlin\n// Serialize to JSON\nval json = Person.writeJson(johnSmith)\n\n// Deserialize from JSON\nval personFromJson = Person.readJson(json)\n```\n\n5. **Choose a Data Store**:\n  - [Memory](store/memory/README.md) — in‑memory, non‑persistent, fastest feedback for dev/tests.\n  - [RocksDB](store/rocksdb/README.md) — embedded, persistent, high performance on a single node across desktop/mobile/server.\n  - [FoundationDB](store/foundationdb/README.md) — distributed, transactional persistence with strong consistency and time‑travel support (JVM bundled; native targets require `libfdb_c`).\n  \n  See the overview and guidance in [store/README.md](store/README.md) for when to pick each engine.\n\n## Documentation\n\nFor detailed information, check out:\n\n- [Core](core/README.md) – Data models, queries, parsers, readers.\n- [Library](lib/README.md) – Shared utilities for things like Strings and ByteArrays.\n- [File](file/README.md) – Minimal cross-platform file IO layer used by tooling and stores.\n- [JSON](json/README.md) \u0026 [YAML](yaml/README.md) – Streaming parsers and writers.\n- [Generator](generator/README.md) – Code generation from YAML and JSON models.\n- [Test Library](testlib/README.md) – Testing utilities and helpers.\n- [DataFrame Integration](dataframe/README.md) – DataFrame helper functions for Maryk objects.\n- [CLI](cli/README.md) – Interactive terminal client for browsing and editing stores.\n- **Stores**:\n  - [Shared](store/shared/README.md) – Shared logic for building stores.\n  - [Memory](store/memory/README.md) – In-memory store (non-persistent).\n  - [RocksDB](store/rocksdb/README.md) – Persistent, high-performance store.\n  - [FoundationDB](store/foundationdb/README.md) – Persistent, scalable transactional store (multiplatform where `libfdb_c` is available).\n  - [Tests](store/test/README.md) – Common tests to ensure store reliability.\n\n## Contributing\n\nWe welcome contributions through feature requests, issue reports, and pull requests.\n\n**Your involvement helps Maryk grow and improve!**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarykdb%2Fmaryk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarykdb%2Fmaryk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarykdb%2Fmaryk/lists"}