Repository files navigation

FOLIO complete platform

Copyright (C) 2015-2026 The Open Library Foundation

This software is distributed under the terms of the Apache License, Version 2.0. See the file "LICENSE" for more information.

Introduction

This is the "complete" Stripes "platform". It consists simply of an NPM package.json that specifies the version of @folio/stripes-core and of any Stripes modules you wish to make available as part of this platform to generate client bundles along with a utility for generating module descriptors for each Stripes module.

Please see the quick start guide for more information.

The stripes.config.js is a configuration for a specific tenant. In general, a platform supports multiple tenants, each of which may include a different set of the available modules. You can copy the stripes.config.js file to be your stripes.config.js.local configuration file.

The yarn.lock and *-install.json files in this repository can be used to build a FOLIO system with the components that represent the latest, compatible set of FOLIO releases. For an example of how to deploy such a system, see the Single Server Deployment Guide.

Descriptions of key files and key branches of this repository and how to change them are in the Release Procedures and in DevOps - Install Backend Module.

Supported releases

The snapshot branch is for the next flower release, Trillium (R1-2026), it is a work in progress.

Only the two latest releases are supported with critical bug and security fixes:

Older releases have reached end-of-life and are out of support.

Installation

Install platform dependencies

$ yarn config set @folio:registry https://repository.folio.org/repository/npm-folio/
$ yarn install

Note: A sharp-libvips NPM dependency is not fully compatible with Nodejs v16 and will fail 'yarn install'. To resolve this, set the following environment variable prior to running 'yarn install' when Nodejs version is v16+:

CXXFLAGS="-std=c++17"

Build and serve

To build and serve platform-complete in isolation for development purposes, run the "start" package script.

$ yarn start

The default configuration assumes an Okapi instance is running on http://localhost:9130 with tenant "diku". The options --okapi and --tenant can be provided to match your environment.

$ yarn start --okapi http://localhost:9130 --tenant diku

To build a platform-complete bundle for production, modify stripes.config.js with your Okapi and tenant, then run the "build" script, passing it the name of the desired directory to place build artifacts.

$ yarn build ./output

See the build and serve command reference in stripes-cli for a list of available options.

Tests

Integration tests

Integration tests require a running Okapi. The default configuration expects Okapi running on http://localhost:9130 with tenant "diku". To build and run integration tests for platform-complete with these defaults, run the test-int script.

$ yarn test-int

To view tests while they are run, provide the --show option.

$ yarn test-int --show

To skip the build step and run integration tests against a build that is already running, provide the URL.

$ yarn test-int --url https://folio-testing.dev.folio.org/

As a convenience, --local can be used in place of --url http://localhost:3000 for running tests against a development server that has already been started.

$ yarn test-int --local

Regression tests

Regression tests for the entire platform and its apps can be run with the "test-regression" script. This will invoke both cross-module tests defined in this platform's repository as well as all tests defined for the individual apps.

$ yarn test-regression --url https://folio-testing.dev.folio.org/

Running specific tests

The test-int package script, when combined with the --run option, can be used for running specific tests for the platform and/or apps. Use WD (working directory) when referencing platform tests, otherwise use the module app module name.

Example running "loan_renewal" test in platform-complete:

$ yarn test-int --run WD:loan_renewal

Example running "new_user" test in ui-users:

$ yarn test-regression --run users:new_user

Build stripes using the Dockerfile

The included Dockerfile allows for building a container that serves the stripes platform using Nginx. Pass in the Okapi URL and tenant ID as build arguments. The defaults are shown below:

docker build -f docker/Dockerfile --no-cache=true \
--build-arg OKAPI_URL=http://localhost:9130 \
--build-arg TENANT_ID=diku -t stripes .

The nginx server name can be passed to the container at runtime. The default value is localhost if no argument is passed. For example, to have nginx use 127.0.0.1 as the server name:

docker run stripes 127.0.0.1

Additional information

Finding what module versions are included in a flower release.

Finding which flower release a given installation runs.

See project FOLIO at the FOLIO issue tracker.

Other FOLIO Developer documentation is at dev.folio.org

About

Complete set of Stripes modules for FOLIO

Resources

Contributing

Stars

15 stars

Watchers

