{"id":34191402,"url":"https://github.com/nla/nla-blacklight","last_synced_at":"2026-02-09T03:04:47.059Z","repository":{"id":65308366,"uuid":"314156754","full_name":"nla/nla-blacklight","owner":"nla","description":"Discovery application for the National Library of Australia's catalogue","archived":false,"fork":false,"pushed_at":"2026-01-20T02:37:06.000Z","size":7228,"stargazers_count":0,"open_issues_count":11,"forks_count":1,"subscribers_count":14,"default_branch":"main","last_synced_at":"2026-01-20T07:19:51.742Z","etag":null,"topics":["blacklight","catalogue"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nla.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-11-19T06:30:08.000Z","updated_at":"2026-01-20T02:37:08.000Z","dependencies_parsed_at":"2023-02-16T12:45:16.456Z","dependency_job_id":"51213e5b-80e0-414c-a24c-677ad9ad89ed","html_url":"https://github.com/nla/nla-blacklight","commit_stats":null,"previous_names":[],"tags_count":53,"template":false,"template_full_name":null,"purl":"pkg:github/nla/nla-blacklight","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nla%2Fnla-blacklight","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nla%2Fnla-blacklight/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nla%2Fnla-blacklight/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nla%2Fnla-blacklight/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nla","download_url":"https://codeload.github.com/nla/nla-blacklight/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nla%2Fnla-blacklight/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29255399,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-09T01:52:29.835Z","status":"online","status_checked_at":"2026-02-09T02:00:09.501Z","response_time":56,"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":["blacklight","catalogue"],"created_at":"2025-12-15T16:02:06.704Z","updated_at":"2026-02-09T03:04:47.041Z","avatar_url":"https://github.com/nla.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nla-blacklight\n\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/nla/nla-blacklight/verify.yml?branch=main\u0026logo=github)](https://github.com/nla/nla-blacklight/actions/workflows/verify.yml)\n[![GitHub release (latest SemVer including pre-releases)](https://img.shields.io/github/v/release/nla/nla-blacklight?include_prereleases)](https://github.com/nla/nla-blacklight/releases/latest)\n[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-%23FE5196?logo=conventionalcommits\u0026logoColor=white)](https://conventionalcommits.org)\n\nCustom implementation of [Blacklight](http://projectblacklight.org/) for The National Library of Australia.\n\n## Table of Contents\n\n* [Requirements](#requirements)\n* [Configuration](#configuration)\n    + [Environment Variables](#environment-variables)\n        - [Blacklight database](#blacklight-database)\n        - [Solr](#solr)\n        - [Temp and caching directories](#temp-and-caching-directories)\n        - [External services](#external-services)\n        - [Rails settings](#rails-settings)\n* [Setup](#setup)\n* [Running the app](#running-the-app)\n* [Tests](#tests)\n* [Continuous Integration](#continuous-integration)\n    + [Releases](#releases)\n* [Deployment](#deployment)\n* [Linting, Static Analysis \u0026 Supply Chain Vulnerability Checking](#linting--static-analysis---supply-chain-vulnerability-checking)\n\n## Requirements\n\n* Ruby: 3.3.2\n* Bundler: 2.4.22\n\n* System dependencies\n    - Solr: 8\n    - MySQL: 8\n    - Redis: 7\n\n* Gems:\n  - [blacklight-common](https://github.com/nla/nla-blacklight_common) \n  - [blacklight-solrcloud-repository](https://github.com/nla/blacklight-solrcloud-repository)\n  - [bento_search](https://github.com/nla/bento_search)\n\n## Contributing\n\nThe [GoRails guide](https://gorails.com/setup) has great instructions for setting up Ruby, Rails and MySQL for your operating system.\n\n✏️ This repository uses [conventional commits](https://www.conventionalcommits.org)\nand commit messages are used to generate `CHANGELOG.md` and release body entries.\n\nThe most important prefixes you should have in mind are:\n\n* `fix:` which represents bug fixes, and correlates to a SemVer patch.\n* `feat:` which represents a new feature, and correlates to a SemVer minor.\n* `feat!:`, or `fix!:`, `refactor!:`, etc., which represent a breaking change (indicated by the !) and will result in a SemVer major.\n\nReleases are automated via GitHub workflows. See more in the [\"Releases\"](#releases) section.\n\n## Configuration\n\nAll configurable values should be defined via environment variables. `dotenv` will automatically load values\nfrom the `.env*` config in development and test environments.\n\nNon-sensitive values for development and test environments should be defined in the `.env.development`/`.env.test` files.\n\nSensitive values can be defined in `.env.development.local` or `.env.test.local` files for local development\nand *SHOULD NOT* be committed to source control. Git is configured to ignore these files.\n\n⚠️ If `dotenv` fails to load the configuration values into the environment, you can manually export these\nvalues in your terminal before running the application.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eList of Environment Variables\u003c/b\u003e\u003c/summary\u003e\n\n#### Blacklight database\n    DATABASE_URL - Application database for Blacklight\n    PATRON_DB_URL - Shared user and sessions database\n    REDIS_URL - Redis cache\n\n#### Solr\n    SOLR_URL - single node Solr\n    \n    ZK_HOST - Zookeeper connection string for the Solr Cloud cluster\n    SOLR_COLLECTION - Solr Cloud collection for the catalogue index\n\n#### Rails settings\nThese variables are mainly used in the `staging` or `production` environment.\n\n    SECRET_KEY_BASE - used by Devise for encrypting session values\n    RAILS_LOG_TO_STDOUT - makes Rails logs print to the console\n    RAILS_SERVE_STATIC_FILES - tells Rails to serve static assets from the /public directory\n\n#### Temp and caching directories\nThese variables are mainly used in the `staging` or `production` environment.\n\n    PIDFILE - relocates the server pid file outside of the application directory\n    BLACKLIGHT_TMP_PATH - relocates the caching directory outside of the application directory\n\n#### External services\n    GETALIBRARYCARD_BASE_URL - base URL for Get a Library Card\n    GETALIBRARYCARD_AUTH_PATH - path to the authentication endpoint of Get a Library Card\n    GETALIBRARYCARD_PATRON_DETAILS_PATH - path to the user details endpoint of Get a Library Card\n\n    PATRON_AUTH_URL - base URL for User Registration (a.k.a. \"UserReg\")\n    PATRON_AUTH_ENDPOINT - path to the authentication endpoint\n\n    KEYCLOAK_URL - URL of the Keycloak server\n\n    KC_SOL_CLIENT - Staff Official Loan realm client name\n    KC_SOL_SECRET - Staff Official Loan realm client secret\n    KC_SOL_REALM - realm name for Staff Official Loan\n\n    KC_SPL_CLIENT - Staff Personal Loan realm client name\n    KC_SPL_SECRET - Staff Personal Loan realm client secret\n    KC_SPL_REALM - realm name for Staff Personal Loan\n\n    KC_SHARED_CLIENT - Team Official Loan account realm client name\n    KC_SHARED_SECRET - Team Official Loan account realm client secret\n    KC_SHARED_REALM - realm name for Team Official Loan account realm\n\n    COPYRIGHT_SERVICE_URL - URL of the Copyright service\n    COPYRIGHT_FAIR_DEALING_URL - URL to the page describing copyright fair dealing\n    COPYRIGHT_CONTACT_URL - URL to the page describing how to contact the Library about copyright\n    \n    COPIES_DIRECT_URL - URL to Copies Direct\n\n    ERESOURCES_CONFIG_URL - URL to the eResources configuration JSON endpoint\n    EZPROXY_URL - URL to the EZProxy server\n    EZPROXY_USER - username for EZProxy\n    EZPROXY_PASSWORD - password for EZProxy\n\n    EDS_DEBUG - set to `y`/`n` to enable/disable debug logging for EDS API requests\n    EDS_PROFILE - EDS profile name\n    EDS_GUEST - set to `y`/`n` to enable/disable guest access for EDS API requests\n    EDS_USER - username for EDS API requests\n    EDS_PASSWORD - password for EDS API requests\n    EDS_AUTH - authentication method for EDS API requests\n    EDS_ORG - organisation ID for EDS API requests\n    EDS_CACHE_DIR - directory for EDS API request caching\n\n    EBSCO_SEARCH_URL - URL to the EBSCO EDS API\n    CATALOGUE_SEARCH_URL - URL to the Catalogue search JSON endpoint\n    FINDING_AIDS_SEARCH_URL - URL to the Finding Aids search JSON endpoint\n\n    GLOBAL_MESSAGE_URL - URL to the global alert message JSON endpoint\n\n    CATALOGUE_SERVICES_API_BASE_URL - URL to the Catalogue Services API base URL\n    CATALOGUE_SERVICES_CLIENT - Catalogue Services realm client name\n    CATALOGUE_SERVICES_SECRET - Catalogue Services realm client secret\n    CATALOGUE_SERVICES_REALM - Catalogue Services realm name\n    \n    THUMBNAIL_SERVICE_API_BASE_URL - URL to the thumbnail service API base URL\n\u003c/details\u003e\n\n## Setup\n\n1. Clone the app from GitHub.\n2. Make sure you have MySQL running locally and configured in the `.env.development.local` config file.\n3. Make sure you have Redis running locally and configured in the `.env.development.local` config file.\n4. Make sure you have Solr running locally and configured in the `.env.development.local` config file.\u003cbr /\u003e💡️  If you are not planning on modifying the Solr index, you can point this at the  devel or test environment Solr cluster.\n5. `bin/setup` installs gems and performs database migrations for the `development` environment.\u003cbr /\u003e 💡️ Gems are installed in `vendor/bundle`.\n\n## Running the app\n\n* `bin/dev` runs the Rails server at http://localhost:3000.\n    * This will compile the SASS stylesheets and package up the JavaScript files for the asset pipeline. \n    * By default Rails will load the `development` environment.\n    * The runtime environment can be changed by defining `RAILS_ENV` before executing a command/script. e.g.\n\n```bash\nRAILS_ENV=test bin/dev\n```\n\n## Tests\n\n* `bin/ci` contains all the tests and security vulnerability checks for the app.\n* `tmp/test.log` will use the production logging format *NOT* the development one.\n* The following test frameworks are used:\n    * [RSpec](https://rspec.info/)\n    * [Capybara](http://teamcapybara.github.io/capybara/) - simulates web application interaction\n    * [Webmock](https://github.com/bblimke/webmock) - HTTP request mocking and stubbing\n\n## Continuous Integration\n\n* CI is performed by [GitHub Actions](https://docs.github.com/en/actions).\n* Workflows are defined in `.github/workflows`.\n\n### Releases\n\nReleases are automated via the `release.yml` GitHub workflow. This uses Google's\n[release-please action](https://github.com/google-github-actions/release-please-action) to create a \nrelease pull request when changes are pushed to the `main` branch. \n\n🚨 This release pull request will be updated with every merge to the `main` branch. \n\n🚨 It will bump the version automatically and create a release when it is merged.\n\n🚨 `CHANGELOG.md` is automatically created/updated for each release based on the commit messages.\n\nRead more about how\n[release-please](https://github.com/googleapis/release-please) works.\n\n## Deployment\n\n* All runtime configuration should be supplied as environment variables.\n* Rails logging uses [lograge](https://github.com/roidrage/lograge). `bin/setup help` can tell you how to see this locally.\n* The temporary file directory configured by the `BLACKLIGHT_TMP_PATH` must be writable by the user that runs the application.\n* Gems declared in the Gemfile are installed in the `vendor/bundle` directory.\n* Rails assets must be precompiled before deployment and `RAILS_SERVE_STATIC_FILES` set to `true` in order for files in the `public` directory to be accessible.\n* `RAILS_LOG_TO_STDOUT` must be set to `true` for logs to be sent to the console.\n\n## Linting, Static Analysis \u0026 Supply Chain Vulnerability Checking\n\nThe following tools provide linting, security and vulnerability checking of the code.\n\n* [rubocop](https://rubocop.org/) and [standardrb](https://github.com/testdouble/standard) ensure standardised code formatting and best practices.\n* [brakeman](https://github.com/presidentbeef/brakeman) provides static analysis checking.\n    * Reports are written to `tmp/brakeman.html`\n* [bundler-audit](https://github.com/rubysec/bundler-audit) checks application dependencies for security vulnerabilities.\n* [strong-migrations](https://github.com/ankane/strong_migrations) catches unsafe migrations in development.\n\n## License\nThe application is available as open source under the terms of the [Apache 2 License](https://opensource.org/licenses/Apache-2.0).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnla%2Fnla-blacklight","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnla%2Fnla-blacklight","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnla%2Fnla-blacklight/lists"}