{"id":23122556,"url":"https://github.com/folio-org/ui-ldp","last_synced_at":"2026-01-02T14:12:20.847Z","repository":{"id":37313597,"uuid":"256313915","full_name":"folio-org/ui-ldp","owner":"folio-org","description":"Reporting Front End module","archived":false,"fork":false,"pushed_at":"2025-08-06T23:49:02.000Z","size":5783,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-08-07T00:20:57.245Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":false,"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/folio-org.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":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-04-16T19:44:52.000Z","updated_at":"2025-08-06T23:49:05.000Z","dependencies_parsed_at":"2023-10-18T17:26:52.531Z","dependency_job_id":"1b9f491d-26c0-4e72-966a-04dbd9638a53","html_url":"https://github.com/folio-org/ui-ldp","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/folio-org/ui-ldp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fui-ldp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fui-ldp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fui-ldp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fui-ldp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/folio-org","download_url":"https://codeload.github.com/folio-org/ui-ldp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/folio-org%2Fui-ldp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270798842,"owners_count":24648034,"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-08-17T02:00:09.016Z","response_time":129,"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":[],"created_at":"2024-12-17T07:28:04.122Z","updated_at":"2025-10-04T08:43:56.820Z","avatar_url":"https://github.com/folio-org.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ui-ldp\n\nCopyright (C) 2020-2025 The Open Library Foundation\n\nThis software is distributed under the terms of the Apache License, Version 2.0. See the [LICENSE](LICENSE) file for more information.\n\n\u003c!-- md2toc -l 2 README.md --\u003e\n* [Introduction](#introduction)\n* [Prerequisites for local development](#prerequisites-for-local-development)\n* [Run](#run)\n* [Side-loading mod-ldp](#side-loading-mod-ldp)\n* [Configuration](#configuration)\n    * [dbinfo](#dbinfo)\n    * [Use of mod-configuration](#use-of-mod-configuration)\n* [Permissions](#permissions)\n* [Database issues](#database-issues)\n* [Migrating saved queries from GitHub to mod-settings](#migrating-saved-queries-from-github-to-mod-settings)\n* [Additional information](#additional-information)\n    * [Other documentation](#other-documentation)\n    * [Code of Conduct](#code-of-conduct)\n    * [Issue tracker](#issue-tracker)\n\n\n## Introduction\n\nLDP query builder UI for FOLIO/ReShare.\n\n![Screenshot of the module in action](screenshot3.png)\n\nCurrently has one page, a Query Builder for the [Library Data Platform](https://github.com/library-data-platform/ldp) (LDP).\n\n## Prerequisites for local development\n\n- This repo is bootstrapped by the Stripes CLI, so an Okapi backend is required to be running to login. The [testing-backend](https://app.vagrantup.com/folio/boxes/testing-backend) Vagrant box will work.\n- mod-ldp must be running and registered with Okapi\n\n## Run\n\n```\nyarn start --okapi https://folio-snapshot-okapi.dev.folio.org\n```\n\n## Side-loading mod-ldp\n\nIf developing mod-ldp locally, it's desirable to make ui-ldp refer to the local instance rather than the one of the backend that is used for other FOLIO modules, such as mod-configuration and mod-users-bl. The conceptually simplest way to do this is to run the whole FOLIO stack locally, but this is complex in practice, and requires a vast amount of memory.\n\nAn alternative is to \"side-load\" the locally running copy of mod-ldp. This can be done by setting the Stripes configuration element `modLdpUrl` to the URL of the running instance -- for example, `http://localhost:8001` if running simply with `java -jar target/mod-ldp-0.0.1-SNAPSHOT.jar`.\n\n_However_ ... it's never that easy, it? ... Done naively, this will fail because the browser's common origin policy will refuse to perform GETs and POST against servers such as mod-ldp that do not supply the `Access-Control-Allow-Origin: *` header in OPTIONS responses. In order to work around this, it's necessary to use a proxy that inserts this header, such as [Local CORS Anywhere](https://github.com/dkaoster/local-cors-anywhere), and to modify the `modLdpUrl` setting accordingly.\n\nThe `modLdpUrl` setting can be placed in a Stripes config file such as the supplied [`stripes.config.js`](stripes.config.js). To use it, ensure that its Okapi URL setting is correct, and run as\n```\nyarn start stripes.config.js\n```\n\n## Configuration\n\nThe LDP app is configured primarily by means of [mod-ldp's own configuration WSAPI](https://s3.amazonaws.com/foliodocs/api/mod-ldp/p/ldp.html), which functions as a simple key-value store in which the values are conventionally JSON strings. The following configuration entries are used:\n\n### dbinfo\n\nThe value is a JSON structure of three keys specifying how to access the underlying LDP database.\n\n* `url` -- the full URL to the LDP database, e.g. `jdbc:postgresql://some.domain.com:5432/ldp`\n* `user` -- the username that should be used to access the database: the nominated user need only have read access to the relevant tables and indexes, and should not have additional and unnecessary write access for security reasons\n* `pass` -- the password corresponding to this username\n\n### Use of mod-configuration\n\nFor historical reasons, ui-ldp also makes use of mod-configuration to store two further peices of configuration information: the limits on how many records to show in search results, and the tables to be disabled for searching. Both of these should probably be moved to use mod-ldp's own configuration store.\n\n\n## Permissions\n\nFor users who need only to search in the LDP, it suffices to assign the `module.ldp.enabled` permission (\"UI: LDP module is enabled\").\n\nThe `settings.ldp.enabled` permission (\"Settings (LDP): Can view settings\") should be assigned only to administrators, along with whichever specific `ui-ldp.settings.*` permissions are appropriate.\n\n\n## Database issues\n\nIn the LDP database, the `srs_marctab` table uses a special index which is not yet supported by the LDP app, and as a result it could put a lot of load on the LDP database. To prevent this, go to **Settings** \u003e **LDP** \u003e **Table availability**m and under **Schema `public`**, check `srs_marctab`. This will disable that table in the LDP app. (In the future we plan for the LDP app to support the `srs_marctab` table fully.)\n\nFor any local tables that are visible in the LDP App, indexes should be created on all columns. Again this will avoid putting too much load on the database. In the future we plan for the LDP App to disable filtering automatically on columns that do not have indexes (see [UILDP-52](https://issues.folio.org/browse/UILDP-52).)\n\n\n## Migrating saved queries from GitHub to mod-settings\n\nFrom v1.6.0 until 1.9.0, this module supported saved queries which were stored in GitHub repositories. As of v1.10.0, queries are now stored in FOLIO itself, using mod-settings. When migrating from an older version of ui-courses to v1.10.0 or higher, it is necessary to migrate the existing saved queries from GitHub to mod-settings. [The `folio-port-ldp-queries` script](bin) is provided to do this.\n\n\n## Additional information\n\n### Other documentation\n\n[Library Data Platform](https://github.com/library-data-platform/ldp) (LDP)\n-- an open source platform for analytics in libraries.\n\n[mod-ldp](https://github.com/folio-org/mod-ldp)\n-- LDP query builder server-side module for FOLIO/ReShare.\n\n### Code of Conduct\n\nRefer to the Wiki [FOLIO Code of Conduct](https://wiki.folio.org/display/COMMUNITY/FOLIO+Code+of+Conduct).\n\n### Issue tracker\n\nIssues are tracked in [the JIRA issue UILFP](https://issues.folio.org/projects/UILDP).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffolio-org%2Fui-ldp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffolio-org%2Fui-ldp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffolio-org%2Fui-ldp/lists"}