{"id":18610583,"url":"https://github.com/ixnode/yads","last_synced_at":"2026-04-18T07:31:37.124Z","repository":{"id":47133444,"uuid":"391312739","full_name":"ixnode/yads","owner":"ixnode","description":"Store everything in one place, make connections and share it via an API.","archived":false,"fork":false,"pushed_at":"2021-09-12T21:41:03.000Z","size":753,"stargazers_count":1,"open_issues_count":10,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-16T23:11:42.955Z","etag":null,"topics":["api","documentstore","graphql","php8","rest","symfony","symfony5","yads"],"latest_commit_sha":null,"homepage":"https://getyads.org","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ixnode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-07-31T09:38:00.000Z","updated_at":"2021-09-12T21:39:13.000Z","dependencies_parsed_at":"2022-08-24T20:20:47.854Z","dependency_job_id":null,"html_url":"https://github.com/ixnode/yads","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/ixnode/yads","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ixnode%2Fyads","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ixnode%2Fyads/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ixnode%2Fyads/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ixnode%2Fyads/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ixnode","download_url":"https://codeload.github.com/ixnode/yads/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ixnode%2Fyads/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31961094,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"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":["api","documentstore","graphql","php8","rest","symfony","symfony5","yads"],"created_at":"2024-11-07T03:11:08.511Z","updated_at":"2026-04-18T07:31:37.096Z","avatar_url":"https://github.com/ixnode.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"docs/images/yads.svg\" width=\"350px\" /\u003e\u003c/p\u003e\n\n# YADS\n\n\u003e *Yet another document store*\n\nStore everything in one place, make connections and share it via an API.\n\n## 1. Run Document Store and API\n\nWith the help of [Docker](https://docs.docker.com/get-docker/), setting up this environment is a breeze.\n\n### 1.1 In local environment\n\n```bash\n❯ git clone https://github.com/ixnode/yads.git \u0026\u0026 cd yads\n❯ docker-compose up -d\n❯ docker-compose exec yads composer install\n❯ docker-compose exec yads composer reinitialize-db-prod\n```\n\nStart now with [API Platform](https://api-platform.com/) at http://localhost:8080/api/v1/docs.html or get all entrypoints via API:\n\n```bash\n❯ curl -s http://localhost:8080/api/v1 \\\n  -H 'accept: application/ld+json' | jq .\n```\n\nAPI response:\n\n```json\n{\n  \"@context\": \"/api/v1/contexts/Entrypoint\",\n  \"@id\": \"/api/v1\",\n  \"@type\": \"Entrypoint\",\n  \"document\": \"/api/v1/documents\",\n  \"documentTag\": \"/api/v1/document_tags\",\n  \"documentType\": \"/api/v1/document_types\",\n  \"graph\": \"/api/v1/graphs\",\n  \"graphRule\": \"/api/v1/graph_rules\",\n  \"graphType\": \"/api/v1/graph_types\",\n  \"role\": \"/api/v1/roles\",\n  \"tag\": \"/api/v1/tags\"\n}\n```\n\n#### DB access\n\n|         | DB        | Test DB     |\n|---------|-----------|-------------|\n| *host*: | 127.0.0.1 | 127.0.0.1   |\n| *port*: | `3333`    | `3334`      |\n| *db*:   | `yads`    | `yads-test` |\n| *user*: | `yads`    | `yads`      |\n| *pass*: | `yads`    | `yads`      |\n\n```bash\n❯ mysql -h127.0.0.1 -P3333 -uyads -pyads yads\n```\n\n```bash\n❯ mysql -h127.0.0.1 -P3334 -uyads -pyads yads-test\n```\n\n#### Some command line commands\n\n```bash\n❯ docker-compose exec yads php -v\nPHP 8.0.9 (cli) (built: Jul 30 2021 00:29:20) ( NTS )\nCopyright (c) The PHP Group\nZend Engine v4.0.9, Copyright (c) Zend Technologies\n    with Zend OPcache v8.0.9, Copyright (c), by Zend Technologies\n❯ docker-compose exec yads bin/console -V\nSymfony 5.3.6 (env: dev, debug: true)\n❯ docker-compose exec yads composer -V\nComposer version 2.1.5 2021-07-23 10:35:47\n```\n\n#### Choice / alternative\n\nAlternatively, one can also start the Symfony server and only use the Docker database. This variant is more performant than the local Docker variant, especially on the Mac, but requires an installed Symfony client:\n\n```bash\n❯ symfony server:ca:install\n❯ symfony server:start -d\n```\n\n\u003cdetails\u003e\n\t\u003csummary\u003eClick to view the output of `symfony server:start`\u003c/summary\u003e\n\n```bash\n\n [OK] Web server listening\n      The Web server is using PHP FPM 8.0.9\n      https://127.0.0.1:8004\n\n\nStream the logs via symfony server:log\n```\n\u003c/details\u003e\n\nDepending on the output above, start now with [API Platform](https://api-platform.com/) at https://localhost:8004/api/v1/docs.html or get all entrypoints via API:\n\n```bash\n❯ curl -s https://localhost:8004/api/v1 \\\n  -H 'accept: application/ld+json' | jq .\n```\n\n### 1.2 Upkeep\n\n#### Reinitialize db\n\n```bash\n❯ composer reinitialize-db-prod\n```\n\n\u003cdetails\u003e\n\t\u003csummary\u003eClick to view the output of `composer reinitialize-db-prod`\u003c/summary\u003e\n\n```bash\n\n !\n ! [CAUTION] This operation should not be executed in a production environment!\n !\n\n Creating database schema...\n\n\n [OK] Database schema created successfully!\n\n\n\u003e bin/console doctrine:fixtures:load -n\n\n   \u003e purging database\n   \u003e loading App\\DataFixtures\\AppFixtures\n```\n\u003c/details\u003e\n\n\n\n## 2. Examples\n\n### Create `DocumentType` entity\n\n#### Create `DocumentType` data\n\n```bash\n❯ vi data/json/document.type.task.json\n```\n\n\u003cdetails\u003e\n\t\u003csummary\u003eClick to view content of `data/json/document.type.task.json`\u003c/summary\u003e\n\n```json\n{\n  \"type\": \"task\",\n  \"allowedAttributes\": {\n    \"$id\": \"document.data.task.schema.json\",\n    \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n    \"title\": \"Task document data\",\n    \"description\": \"Data from document of type task\",\n    \"type\": \"object\",\n    \"additionalProperties\": false,\n    \"properties\": {\n      \"title\": {\n        \"type\": \"string\",\n        \"minLength\": 2,\n        \"maxLength\": 255,\n        \"description\": \"The title of the task.\"\n      },\n      \"description\": {\n        \"type\": \"string\",\n        \"minLength\": 10,\n        \"maxLength\": 65535,\n        \"description\": \"The description of the task.\"\n      },\n      \"has_date_of_completion\": {\n        \"type\": \"boolean\"\n      },\n      \"date_of_completion\": {\n        \"type\": \"string\",\n        \"format\": \"date\",\n        \"description\": \"The date on which this task must be completed.\"\n      }\n    },\n    \"required\": [\n      \"title\",\n      \"description\",\n      \"has_date_of_completion\"\n    ]\n  },\n  \"defaults\": [\n    \"title\"\n  ]\n}\n```\n\u003c/details\u003e\n\n#### Post new `DocumentType` entity\n\n```bash\n❯ curl -X 'POST' -s \\\n  'https://127.0.0.1:8004/api/v1/document_types' \\\n  -H 'accept: application/ld+json' \\\n  -H 'Content-Type: application/ld+json' \\\n  -d '@data/json/document.type.task.json' | jq .\n```\n\n\u003cdetails\u003e\n\t\u003csummary\u003eClick to view response of POST\u003c/summary\u003e\n\n```json\n{\n  \"@context\": \"/api/v1/contexts/DocumentType\",\n  \"@id\": \"/api/v1/document_types/1\",\n  \"@type\": \"DocumentType\",\n  \"id\": 1,\n  \"type\": \"string\",\n  \"allowedAttributes\": {\n    \"$id\": \"document.data.task.schema.json\",\n    \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n    \"title\": \"Task document data\",\n    \"description\": \"Data from document of type task\",\n    \"type\": \"object\",\n    \"additionalProperties\": false,\n    \"properties\": {\n      \"title\": {\n        \"type\": \"string\",\n        \"minLength\": 2,\n        \"maxLength\": 255,\n        \"description\": \"The title of the task.\"\n      },\n      \"description\": {\n        \"type\": \"string\",\n        \"minLength\": 10,\n        \"maxLength\": 65535,\n        \"description\": \"The description of the task.\"\n      },\n      \"has_date_of_completion\": {\n        \"type\": \"boolean\"\n      },\n      \"date_of_completion\": {\n        \"type\": \"string\",\n        \"format\": \"date\",\n        \"description\": \"The date on which this task must be completed.\"\n      }\n    },\n    \"required\": [\n      \"title\",\n      \"description\",\n      \"has_date_of_completion\"\n    ]\n  },\n  \"defaults\": [\n    \"title\"\n  ],\n  \"createdAt\": \"2021-08-04T21:03:54+00:00\",\n  \"updatedAt\": \"2021-08-04T21:03:54+00:00\"\n}\n```\n\u003c/details\u003e\n\n### Create `Document` entity\n\n#### Create `Document` data\n\n```bash\n❯ vi data/json/document.task.json\n```\n\n\u003cdetails\u003e\n\t\u003csummary\u003eClick to view content of `document.task.json`\u003c/summary\u003e\n\n```json\n{\n  \"data\": {\n    \"title\": \"Lohnsteuererklärung einrichen\",\n    \"description\": \"Die Lohnsteuererklärung muss eingereicht werden.\",\n    \"has_date_of_completion\": false\n  },\n  \"documentType\": \"/api/v1/document_types/1\"\n}\n```\n\u003c/details\u003e\n\n#### Post new `Document` entity\n\n```bash\n❯ curl -X 'POST' -s \\\n  'https://127.0.0.1:8004/api/v1/documents' \\\n  -H 'accept: application/ld+json' \\\n  -H 'Content-Type: application/ld+json' \\\n  -d '@data/json/document.task.json' | jq .\n```\n\n\u003cdetails\u003e\n\t\u003csummary\u003eClick to view response of POST\u003c/summary\u003e\n\n```json\n{\n  \"@context\": \"/api/v1/contexts/Document\",\n  \"@id\": \"/api/v1/documents/1\",\n  \"@type\": \"Document\",\n  \"data\": {\n    \"title\": \"Lohnsteuererklärung einrichen\",\n    \"description\": \"Die Lohnsteuererklärung muss eingereicht werden.\",\n    \"has_date_of_completion\": false\n  },\n  \"documentType\": \"/api/v1/document_types/1\",\n  \"id\": 1,\n  \"createdAt\": \"2021-08-04T21:47:58+00:00\",\n  \"updatedAt\": \"2021-08-04T21:47:58+00:00\"\n}\n```\n\u003c/details\u003e\n\n### Get `Document` entities\n\n#### All entities\n\n```bash\n❯ curl -s \\\n  'https://127.0.0.1:8004/api/v1/documents' \\\n  -H 'Content-Type: application/ld+json' | jq .\n```\n\n\u003cdetails\u003e\n\t\u003csummary\u003eClick to view response of GET /api/v1/documents\u003c/summary\u003e\n\n```json\n{\n  \"@context\": \"/api/v1/contexts/Document\",\n  \"@id\": \"/api/v1/documents\",\n  \"@type\": \"hydra:Collection\",\n  \"hydra:member\": [\n    {\n      \"@id\": \"/api/v1/documents/1\",\n      \"@type\": \"Document\",\n      \"data\": {\n        \"title\": \"Lohnsteuererklärung einrichen\",\n        \"description\": \"Die Lohnsteuererklärung muss eingereicht werden.\",\n        \"has_date_of_completion\": false\n      },\n      \"documentType\": \"/api/v1/document_types/1\",\n      \"id\": 1,\n      \"createdAt\": \"2021-08-04T21:47:58+00:00\",\n      \"updatedAt\": \"2021-08-04T21:47:58+00:00\"\n    }\n  ],\n  \"hydra:totalItems\": 1\n}\n```\n\u003c/details\u003e\n\n\n#### Single entity\n\n```bash\n❯ curl -s \\\n  'https://127.0.0.1:8004/api/v1/documents/1' \\\n  -H 'Content-Type: application/ld+json' | jq .\n```\n\n\u003cdetails\u003e\n\t\u003csummary\u003eClick to view response of GET /api/v1/documents\u003c/summary\u003e\n\n```json\n{\n  \"@context\": \"/api/v1/contexts/Document\",\n  \"@id\": \"/api/v1/documents/1\",\n  \"@type\": \"Document\",\n  \"data\": {\n    \"title\": \"Lohnsteuererklärung einrichen\",\n    \"description\": \"Die Lohnsteuererklärung muss eingereicht werden.\",\n    \"has_date_of_completion\": false\n  },\n  \"documentType\": \"/api/v1/document_types/1\",\n  \"id\": 1,\n  \"createdAt\": \"2021-08-04T21:47:58+00:00\",\n  \"updatedAt\": \"2021-08-04T21:47:58+00:00\"\n}\n```\n\u003c/details\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fixnode%2Fyads","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fixnode%2Fyads","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fixnode%2Fyads/lists"}