{"id":15066397,"url":"https://github.com/helightdev/dogs","last_synced_at":"2026-01-11T13:34:47.041Z","repository":{"id":65176442,"uuid":"585715873","full_name":"helightdev/dogs","owner":"helightdev","description":"A Dart/Flutter library for code‑generated object graphs, providing zero‑boilerplate serialization, validation, projections, and polymorphism with support for Flutter forms and databinding.","archived":false,"fork":false,"pushed_at":"2025-09-15T16:55:22.000Z","size":12811,"stargazers_count":16,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-15T18:08:30.333Z","etag":null,"topics":["cbor","code-generation","dart","dataclasses","flutter","json-parser","object-mapping","serialization-library","yaml-parser"],"latest_commit_sha":null,"homepage":"https://dogs.helight.dev","language":"Dart","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/helightdev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-05T22:11:38.000Z","updated_at":"2025-09-15T16:55:25.000Z","dependencies_parsed_at":"2023-02-14T08:32:31.892Z","dependency_job_id":"b14861ac-3774-4714-a8d8-484e7d1ed10d","html_url":"https://github.com/helightdev/dogs","commit_stats":{"total_commits":369,"total_committers":3,"mean_commits":123.0,"dds":"0.15718157181571812","last_synced_commit":"99308bec68ffa3b0a6c45d8d2e46cfe56b3066fa"},"previous_names":["darwinframework/dogs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/helightdev/dogs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helightdev%2Fdogs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helightdev%2Fdogs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helightdev%2Fdogs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helightdev%2Fdogs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/helightdev","download_url":"https://codeload.github.com/helightdev/dogs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/helightdev%2Fdogs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281896642,"owners_count":26580138,"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-30T02:00:06.501Z","response_time":61,"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":["cbor","code-generation","dart","dataclasses","flutter","json-parser","object-mapping","serialization-library","yaml-parser"],"created_at":"2024-09-25T01:07:10.740Z","updated_at":"2025-10-30T22:43:11.344Z","avatar_url":"https://github.com/helightdev.png","language":"Dart","readme":"\u003ch1 align=\"left\"\u003e\n    \u003cimg src=\"https://github.com/helightdev/dogs/blob/main/docs/assets/logo.png?raw=true\" align=\"left\" width=\"48\" alt=\"Frosty\"\u003e\n    Dart Object Graphs\n    \u003ca href=\"https://pub.dev/packages/dogs_core\"\u003e\n        \u003cimg src=\"https://img.shields.io/pub/v/dogs_core\" alt=\"pub\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/helightdev/dogs/actions\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/helightdev/dogs/dart.yaml\" alt=\"Build\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://dogs.helight.dev/\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/docs-dogs.helight.dev-007ec6.svg\" alt=\"gitbook\"\u003e\n    \u003c/a\u003e\n\u003c/h1\u003e\n\nDOGs (Dart Object Graphs) is a serialization and object-mapping library for Dart that turns your classes into\nintrospectable, immutable, and easily validated data models across multiple formats.\n\n[Documentation](https://dogs.helight.dev) |\n[Discord](https://discord.gg/6HKuGSzYKJ) |\n[Pub Package](https://pub.dev/packages/dogs_core)\n\n```dart\n@serializable\nclass Person with Dataclass\u003cPerson\u003e {\n\n  @LengthRange(max: 128)\n  final String name;\n\n  @Minimum(18)\n  final int age;\n\n  @SizeRange(max: 16)\n  @Regex(\"((_)?[a-z]+[A-Za-z0-9]*)+\")\n  final Set\u003cString\u003e? tags;\n\n  Person(this.name, this.age, this.tags);\n\n}\n```\n\n* 🐦 **Concise** Define immutable dataclasses with a simple annotation and mixin. toString, equals, hashCode, and\n  builders are generated automatically. No equatable, no copyWith, no additional boilerplate.\n* 🚀 **Fast** Optimized serialization and deserialization with performance on par or better than alternatives. JSON\n  support is built in with zero extra dependencies.\n* 🧩 **Extensible**\n  Replace or extend any part of the pipeline. Add new formats, validators, projections, or field converters. Works with\n  custom Flutter types through the integration package.\n* 📦 **Adaptive** Multiple formats supported out of the box: JSON, YAML, TOML, CBOR. Schema generation enables dynamic\n  use cases like server-driven forms.\n* 📚 **Documented** Comprehensive documentation and examples\n* ⚡ **Developer-friendly** All generated code goes into a single dogs.g.dart. Models remain clean and free of part\n  directives. Builders and nullable copy methods are exposed centrally.\n\n## Format Support\n\n- **JSON** (included in dogs_core)\n- **YAML** \u003ca href=\"https://pub.dev/packages/dogs_yaml\"\u003e\u003cimg src=\"https://img.shields.io/pub/v/dogs_yaml?label=dogs_yaml\" alt=\"pub\"\u003e\u003c/a\u003e\n- **TOML** \u003ca href=\"https://pub.dev/packages/dogs_toml\"\u003e\u003cimg src=\"https://img.shields.io/pub/v/dogs_toml?label=dogs_toml\" alt=\"pub\"\u003e\u003c/a\u003e\n- **CBOR** \u003ca href=\"https://pub.dev/packages/dogs_cbor\"\u003e\u003cimg src=\"https://img.shields.io/pub/v/dogs_cbor?label=dogs_cbor\" alt=\"pub\"\u003e\u003c/a\u003e\n\n## Core Package \u003ca href=\"https://pub.dev/packages/dogs_core\"\u003e\u003cimg src=\"https://img.shields.io/pub/v/dogs_core?label=dogs_core\" alt=\"pub\"\u003e\u003c/a\u003e\n\n- **Json**  \n  The core package comes with json support out of the box and requires no additional dependencies.\n\n- **Builders \u0026 Nullable Copy**  \n  We provide a nullable copy method that also works with null values, as well as autogenerated builders, similar to\n  built_value. Both let you create immutable objects with a simple and fluent api.\n\n- **Structures**  \n  Every serializable class has an introspectable generated `DogStructure` that provides runtime access to the class's\n  fields, annotations, factories and metadata. Together with the extensible core system, you can build powerful\n  reflection-like functionality without the need for custom code generation or mirrors.\n\n- **Dataclasses**  \n  Using our dataclass mixin automatically implements toString, equals and hashCode for your\n  serializable classes. This removes the requirement for a package like equatable or\n  ungodly amounts of boilerplate code, that is hard to maintain and distracting.\n\n- **Projections**  \n  Dogs offers a powerful projection api, which enables you to transform your objects into\n  other objects, without having to write additional boilerplate code with brittle `copyWith`\n  invocations and hard coded key names.\n\n- **Polymorphism**  \n  Dogs supports polymorphic serialization, which enables you to serialize and deserialize\n  objects of different types. You can even use interfaces and abstract classes as types,\n  including `Object`.\n\n- **Validation**  \n  Using the validation api, you can easily validate your objects, without having the struggle\n  of writing your own validation logic for most common use cases. Translation of messages and\n  custom validators are supported as well.\n\n- **JsonSchema-like Schema** (preview)  \n  Dogs offers a schema generation api, which allows you to dynamically export and parse a subset\n  of json-schema. This enables advanced dynamic uses cases such as partially server-driven forms when used\n  in combination with the flutter integration.\n\n[Package on pub.dev](https://pub.dev/packages/dogs_core)  \n[Documentation](https://dogs.helight.dev)\n\n## Flutter \u003ca href=\"https://pub.dev/packages/dogs_flutter\"\u003e\u003cimg src=\"https://img.shields.io/pub/v/dogs_flutter?label=dogs_flutter\" alt=\"pub\"\u003e\u003c/a\u003e\n\nUse our flutter integration to easily create forms for any serializable object, without having\nto write boilerplate code. The databinding system supports all primitive field types and can easily\nbe extended to support custom field types and layouts. This package also provides converters for\ncommonly used flutter types, like `Color`, `Offset`, `Size`, `Rect`, etc.\n\n[Package on pub.dev](https://pub.dev/packages/dogs_flutter)  \n[Documentation](https://dogs.helight.dev/flutter/)\n\n## ✨ Non-Intrusive Code Generation ✨\n\nDogs takes a different approach to generated code. Instead of scattering part files across your models,\nall generated output lives in a single dogs.g.dart file at the root of your lib folder. This makes development smoother\nand far less error-prone. No more missing part statements or fragile imports.\n\nEven better: your model definitions stay clean. You never need to reference generated code inside them. The only time\nyou’ll interact with generated code directly is when using builders, which are neatly exported through\nthe central dogs.g.dart.\n\nThis design keeps Dogs non-intrusive and future-proof. While part files may be added later for flexibility,\nyou will never be required to reference generated code from within your model definition files.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelightdev%2Fdogs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhelightdev%2Fdogs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhelightdev%2Fdogs/lists"}