25 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

FOLIO complete platform

Copyright (C) 2015-2026 The Open Library Foundation

This software is distributed under the terms of the Apache License, Version 2.0. See the file "LICENSE" for more information.

Introduction

This is the "complete" Stripes "platform". It consists simply of an NPM package.json that specifies the version of @folio/stripes-core and of any Stripes modules you wish to make available as part of this platform to generate client bundles along with a utility for generating module descriptors for each Stripes module.

Please see the quick start guide for more information.

The stripes.config.js is a configuration for a specific tenant. In general, a platform supports multiple tenants, each of which may include a different set of the available modules. You can copy the stripes.config.js file to be your stripes.config.js.local configuration file.

The yarn.lock and *-install.json files in this repository can be used to build a FOLIO system with the components that represent the latest, compatible set of FOLIO releases. For an example of how to deploy such a system, see the Single Server Deployment Guide.

Descriptions of key files and key branches of this repository and how to change them are in the Release Procedures and in DevOps - Install Backend Module.

Supported releases

The snapshot branch is for the next flower release, Trillium (R1-2026), it is a work in progress.

Only the two latest releases are supported with critical bug and security fixes:

Older releases have reached end-of-life and are out of support.

Installation

Install platform dependencies

$ yarn config set @folio:registry https://repository.folio.org/repository/npm-folio/
$ yarn install

Note: A sharp-libvips NPM dependency is not fully compatible with Nodejs v16 and will fail 'yarn install'. To resolve this, set the following environment variable prior to running 'yarn install' when Nodejs version is v16+:

CXXFLAGS="-std=c++17"

Build and serve

To build and serve platform-complete in isolation for development purposes, run the "start" package script.

$ yarn start

The default configuration assumes an Okapi instance is running on http://localhost:9130 with tenant "diku". The options --okapi and --tenant can be provided to match your environment.

$ yarn start --okapi http://localhost:9130 --tenant diku

To build a platform-complete bundle for production, modify stripes.config.js with your Okapi and tenant, then run the "build" script, passing it the name of the desired directory to place build artifacts.

$ yarn build ./output

See the build and serve command reference in stripes-cli for a list of available options.

Tests

Integration tests

Integration tests require a running Okapi. The default configuration expects Okapi running on http://localhost:9130 with tenant "diku". To build and run integration tests for platform-complete with these defaults, run the test-int script.

$ yarn test-int

To view tests while they are run, provide the --show option.

$ yarn test-int --show

To skip the build step and run integration tests against a build that is already running, provide the URL.

$ yarn test-int --url https://folio-testing.dev.folio.org/

As a convenience, --local can be used in place of --url http://localhost:3000 for running tests against a development server that has already been started.

$ yarn test-int --local

Regression tests

Regression tests for the entire platform and its apps can be run with the "test-regression" script. This will invoke both cross-module tests defined in this platform's repository as well as all tests defined for the individual apps.

$ yarn test-regression --url https://folio-testing.dev.folio.org/

Running specific tests

The test-int package script, when combined with the --run option, can be used for running specific tests for the platform and/or apps. Use WD (working directory) when referencing platform tests, otherwise use the module app module name.

Example running "loan_renewal" test in platform-complete:

$ yarn test-int --run WD:loan_renewal

Example running "new_user" test in ui-users:

$ yarn test-regression --run users:new_user

Build stripes using the Dockerfile

The included Dockerfile allows for building a container that serves the stripes platform using Nginx. Pass in the Okapi URL and tenant ID as build arguments. The defaults are shown below:

docker build -f docker/Dockerfile --no-cache=true \
--build-arg OKAPI_URL=http://localhost:9130 \
--build-arg TENANT_ID=diku -t stripes .

The nginx server name can be passed to the container at runtime. The default value is localhost if no argument is passed. For example, to have nginx use 127.0.0.1 as the server name:

docker run stripes 127.0.0.1

Additional information

Finding what module versions are included in a flower release.

Finding which flower release a given installation runs.

See project FOLIO at the FOLIO issue tracker.

Other FOLIO Developer documentation is at dev.folio.org

About

Complete set of Stripes modules for FOLIO

Resources

Contributing

Stars

15 stars

Watchers

25 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

