{"id":18473434,"url":"https://github.com/0xopenbytes/datadrivenui","last_synced_at":"2026-04-14T23:31:30.517Z","repository":{"id":116241599,"uuid":"569502381","full_name":"0xOpenBytes/DataDrivenUI","owner":"0xOpenBytes","description":"When did putting Classes in Structs become normal?","archived":false,"fork":false,"pushed_at":"2022-11-23T03:16:00.000Z","size":6,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-13T00:45:46.447Z","etag":null,"topics":["datadrivenui","ios","macos","swift","swiftui","tvos","watchos"],"latest_commit_sha":null,"homepage":"","language":"Swift","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/0xOpenBytes.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-23T01:07:17.000Z","updated_at":"2022-12-15T01:14:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"dd50aa95-34aa-4615-9f32-3e69ffa5c57c","html_url":"https://github.com/0xOpenBytes/DataDrivenUI","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xOpenBytes%2FDataDrivenUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xOpenBytes%2FDataDrivenUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xOpenBytes%2FDataDrivenUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xOpenBytes%2FDataDrivenUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0xOpenBytes","download_url":"https://codeload.github.com/0xOpenBytes/DataDrivenUI/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253850875,"owners_count":21973671,"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":["datadrivenui","ios","macos","swift","swiftui","tvos","watchos"],"created_at":"2024-11-06T10:24:56.523Z","updated_at":"2026-04-14T23:31:30.464Z","avatar_url":"https://github.com/0xOpenBytes.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DataDrivenUI\n\n*Producing Views from data since 2022*\n\n## What is DataDrivenUI?\n\nWhen did putting Classes in Structs become normal? Well, when did SwiftUI get released?\n\nDataDrivenUI takes a data first approach, by focusing on how data is passed around. To be specific, DataDrivenUI reverses the idea of the ViewModel and View. Normally the View will own the ViewModel, a Struct owning a Class. DataDrivenUI creates a contract between the View and the object producing said View. The View determines what Content and Capabilities it needs to function. Then you can create objects that can create the needed Content and Capabilities the View needs. Doing this the View doesn't know what object produced it, but does have the needed Content and Capabilities it needs to work.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xopenbytes%2Fdatadrivenui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0xopenbytes%2Fdatadrivenui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xopenbytes%2Fdatadrivenui/lists"}