This is an implementation of the W3C WoT Thing Description Directory (TDD), a registry of Thing Descriptions.
Visit the following pages to get started:
- Deployment: How to deploy the software, as Docker container, Debian package, or platform-specific binary distributions
- Configuration: How to configure the server software with JSON files and environment variables
- API Documentation: How to interact with the networking APIs
Further documentation are available in the wiki.
- Service Discovery
- DNS-SD registration
- LinkSmart Service Catalog registration
- RESTful API
- HTTP API
- Thing Description (TD) CRUD, catalog, and validation
- XPath 3.0 and JSONPath query languages
- TD validation with JSON Schema (default)
- Request authentication and authorization
- JSON-LD response format
- HTTP API
- Persistent Storage
- LevelDB
- CI/CD (Github Actions)
- Automated testing
- Automated builds and releases (Docker images, binaries)
The dependencies of this package are managed by Go Modules.
Clone this repo:
git clone https://github.com/linksmart/thing-directory.git
cd thing-directory
Compile from source:
go build
This will result in an executable named thing-directory
(linux/macOS) or thing-directory.exe
(windows).
Get the CLI arguments help (linux/macOS):
$ ./thing-directory -help
Usage of ./thing-directory:
-conf string
Configuration file path (default "conf/thing-directory.json")
-version
Print the API version
Run (linux/macOS):
$ ./thing-directory --conf=sample_conf/thing-directory.json
To build and run together:
go run . --conf=sample_conf/thing-directory.json
Test all packages (add -v
flag for verbose results):
go test ./...
Contributions are welcome.
Please fork, make your changes, and submit a pull request. For major changes, please open an issue first and discuss it with the other authors.