FOLIO complete platform

Copyright (C) 2015-2026 The Open Library Foundation

This software is distributed under the terms of the Apache License, Version 2.0. See the file "LICENSE" for more information.

Introduction

This is the "complete" Stripes "platform". It consists simply of an NPM package.json that specifies the version of @folio/stripes-core and of any Stripes modules you wish to make available as part of this platform to generate client bundles along with a utility for generating module descriptors for each Stripes module.

Please see the quick start guide for more information.

The stripes.config.js is a configuration for a specific tenant. In general, a platform supports multiple tenants, each of which may include a different set of the available modules. You can copy the stripes.config.js file to be your stripes.config.js.local configuration file.

The yarn.lock and *-install.json files in this repository can be used to build a FOLIO system with the components that represent the latest, compatible set of FOLIO releases. For an example of how to deploy such a system, see the Single Server Deployment Guide.

Descriptions of key files and key branches of this repository and how to change them are in the Release Procedures and in DevOps - Install Backend Module.

Supported releases

The snapshot branch is for the next flower release, Trillium (R1-2026), it is a work in progress.

Only the two latest releases are supported with critical bug and security fixes:

Older releases have reached end-of-life and are out of support.

Installation

Install platform dependencies

$ yarn config set @folio:registry https://repository.folio.org/repository/npm-folio/
$ yarn install

Note: A sharp-libvips NPM dependency is not fully compatible with Nodejs v16 and will fail 'yarn install'. To resolve this, set the following environment variable prior to running 'yarn install' when Nodejs version is v16+:

CXXFLAGS="-std=c++17"

Build and serve

To build and serve platform-complete in isolation for development purposes, run the "start" package script.

$ yarn start

The default configuration assumes an Okapi instance is running on http://localhost:9130 with tenant "diku". The options --okapi and --tenant can be provided to match your environment.

$ yarn start --okapi http://localhost:9130 --tenant diku

To build a platform-complete bundle for production, modify stripes.config.js with your Okapi and tenant, then run the "build" script, passing it the name of the desired directory to place build artifacts.

$ yarn build ./output

See the build and serve command reference in stripes-cli for a list of available options.

Tests

Integration tests

Integration tests require a running Okapi. The default configuration expects Okapi running on http://localhost:9130 with tenant "diku". To build and run integration tests for platform-complete with these defaults, run the test-int script.

$ yarn test-int

To view tests while they are run, provide the --show option.

$ yarn test-int --show

To skip the build step and run integration tests against a build that is already running, provide the URL.

$ yarn test-int --url https://folio-testing.dev.folio.org/

As a convenience, --local can be used in place of --url http://localhost:3000 for running tests against a development server that has already been started.

$ yarn test-int --local

Regression tests

Regression tests for the entire platform and its apps can be run with the "test-regression" script. This will invoke both cross-module tests defined in this platform's repository as well as all tests defined for the individual apps.

$ yarn test-regression --url https://folio-testing.dev.folio.org/

Running specific tests

The test-int package script, when combined with the --run option, can be used for running specific tests for the platform and/or apps. Use WD (working directory) when referencing platform tests, otherwise use the module app module name.

Example running "loan_renewal" test in platform-complete:

$ yarn test-int --run WD:loan_renewal

Example running "new_user" test in ui-users:

$ yarn test-regression --run users:new_user

Build stripes using the Dockerfile

The included Dockerfile allows for building a container that serves the stripes platform using Nginx. Pass in the Okapi URL and tenant ID as build arguments. The defaults are shown below:

docker build -f docker/Dockerfile --no-cache=true \
--build-arg OKAPI_URL=http://localhost:9130 \
--build-arg TENANT_ID=diku -t stripes .

The nginx server name can be passed to the container at runtime. The default value is localhost if no argument is passed. For example, to have nginx use 127.0.0.1 as the server name:

docker run stripes 127.0.0.1

Additional information

Finding what module versions are included in a flower release.

Finding which flower release a given installation runs.

See project FOLIO at the FOLIO issue tracker.

Other FOLIO Developer documentation is at dev.folio.org

About

Complete set of Stripes modules for FOLIO

Resources

Contributing

Stars

15 stars

Watchers

25 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

