{"id":13341714,"url":"https://github.com/vaimee/zion","last_synced_at":"2026-06-10T15:02:18.111Z","repository":{"id":37429875,"uuid":"470669422","full_name":"vaimee/zion","owner":"vaimee","description":" A scalable Thing Description Directory","archived":false,"fork":false,"pushed_at":"2024-08-18T18:07:35.000Z","size":2107,"stargazers_count":19,"open_issues_count":19,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-04T23:03:00.769Z","etag":null,"topics":["database","fastify","iot","thing-description-directory","web-of-things","wot"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/vaimee.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.bib","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-03-16T16:41:16.000Z","updated_at":"2025-02-03T06:53:05.000Z","dependencies_parsed_at":"2022-07-08T18:43:05.316Z","dependency_job_id":"f077ac7c-8fd3-4a2f-a2a8-c0d7af20a9e5","html_url":"https://github.com/vaimee/zion","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/vaimee/zion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaimee%2Fzion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaimee%2Fzion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaimee%2Fzion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaimee%2Fzion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vaimee","download_url":"https://codeload.github.com/vaimee/zion/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vaimee%2Fzion/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34157453,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"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":["database","fastify","iot","thing-description-directory","web-of-things","wot"],"created_at":"2024-07-29T19:25:43.518Z","updated_at":"2026-06-10T15:02:18.090Z","avatar_url":"https://github.com/vaimee.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./doc/logo-dark.png\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"./doc/logo.png\"\u003e\n  \u003cimg width=\"50%\" alt=\"Shows a abstract star with on the right Zion name\" src=\"./doc/logo.png\"\u003e\n\u003c/picture\u003e\n\n\u003ca href=\"https://github.com/vaimee/zion/actions\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/vaimee/zion/main.yml?branch=main\u0026style=flat-square\u0026logo=github\u0026label=CI\" alt=\"CI status\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/vaimee/zion/issues\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/vaimee/zion.svg?style=flat-square\" alt=\"Issues\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/vaimee/zion/blob/main/LICENSE\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/github/license/vaimee/zion.svg?style=flat-square\" alt=\"License\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://discord.gg/6UTJ6HgZ\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/Discord-7289DA?style=flat-square\u0026logo=discord\u0026logoColor=white\u0026label=zion\" alt=\"Discord chat\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://www.linkedin.com/company/vaimee/\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/-LinkedIn-black.svg?style=flat-square\u0026logo=linkedin\u0026color=blue\" alt=\"LinkedIn\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/vaimee/zion/blob/main/.eslintrc.js\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/eslint-3A33D1?style=flat-square\u0026logo=eslint\u0026logoColor=white\" alt=\"eslint support\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/vaimee/zion/blob/main/.prettierrc.json\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/prettier-1A2C34?style=flat-square\u0026logo=prettier\u0026logoColor=F7BA3E\" alt=\"prettier\" /\u003e\u003c/a\u003e\n# Zion - A scalable Thing Description Directory\n**Overview** \n\n\u003e In the context of the [W3C Web of Things](https://www.w3.org/WoT/), Thing Description Directories (TDDs) are services that store a set of Thing Descriptions. A TDD offers a set of APIs with CRUD operations on the collection of TDs that it stores. Zion implements the [standard](https://w3c.github.io/wot-discovery/) TDD APIs with a set of extensions to cover the use cases of [VAIMEE](https://vaimee.com/). \n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#publication\"\u003ePublication\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n## Features\nZion employs the best open-source technologies to provide a scalable TDD service. Zion wants to be [fast](https://github.com/vaimee/tdd-workload-generator), ease to use\nand flexible. Currently, Zion supports the following features:\n- [Introduction methods](https://w3c.github.io/wot-discovery/#introduction-mech) :\n  - DNS-SD\n  - Well-known URL\n  - CoRE Link Format and `/.well-known/core`\n- Standard API:\n  - CRUD operations on the collection of TDs\n  - JSONPath queries compliant with IETF JSONPath standard [draft 5](https://datatracker.ietf.org/doc/html/draft-ietf-jsonpath-base#section-3.5.8)\n  - Pagination support\n- Basic support for authentication and authorization\n## Getting started\n\nThank you for considering using Zion in your Web of Things project! 🥳. Zion is still in its early stages and it is still in the process of being tested and developed.\nHowever, if you already want to deploy on your own you have three options:\n- [Use docker-compose locally](#clone-and-docker-compose)\n- [Clone and npm](#clone-and-npm)\n- [Use it in your deployment](#docker-compose)\n\n### Clone and docker compose\nYou can clone the repository and start Zion using the following command:\n```bash\ndocker compose up\n```\nIf you want to manually set up your database, you can edit the example [.env](.env) file:\n```bash\nZION_NODE_ENV=development\n# ZION_SERVER_PORT specifies the port number on which the Zion server will listen for incoming requests.\nZION_SERVER_PORT=3000\n# ZION_DB_HOST specifies the host address where the Zion target database is located.\nZION_DB_HOST=localhost\n# ZION_DB_PORT specifies the port number on which the Zion target database server is listening.\nZION_DB_PORT=5432\n# ZION_DB_USER specifies the username to connect to the Zion target database.\nZION_DB_USER=zion\n# ZION_DB_PASSWORD specifies the password for the Zion target database user.\nZION_DB_PASSWORD=zion\n# ZION_DB_DATABASE specifies the name of the Zion target database.\nZION_DB_DATABASE=zion\n# ZION_JWT_SECRET specifies the secret key used for JSON Web Token (JWT) encryption and decryption.\nZION_JWT_SECRET=abc123\n# ZION_JWT_EXPIRES_IN specifies the duration for which a JWT token remains valid.\n# Examples: \"15m\" (15 minutes), \"1h\" (1 hour), \"7d\" (7 days), etc.\nZION_JWT_EXPIRES_IN=15m\n```\n### Clone and npm \n\u003e **Requirements** Node.js v16+\n\nIf you want to start Zion in development mode, you can clone the repository and run the following command:\n```bash\nnpm ci\nnpm start\n```\n**Note**: you have to manually set up your database and configure Zion using the [.env](.env) file.\n\n\n### Docker compose\nYou can start Zion right away using this simple docker compose file together with your local [.env](./evn) file :\n```docker-compose.yml\nversion: '3.6'\nservices:\n  database:\n    image: postgres:14.3-alpine\n    environment:\n      - POSTGRES_USER=zion\n      - POSTGRES_PASSWORD=zion\n      - POSTGRES_DB=zion\n    container_name: 'zion-postgres'\n  zion:\n    image: vaimee/zion:latest\n    depends_on:\n      - database\n    entrypoint: ['sh', '-c','npm run db:migrate:latest \u0026\u0026 npm run start:prod']\n    ports: \n      - 3000:3000\n    environment:\n      - ZION_NODE_ENV=production\n      - ZION_SERVER_PORT=3000\n      # Using task name as explained in https://github.com/vaimee/zion/issues/11#issuecomment-1434457337\n      - ZION_DB_HOST=tasks.database\n      - ZION_DB_PORT=5432\n      - ZION_DB_USER=zion\n      - ZION_DB_PASSWORD=zion\n      - ZION_DB_DATABASE=zion\n      - ZION_JWT_SECRET=change-me\n      - ZION_JWT_EXPIRES_IN=7d\n    container_name: zion\n```\n## Publication\n\nThe full paper, available [here](https://ieeexplore.ieee.org/document/10454685), should be cited if this repository is utilized for research, thesis, or industrial activities involving publications.\n\n```\nC. Aguzzi, L. Gigli, I. Zyrianoff and L. Roffia, \"ZION: A Scalable W3C Web of Things Directory,\" 2024 IEEE 21st Consumer Communications \u0026 Networking Conference (CCNC), Las Vegas, NV, USA, 2024, pp. 1-6, doi: 10.1109/CCNC51664.2024.10454685.\n```\n\n```\n@INPROCEEDINGS{10454685,\n  author={Aguzzi, Cristiano and Gigli, Lorenzo and Zyrianoff, Ivan and Roffia, Luca},\n  booktitle={2024 IEEE 21st Consumer Communications \u0026 Networking Conference (CCNC)}, \n  title={ZION: A Scalable W3C Web of Things Directory}, \n  year={2024},\n  volume={},\n  number={},\n  pages={1-6},\n  doi={10.1109/CCNC51664.2024.10454685}\n}\n```\n\n## Roadmap\n\n- [ ] Standard API\n  * [ ] XPath queries\n  * [ ] SPARQL queries supported with an external SPARQL endpoint\n  * [x] CoRE introduction method\n- [ ] Experimental API\n  * [ ] GEO spatial queries\n  * [ ] User private TD collection CRUD \n- [ ] Caching layer\n- [ ] Cluster mode support\n- [ ] Advance authentication\n  * [ ] OpenID Connect\n  * [ ] OAuth2 Bearer Token\n\nOther minor features are listed in the Issue tracker with the label `feature`.\n## Contributing\nThank you for considering contributing to Zion. Please follow the guidelines in the [CONTRIBUTING.md](CONTRIBUTING.md) file.\n\n## Contact\nLorenzo Gigli - [@hyperloris](https://twitter.com/hyperloris) - [lorenzo.gigli@vaimee.com](mailto://lorenzo.gigli@vaimee.com)\n\n[Cristiano Aguzzi](https://team.vaimee.com/cristiano) - [@relucri](https://twitter.com/relucri) - [cristiano.aguzzi@vaimee.com](mailto://cristiano.aguzzi@vaimee.com)\n\n[VAIMEE](https://vaimee.com) - [@MaVaimee](https://twitter.com/MaVaimee) - [info@vaimee.com](mailto://info@vaimee.com)\n## Acknowledgments\n![DESMO-LD](https://github.com/vaimee/desmo/blob/c763cec12f6c9060a9f1a3335ff4cff60ece3df2/imgs/desmo-logo.png)\n\nZion is founded by the [DESMO-LD project](https://ontochain.ngi.eu/content/desmo-ld) inside the [ONTOCHAIN](https://ontochain.ngi.eu/) European organization part of the [Next Generation Internet](https://www.ngi.eu/) fund.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaimee%2Fzion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvaimee%2Fzion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvaimee%2Fzion/lists"}