{"id":17254281,"url":"https://github.com/waynevanson/data-entry-obsidian-plugin","last_synced_at":"2025-07-13T07:37:55.984Z","repository":{"id":186142195,"uuid":"672403847","full_name":"waynevanson/data-entry-obsidian-plugin","owner":"waynevanson","description":"Create forms that modify data in existing notes; the dataview plugin for data entry.","archived":false,"fork":false,"pushed_at":"2024-01-07T10:57:19.000Z","size":5017,"stargazers_count":28,"open_issues_count":4,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-14T06:08:40.943Z","etag":null,"topics":["data-entry","obsidian","obsidian-plugin"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/waynevanson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":"funding.yml","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},"funding":{"github":["waynevanson"]}},"created_at":"2023-07-30T00:56:40.000Z","updated_at":"2025-03-18T12:17:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"e85cdb6e-2d63-4695-9352-e896855ac517","html_url":"https://github.com/waynevanson/data-entry-obsidian-plugin","commit_stats":null,"previous_names":["waynevanson/data-entry-obsidian-plugin"],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waynevanson%2Fdata-entry-obsidian-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waynevanson%2Fdata-entry-obsidian-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waynevanson%2Fdata-entry-obsidian-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waynevanson%2Fdata-entry-obsidian-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/waynevanson","download_url":"https://codeload.github.com/waynevanson/data-entry-obsidian-plugin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248830395,"owners_count":21168272,"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":["data-entry","obsidian","obsidian-plugin"],"created_at":"2024-10-15T07:08:12.393Z","updated_at":"2025-04-14T06:09:06.896Z","avatar_url":"https://github.com/waynevanson.png","language":"TypeScript","readme":"# Data Entry - Obsidian Plugin\n\nAn Obsidian.md plugin that turns your metadata into a form.\n\nFeel free to submit issues and discussions with your desires [here on GitHub](https://github.com/waynevanson/data-entry-obsidian-plugin/issues/new).\n\nThis is a passion project used to fit my use case, but generalised enough that it could fit yours too. Show you \u003c3 by [supporting this work](https://github.com/sponsors/waynevanson).\n\nCUrrently haven' had a releasedue to big refactor.\n\n## Summary\n\n- Create your datasource (frontmatter metadata within a file)\n- Create the schema that represents that datasource using [JSONSCHEMA](https://json-schema.org/specification.html).\n- (Optionally) customise how the data is represented as a UI using [JSONFORMS](https://jsonforms.io/docs#how-does-it-work).\n- Add a `data-entry` codeblock with the form configuration\n- Enter read mode and enjoy a form!\n\nFor recent additions to this plugin, please visit the [changelog](https://github.com/waynevanson/data-entry-obsidian-plugin/blob/main/packages/data-entry/CHANGELOG.md)\n\n## Quick Start\n\nOnce the plugin is installed from the community store and **enabled**,\nCopy the following into a new file and enter read mode.\n\n\u003cpre\u003e\n\u003ccode\u003e\n---\nschema:\n  type: object\n  properties:\n    name:\n      type: string\n    hobbies:\n      type: array\n      items:\n        type: string\n---\n\n```data-entry\ndatasource:\n  file:\nschema:\n  file:\n```\n\n\n\n\u003c/code\u003e\u003c/pre\u003e\n\n## Please Note\n\n- Although this plugin exists in the obsidian store, it's still a work in progress.\n- UI will look janky because Obsidian overrides some styles. Will start working on this soon.\n- There's a major bug when editing a schema for a note that is already open. Close the note and reopen it to remove the error. This is next priority.\n\n## Preview\n\n\u003cdetails\u003e\n\u003csummary\u003eClick to open\u003c/summary\u003e\n\n![](./assets/mobile-data.png)\n![](./assets/mobile.png)\n![](./assets/tablet.png)\n![](./assets/desktop.png)\n\n\u003c/details\u003e\n\n## Configuration\n\nPlease visit these links for the definitions of [JSONSCHEMA](https://json-schema.org/specification.html) and [JSONFORMS](https://jsonforms.io/docs#how-does-it-work). JJSONSCHEMA capabilities have been extended with the [following formats](https://ajv.js.org/packages/ajv-formats.html)\n\nThe config looks like the typescript interface below:\n\n```typescript\nexport interface UserConfiguration {\n  datasource: {\n    file?: {\n      path?: string;\n      frontmatter?: string;\n    };\n  };\n  schema:\n    | {\n        file?: {\n          path?: string;\n          frontmatter?: string;\n        };\n      }\n    | {\n        inline: JSONSCHEMA;\n      };\n  uischema:\n    | {\n        file?: {\n          path?: string;\n          frontmatter?: string;\n        };\n      }\n    | {\n        inline: UISCHEMA;\n      };\n}\n```\n\nWhich will resolve with the following defaults, unless changed in the settings.\n\n```typescript\n{\n  datasource: {\n    file: {\n      path: '${CURRENT_FILE}';\n      frontmatter: 'data';\n    }\n  },\n  schema:\n    file: {\n      path: '${CURRENT_FILE}';\n      frontmatter: 'schema';\n    }\n  // actually defaults to null because uischema can be inferred from schema.\n  // passing \"file\" will use the following configuration\n  uischema:\n    file: {\n      path: '${CURRENT_FILE}';\n      frontmatter: 'uischema';\n    }\n}\n```\n\n## Developers\n\nHere is some info that we can use.\n\n## How it works\n\nPlugin holds the state of our application.\nConfig is read into the plugin when a markdown file contains `data-entry`.\nWe validate this config, inject some defaults and render the UI via react/preact.\n\nWe read many files frontmatter contents for the datasource, schema and uischema if we need to.\nWe use the JSONFORMS react component to render the schema and uischema, keeping track of the data as they fill it in.\n\n### Packages\n\nThis repository contains multiple packages to ensure concerns are clearly separated.\n\n- `packages/data-entry` contains the plugin that users install on their devices.\n- `packages/obsidian-mocks` contains mocks used to replicate obsidian functionality, as the packages provided by the Obsidian team contains only types and not any implementation for tests.\n","funding_links":["https://github.com/sponsors/waynevanson"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaynevanson%2Fdata-entry-obsidian-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwaynevanson%2Fdata-entry-obsidian-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaynevanson%2Fdata-entry-obsidian-plugin/lists"}