FOLIO complete platform

Copyright (C) 2015-2026 The Open Library Foundation

This software is distributed under the terms of the Apache License, Version 2.0. See the file "LICENSE" for more information.

Introduction

This is the "complete" Stripes "platform". It consists simply of an NPM package.json that specifies the version of @folio/stripes-core and of any Stripes modules you wish to make available as part of this platform to generate client bundles along with a utility for generating module descriptors for each Stripes module.

Please see the quick start guide for more information.

The stripes.config.js is a configuration for a specific tenant. In general, a platform supports multiple tenants, each of which may include a different set of the available modules. You can copy the stripes.config.js file to be your stripes.config.js.local configuration file.

The yarn.lock and *-install.json files in this repository can be used to build a FOLIO system with the components that represent the latest, compatible set of FOLIO releases. For an example of how to deploy such a system, see the Single Server Deployment Guide.

Descriptions of key files and key branches of this repository and how to change them are in the Release Procedures and in DevOps - Install Backend Module.

Supported releases

The snapshot branch is for the next flower release, Trillium (R1-2026), it is a work in progress.

Only the two latest releases are supported with critical bug and security fixes:

Older releases have reached end-of-life and are out of support.

Installation

Install platform dependencies

$ yarn config set @folio:registry https://repository.folio.org/repository/npm-folio/
$ yarn install

Note: A sharp-libvips NPM dependency is not fully compatible with Nodejs v16 and will fail 'yarn install'. To resolve this, set the following environment variable prior to running 'yarn install' when Nodejs version is v16+:

CXXFLAGS="-std=c++17"

Build and serve

To build and serve platform-complete in isolation for development purposes, run the "start" package script.

$ yarn start

The default configuration assumes an Okapi instance is running on http://localhost:9130 with tenant "diku". The options --okapi and --tenant can be provided to match your environment.

$ yarn start --okapi http://localhost:9130 --tenant diku

To build a platform-complete bundle for production, modify stripes.config.js with your Okapi and tenant, then run the "build" script, passing it the name of the desired directory to place build artifacts.

$ yarn build ./output

See the build and serve command reference in stripes-cli for a list of available options.

Tests

Integration tests

Integration tests require a running Okapi. The default configuration expects Okapi running on http://localhost:9130 with tenant "diku". To build and run integration tests for platform-complete with these defaults, run the test-int script.

$ yarn test-int

To view tests while they are run, provide the --show option.

$ yarn test-int --show

To skip the build step and run integration tests against a build that is already running, provide the URL.

$ yarn test-int --url https://folio-testing.dev.folio.org/

As a convenience, --local can be used in place of --url http://localhost:3000 for running tests against a development server that has already been started.

$ yarn test-int --local

Regression tests

Regression tests for the entire platform and its apps can be run with the "test-regression" script. This will invoke both cross-module tests defined in this platform's repository as well as all tests defined for the individual apps.

$ yarn test-regression --url https://folio-testing.dev.folio.org/

Running specific tests

The test-int package script, when combined with the --run option, can be used for running specific tests for the platform and/or apps. Use WD (working directory) when referencing platform tests, otherwise use the module app module name.

Example running "loan_renewal" test in platform-complete:

$ yarn test-int --run WD:loan_renewal

Example running "new_user" test in ui-users:

$ yarn test-regression --run users:new_user

Build stripes using the Dockerfile

The included Dockerfile allows for building a container that serves the stripes platform using Nginx. Pass in the Okapi URL and tenant ID as build arguments. The defaults are shown below:

docker build -f docker/Dockerfile --no-cache=true \
--build-arg OKAPI_URL=http://localhost:9130 \
--build-arg TENANT_ID=diku -t stripes .

The nginx server name can be passed to the container at runtime. The default value is localhost if no argument is passed. For example, to have nginx use 127.0.0.1 as the server name:

docker run stripes 127.0.0.1

Additional information

Finding what module versions are included in a flower release.

Finding which flower release a given installation runs.

See project FOLIO at the FOLIO issue tracker.

Other FOLIO Developer documentation is at dev.folio.org

About

Complete set of Stripes modules for FOLIO

Resources

Contributing

Stars

15 stars

Watchers

25 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

FOLIO complete platform

