{"id":33145788,"url":"https://github.com/dlcs/elucidate-server","last_synced_at":"2026-01-19T12:10:06.571Z","repository":{"id":45161191,"uuid":"75723141","full_name":"dlcs/elucidate-server","owner":"dlcs","description":"A W3C and OA compliant Web Annotation server","archived":false,"fork":false,"pushed_at":"2022-01-04T16:32:58.000Z","size":591,"stargazers_count":51,"open_issues_count":24,"forks_count":15,"subscribers_count":20,"default_branch":"master","last_synced_at":"2024-04-18T20:36:11.480Z","etag":null,"topics":["annotations","dlcs","elucidate","elucidate-server","java","json-ld","oa","open-annotation","w3c","w3c-annotations","web-annotation","web-annotation-protocol"],"latest_commit_sha":null,"homepage":"https://dlcs.info/features.html","language":"Java","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/dlcs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-12-06T11:00:15.000Z","updated_at":"2023-08-31T13:49:40.000Z","dependencies_parsed_at":"2022-08-28T14:13:02.116Z","dependency_job_id":null,"html_url":"https://github.com/dlcs/elucidate-server","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/dlcs/elucidate-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlcs%2Felucidate-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlcs%2Felucidate-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlcs%2Felucidate-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlcs%2Felucidate-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dlcs","download_url":"https://codeload.github.com/dlcs/elucidate-server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlcs%2Felucidate-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285389437,"owners_count":27163377,"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","status":"online","status_checked_at":"2025-11-20T02:00:05.334Z","response_time":54,"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":["annotations","dlcs","elucidate","elucidate-server","java","json-ld","oa","open-annotation","w3c","w3c-annotations","web-annotation","web-annotation-protocol"],"created_at":"2025-11-15T13:00:35.019Z","updated_at":"2025-11-20T07:01:26.761Z","avatar_url":"https://github.com/dlcs.png","language":"Java","funding_links":[],"categories":["Annotations"],"sub_categories":["Annotation Servers"],"readme":"# Elucidate\n\nElucidate is a Web Annotation server that is compliant with both the [W3C Web Annotation Data Model](https://www.w3.org/TR/annotation-model/) and associated [protocol](https://www.w3.org/TR/annotation-protocol/), and the [Open Annotation (OA) Data Model](http://www.openannotation.org/spec/core/).\n\n## Build Status\n\n| Branch    | Status                                                                                                                         |\n|-----------|--------------------------------------------------------------------------------------------------------------------------------|\n| `master`  | [![Build Status](https://travis-ci.org/dlcs/elucidate-server.svg?branch=master)](https://travis-ci.org/dlcs/elucidate-server)  |\n| `develop` | [![Build Status](https://travis-ci.org/dlcs/elucidate-server.svg?branch=develop)](https://travis-ci.org/dlcs/elucidate-server) |\n\n## Getting Started\n\n### Prerequisites\n\nElucidate Server has been built and tested against:\n\n```\nJava 8+\n```\n\n```\nApache Tomcat 8+\n```\n\n```\nPostgreSQL 9.4+\n```\n\nElucidate Server and its dependencies are written in pure Java, and is designed to work with PostgreSQL by default.\n\n### Building\n\nThe Elucidate Server has a number of dependencies that must be built first:\n\n * [`elucidate-parent`](elucidate-parent/)\n\t * Parent Maven project that defines dependency library version numbers and common dependencies amongst all Elucidate projects.\n * [`elucidate-common-lib`](elucidate-common-lib/)\n\t * Contains common classes that are used by similar projects.\n * [`elucidate-converter`](elucidate-converter/)\n\t * Simple library that (at present) allows for conversion between a W3C Web Annotation and OA Web Annotation.\n\nEach dependency and the Elucidate Server itself can be built using Maven:\n\n```\nmvn clean package install -U\n```\n\n### Configuration\n\nElucidate Server requires that several configuration properties are set to function correctly.\n\n| Name | Default value | Description |\n| --- | --- | --- |\n| db.user | `\u003cempty\u003e` | Database user to authenticate as.\n| db.url | `\u003cempty\u003e` | JDBC database URL to connect to.\n| base.scheme | `\"http\"` | The URI scheme that annotation IRIs will use.\n| base.host | `\"localhost\"` | The hostname that annotation IRIs will use.\n| base.port | `8080` | The port that annotation IRIs will use. May be omitted if it set to a default HTTP/HTTPS port.\n| base.path | `\"/annotation\"` | The path prefix that that annotation IRIs will use.\n| log4j.config.location | `\"classpath:logging/log4j.xml\"` | A path to a log4j XML configuration/properties file.\n| auth.enabled | `false` | A flag indicating if authorization on annotation access should be enabled.\n| auth.token.verifierType | `secret` | Either `secret` or `pubkey`, indicating whether the JWT verification key is a shared secret or an RSA public key.\n| auth.token.verifierKey | `\u003cempty\u003e` | The secret or public key used to verify signed tokens.\n| auth.token.uidProperties | `sub,user_name` | The name of the JWT property that represents a unique user ID.\n\nA full listing of configuration options available to change can be found in [`elucidate-server.properties`](elucidate-server/src/main/resources/elucidate-server.properties).\nAny of these options can be configured or overridden using [JNDI environment properties](https://docs.oracle.com/javase/jndi/tutorial/beyond/env/source.html) by passing a Java system property on the command line or setting an environment variable.\n\n**Note**: if set as an environment variable, the option name should be uppercase with any hyphens and periods replaced with underscores. E.g., `base.port` becomes `BASE_PORT`.\n\n### Database\n\nElucidate Server has been built and tested against PostgreSQL 9.4+  (the `jsonb` type is required for persistence).\n\nA [Liquibase](https://www.liquibase.org/) changelog contains the SQL scripts required to create the Elucidate Server schema.\nOn first connection to a JDBC URI (given by `db.url`) the changes will be applied and a changelog table\ncreated in the database for any subsequent runs.\n\n### Security\n\nElucidate Server supports user authentication and authorization using detached JWTs as credentials. Authentication\ncan be enabled or disabled by toggling the `auth.enabled` property listed above. Those tokens can be verified using\neither a shared secret key or RSA public key (given by `auth.token.verifierType` and `auth.token.verifierKey`).\n\nSince Elucidate doesn't store authoritative user information on its own, it relies on the token providing\na unique property that can be used to refer to that user throughout the lifetime of their interactions with the annotation server.\nA list of properties that will be searched for the unique value can be configured by setting the `auth.token.uidProperties`\noption.\n\n## Usage\n\nSee [`USAGE.md`](USAGE.md) for some sample requests.\n\n## Built With\n\n* [Spring Framework](https://projects.spring.io/spring-framework/)\n* [Jackson](http://wiki.fasterxml.com/JacksonHome)\n* [JSONLD-JAVA](https://github.com/jsonld-java/jsonld-java)\n* [JSON Schema Validator](https://github.com/daveclayton/json-schema-validator)\n* [Liquibase](https://www.liquibase.org)\n\n## Contributing\n\nPlease read [`CONTRIBUTING.md`](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n\nContributors should ensure that their code is formatted in a style that is as close to the existing style as possible.\n\n## Versioning\n\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/dlcs/elucidate-server/tags).\n\n## License\n\nThis project is licensed under the MIT License - see the [`LICENSE`](LICENSE) file for details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdlcs%2Felucidate-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdlcs%2Felucidate-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdlcs%2Felucidate-server/lists"}