Copyright (C) 2015-2026 The Open Library Foundation

This software is distributed under the terms of the Apache License, Version 2.0. See the file "LICENSE" for more information.

Introduction

This is the "complete" Stripes "platform". It consists simply of an NPM package.json that specifies the version of @folio/stripes-core and of any Stripes modules you wish to make available as part of this platform to generate client bundles along with a utility for generating module descriptors for each Stripes module.

Please see the quick start guide for more information.

The stripes.config.js is a configuration for a specific tenant. In general, a platform supports multiple tenants, each of which may include a different set of the available modules. You can copy the stripes.config.js file to be your stripes.config.js.local configuration file.

The yarn.lock and *-install.json files in this repository can be used to build a FOLIO system with the components that represent the latest, compatible set of FOLIO releases. For an example of how to deploy such a system, see the Single Server Deployment Guide.

Descriptions of key files and key branches of this repository and how to change them are in the Release Procedures and in DevOps - Install Backend Module.

Supported releases

The snapshot branch is for the next flower release, Trillium (R1-2026), it is a work in progress.

Only the two latest releases are supported with critical bug and security fixes:

Older releases have reached end-of-life and are out of support.

Installation

Install platform dependencies

$ yarn config set @folio:registry https://repository.folio.org/repository/npm-folio/
$ yarn install

Note: A sharp-libvips NPM dependency is not fully compatible with Nodejs v16 and will fail 'yarn install'. To resolve this, set the following environment variable prior to running 'yarn install' when Nodejs version is v16+:

CXXFLAGS="-std=c++17"

Build and serve

To build and serve platform-complete in isolation for development purposes, run the "start" package script.

$ yarn start

The default configuration assumes an Okapi instance is running on http://localhost:9130 with tenant "diku". The options --okapi and --tenant can be provided to match your environment.

$ yarn start --okapi http://localhost:9130 --tenant diku

To build a platform-complete bundle for production, modify stripes.config.js with your Okapi and tenant, then run the "build" script, passing it the name of the desired directory to place build artifacts.

$ yarn build ./output

See the build and serve command reference in stripes-cli for a list of available options.

Tests

Integration tests

Integration tests require a running Okapi. The default configuration expects Okapi running on http://localhost:9130 with tenant "diku". To build and run integration tests for platform-complete with these defaults, run the test-int script.

$ yarn test-int

To view tests while they are run, provide the --show option.

$ yarn test-int --show

To skip the build step and run integration tests against a build that is already running, provide the URL.

$ yarn test-int --url https://folio-testing.dev.folio.org/

As a convenience, --local can be used in place of --url http://localhost:3000 for running tests against a development server that has already been started.

$ yarn test-int --local

Regression tests

Regression tests for the entire platform and its apps can be run with the "test-regression" script. This will invoke both cross-module tests defined in this platform's repository as well as all tests defined for the individual apps.

$ yarn test-regression --url https://folio-testing.dev.folio.org/

Running specific tests

The test-int package script, when combined with the --run option, can be used for running specific tests for the platform and/or apps. Use WD (working directory) when referencing platform tests, otherwise use the module app module name.

Example running "loan_renewal" test in platform-complete:

$ yarn test-int --run WD:loan_renewal

Example running "new_user" test in ui-users:

$ yarn test-regression --run users:new_user

Build stripes using the Dockerfile

The included Dockerfile allows for building a container that serves the stripes platform using Nginx. Pass in the Okapi URL and tenant ID as build arguments. The defaults are shown below:

docker build -f docker/Dockerfile --no-cache=true \
--build-arg OKAPI_URL=http://localhost:9130 \
--build-arg TENANT_ID=diku -t stripes .

The nginx server name can be passed to the container at runtime. The default value is localhost if no argument is passed. For example, to have nginx use 127.0.0.1 as the server name:

docker run stripes 127.0.0.1

Additional information

Finding what module versions are included in a flower release.

Finding which flower release a given installation runs.

See project FOLIO at the FOLIO issue tracker.

Other FOLIO Developer documentation is at dev.folio.org

About

Complete set of Stripes modules for FOLIO

Resources

Contributing

Stars

15 stars

Watchers

25 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

FOLIO complete platform

Copyright (C) 2015-2026 The Open Library Foundation

This software is distributed under the terms of the Apache License, Version 2.0. See the file "LICENSE" for more information.

Introduction

This is the "complete" Stripes "platform". It consists simply of an NPM package.json that specifies the version of @folio/stripes-core and of any Stripes modules you wish to make available as part of this platform to generate client bundles along with a utility for generating module descriptors for each Stripes module.

Please see the quick start guide for more information.

The stripes.config.js is a configuration for a specific tenant. In general, a platform supports multiple tenants, each of which may include a different set of the available modules. You can copy the stripes.config.js file to be your stripes.config.js.local configuration file.

The yarn.lock and *-install.json files in this repository can be used to build a FOLIO system with the components that represent the latest, compatible set of FOLIO releases. For an example of how to deploy such a system, see the Single Server Deployment Guide.

Descriptions of key files and key branches of this repository and how to change them are in the Release Procedures and in DevOps - Install Backend Module.

Supported releases

The snapshot branch is for the next flower release, Trillium (R1-2026), it is a work in progress.

Only the two latest releases are supported with critical bug and security fixes:

Older releases have reached end-of-life and are out of support.

Installation

Install platform dependencies

$ yarn config set @folio:registry https://repository.folio.org/repository/npm-folio/
$ yarn install

Note: A sharp-libvips NPM dependency is not fully compatible with Nodejs v16 and will fail 'yarn install'. To resolve this, set the following environment variable prior to running 'yarn install' when Nodejs version is v16+:

CXXFLAGS="-std=c++17"

Build and serve

To build and serve platform-complete in isolation for development purposes, run the "start" package script.

$ yarn start

The default configuration assumes an Okapi instance is running on http://localhost:9130 with tenant "diku". The options --okapi and --tenant can be provided to match your environment.

$ yarn start --okapi http://localhost:9130 --tenant diku

To build a platform-complete bundle for production, modify stripes.config.js with your Okapi and tenant, then run the "build" script, passing it the name of the desired directory to place build artifacts.

$ yarn build ./output

See the build and serve command reference in stripes-cli for a list of available options.

Tests

Integration tests

Integration tests require a running Okapi. The default configuration expects Okapi running on http://localhost:9130 with tenant "diku". To build and run integration tests for platform-complete with these defaults, run the test-int script.

$ yarn test-int

To view tests while they are run, provide the --show option.

$ yarn test-int --show

To skip the build step and run integration tests against a build that is already running, provide the URL.

$ yarn test-int --url https://folio-testing.dev.folio.org/

As a convenience, --local can be used in place of --url http://localhost:3000 for running tests against a development server that has already been started.

$ yarn test-int --local

Regression tests

Regression tests for the entire platform and its apps can be run with the "test-regression" script. This will invoke both cross-module tests defined in this platform's repository as well as all tests defined for the individual apps.

$ yarn test-regression --url https://folio-testing.dev.folio.org/

Running specific tests

The test-int package script, when combined with the --run option, can be used for running specific tests for the platform and/or apps. Use WD (working directory) when referencing platform tests, otherwise use the module app module name.

Example running "loan_renewal" test in platform-complete:

$ yarn test-int --run WD:loan_renewal

Example running "new_user" test in ui-users:

$ yarn test-regression --run users:new_user

Build stripes using the Dockerfile

The included Dockerfile allows for building a container that serves the stripes platform using Nginx. Pass in the Okapi URL and tenant ID as build arguments. The defaults are shown below:

docker build -f docker/Dockerfile --no-cache=true \
--build-arg OKAPI_URL=http://localhost:9130 \
--build-arg TENANT_ID=diku -t stripes .

The nginx server name can be passed to the container at runtime. The default value is localhost if no argument is passed. For example, to have nginx use 127.0.0.1 as the server name:

docker run stripes 127.0.0.1

Additional information

Finding what module versions are included in a flower release.

Finding which flower release a given installation runs.

See project FOLIO at the FOLIO issue tracker.

Other FOLIO Developer documentation is at dev.folio.org

About

Complete set of Stripes modules for FOLIO

Resources

Contributing

Stars

15 stars

Watchers

25 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

FOLIO complete platform

Copyright (C) 2015-2026 The Open Library Foundation

This software is distributed under the terms of the Apache License, Version 2.0. See the file "LICENSE" for more information.

Introduction

This is the "complete" Stripes "platform". It consists simply of an NPM package.json that specifies the version of @folio/stripes-core and of any Stripes modules you wish to make available as part of this platform to generate client bundles along with a utility for generating module descriptors for each Stripes module.

Please see the quick start guide for more information.

The stripes.config.js is a configuration for a specific tenant. In general, a platform supports multiple tenants, each of which may include a different set of the available modules. You can copy the stripes.config.js file to be your stripes.config.js.local configuration file.

The yarn.lock and *-install.json files in this repository can be used to build a FOLIO system with the components that represent the latest, compatible set of FOLIO releases. For an example of how to deploy such a system, see the Single Server Deployment Guide.

Descriptions of key files and key branches of this repository and how to change them are in the Release Procedures and in DevOps - Install Backend Module.

Supported releases

The snapshot branch is for the next flower release, Trillium (R1-2026), it is a work in progress.

Only the two latest releases are supported with critical bug and security fixes:

Older releases have reached end-of-life and are out of support.

Installation

Install platform dependencies

$ yarn config set @folio:registry https://repository.folio.org/repository/npm-folio/
$ yarn install

Note: A sharp-libvips NPM dependency is not fully compatible with Nodejs v16 and will fail 'yarn install'. To resolve this, set the following environment variable prior to running 'yarn install' when Nodejs version is v16+:

CXXFLAGS="-std=c++17"

Build and serve

To build and serve platform-complete in isolation for development purposes, run the "start" package script.

$ yarn start

The default configuration assumes an Okapi instance is running on http://localhost:9130 with tenant "diku". The options --okapi and --tenant can be provided to match your environment.

$ yarn start --okapi http://localhost:9130 --tenant diku

To build a platform-complete bundle for production, modify stripes.config.js with your Okapi and tenant, then run the "build" script, passing it the name of the desired directory to place build artifacts.

$ yarn build ./output

See the build and serve command reference in stripes-cli for a list of available options.

Tests

Integration tests

Integration tests require a running Okapi. The default configuration expects Okapi running on http://localhost:9130 with tenant "diku". To build and run integration tests for platform-complete with these defaults, run the test-int script.

$ yarn test-int

To view tests while they are run, provide the --show option.

$ yarn test-int --show

To skip the build step and run integration tests against a build that is already running, provide the URL.

$ yarn test-int --url https://folio-testing.dev.folio.org/

As a convenience, --local can be used in place of --url http://localhost:3000 for running tests against a development server that has already been started.

$ yarn test-int --local

Regression tests

Regression tests for the entire platform and its apps can be run with the "test-regression" script. This will invoke both cross-module tests defined in this platform's repository as well as all tests defined for the individual apps.

$ yarn test-regression --url https://folio-testing.dev.folio.org/

Running specific tests

The test-int package script, when combined with the --run option, can be used for running specific tests for the platform and/or apps. Use WD (working directory) when referencing platform tests, otherwise use the module app module name.

Example running "loan_renewal" test in platform-complete:

$ yarn test-int --run WD:loan_renewal

Example running "new_user" test in ui-users:

$ yarn test-regression --run users:new_user

Build stripes using the Dockerfile

The included Dockerfile allows for building a container that serves the stripes platform using Nginx. Pass in the Okapi URL and tenant ID as build arguments. The defaults are shown below:

docker build -f docker/Dockerfile --no-cache=true \
--build-arg OKAPI_URL=http://localhost:9130 \
--build-arg TENANT_ID=diku -t stripes .

The nginx server name can be passed to the container at runtime. The default value is localhost if no argument is passed. For example, to have nginx use 127.0.0.1 as the server name:

docker run stripes 127.0.0.1

Additional information

Finding what module versions are included in a flower release.

Finding which flower release a given installation runs.

See project FOLIO at the FOLIO issue tracker.

Other FOLIO Developer documentation is at dev.folio.org

About

Complete set of Stripes modules for FOLIO

Resources

Contributing

Stars

15 stars

Watchers

25 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

FOLIO complete platform

Copyright (C) 2015-2026 The Open Library Foundation

This software is distributed under the terms of the Apache License, Version 2.0. See the file "LICENSE" for more information.

Introduction

This is the "complete" Stripes "platform". It consists simply of an NPM package.json that specifies the version of @folio/stripes-core and of any Stripes modules you wish to make available as part of this platform to generate client bundles along with a utility for generating module descriptors for each Stripes module.

Please see the quick start guide for more information.

The stripes.config.js is a configuration for a specific tenant. In general, a platform supports multiple tenants, each of which may include a different set of the available modules. You can copy the stripes.config.js file to be your stripes.config.js.local configuration file.

The yarn.lock and *-install.json files in this repository can be used to build a FOLIO system with the components that represent the latest, compatible set of FOLIO releases. For an example of how to deploy such a system, see the Single Server Deployment Guide.

Descriptions of key files and key branches of this repository and how to change them are in the Release Procedures and in DevOps - Install Backend Module.

Supported releases

The snapshot branch is for the next flower release, Trillium (R1-2026), it is a work in progress.

Only the two latest releases are supported with critical bug and security fixes:

Older releases have reached end-of-life and are out of support.

Installation

Install platform dependencies

$ yarn config set @folio:registry https://repository.folio.org/repository/npm-folio/
$ yarn install

Note: A sharp-libvips NPM dependency is not fully compatible with Nodejs v16 and will fail 'yarn install'. To resolve this, set the following environment variable prior to running 'yarn install' when Nodejs version is v16+:

CXXFLAGS="-std=c++17"

Build and serve

To build and serve platform-complete in isolation for development purposes, run the "start" package script.

$ yarn start

The default configuration assumes an Okapi instance is running on http://localhost:9130 with tenant "diku". The options --okapi and --tenant can be provided to match your environment.

$ yarn start --okapi http://localhost:9130 --tenant diku

To build a platform-complete bundle for production, modify stripes.config.js with your Okapi and tenant, then run the "build" script, passing it the name of the desired directory to place build artifacts.

$ yarn build ./output

See the build and serve command reference in stripes-cli for a list of available options.

Tests

Integration tests

Integration tests require a running Okapi. The default configuration expects Okapi running on http://localhost:9130 with tenant "diku". To build and run integration tests for platform-complete with these defaults, run the test-int script.

$ yarn test-int

To view tests while they are run, provide the --show option.

$ yarn test-int --show

To skip the build step and run integration tests against a build that is already running, provide the URL.

$ yarn test-int --url https://folio-testing.dev.folio.org/

As a convenience, --local can be used in place of --url http://localhost:3000 for running tests against a development server that has already been started.

$ yarn test-int --local

Regression tests

Regression tests for the entire platform and its apps can be run with the "test-regression" script. This will invoke both cross-module tests defined in this platform's repository as well as all tests defined for the individual apps.

$ yarn test-regression --url https://folio-testing.dev.folio.org/

Running specific tests

The test-int package script, when combined with the --run option, can be used for running specific tests for the platform and/or apps. Use WD (working directory) when referencing platform tests, otherwise use the module app module name.

Example running "loan_renewal" test in platform-complete:

$ yarn test-int --run WD:loan_renewal

Example running "new_user" test in ui-users:

$ yarn test-regression --run users:new_user

Build stripes using the Dockerfile

The included Dockerfile allows for building a container that serves the stripes platform using Nginx. Pass in the Okapi URL and tenant ID as build arguments. The defaults are shown below:

docker build -f docker/Dockerfile --no-cache=true \
--build-arg OKAPI_URL=http://localhost:9130 \
--build-arg TENANT_ID=diku -t stripes .

The nginx server name can be passed to the container at runtime. The default value is localhost if no argument is passed. For example, to have nginx use 127.0.0.1 as the server name:

docker run stripes 127.0.0.1

Additional information

Finding what module versions are included in a flower release.

Finding which flower release a given installation runs.

See project FOLIO at the FOLIO issue tracker.

Other FOLIO Developer documentation is at dev.folio.org

About

Complete set of Stripes modules for FOLIO

Resources

Contributing

Stars

15 stars

Watchers

25 watching

Forks

Releases

Packages

Used by

Contributors

Languages