Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Node modules (will be reinstalled in image)
ModuleDescriptors
node_modules
npm-debug.log*
stripes.config.js.local

# Local environment files
.env
.env.local
.env.*.local

# VCS
.git
.gitignore

# Docker
Dockerfile
.dockerignore

# OS / Editor
.DS_Store
.idea
.vscode
*.swp
*.swo

# Build artifacts that are not needed in context
/build
/output
/dist

# Test and coverage artifacts
coverage
__tests__/
*.spec.js
*.test.js

# Misc
*.tgz
*.bak
*.tmp
28 changes: 28 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Stripes Framework related
ModuleDescriptors
node_modules
npm-debug.log*
stripes.config.js.local
output

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# VS Code related
.vscode/

# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
.git/
.hg/
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@folio:registry=https://repository.folio.org/repository/npm-folio/
47 changes: 47 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
FROM node:18-alpine AS stripes_build

# Set build arguments with default values
ARG OKAPI_URL=http://localhost:9130
ARG TENANT_ID=diku
ARG BUILD_ARGS="--okapi $OKAPI_URL --tenant $TENANT_ID"
ARG REGISTRY=folioci
ARG CXXFLAGS="-std=c++17"

# Define the home directory for Stripes
ENV STRIPES_HOME=/etc/folio/stripes

RUN mkdir -p $STRIPES_HOME

COPY . $STRIPES_HOME/

WORKDIR $STRIPES_HOME

# Install dependencies and build the application
RUN apk upgrade --no-cache && \
apk add --no-cache alpine-sdk python3 && \
yarn config set python /usr/bin/python3 && \
yarn config set @folio:registry https://repository.folio.org/repository/npm-$REGISTRY/ && \
yarn install && \
yarn build-module-descriptors && \
yarn build output $BUILD_ARGS

FROM nginx:stable-alpine

# Define the home directory for Stripes
ENV STRIPES_HOME=/etc/folio/stripes

# Install latest patch versions of packages: https://pythonspeed.com/articles/security-updates-in-docker/
RUN apk upgrade --no-cache

# Expose port 80 for nginx
EXPOSE 80

# Copy built files from the stripes_build stage
COPY --from=stripes_build $STRIPES_HOME/output /usr/share/nginx/html
COPY --from=stripes_build $STRIPES_HOME/yarn.lock /usr/share/nginx/html/yarn.lock

# Configure nginx and entrypoint
COPY docker/nginx.conf /etc/nginx/conf.d/default.conf
COPY docker/entrypoint.sh /usr/bin/entrypoint.sh

ENTRYPOINT ["/usr/bin/entrypoint.sh"]
4 changes: 4 additions & 0 deletions docker/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/sh
SERVER_NAME=${1:-localhost}
sed -i "s|localhost|$SERVER_NAME|" /etc/nginx/conf.d/default.conf
/usr/sbin/nginx -g 'daemon off;'
15 changes: 15 additions & 0 deletions docker/nginx.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
server {
listen 80;
server_name localhost;
charset utf-8;
# Serve index.html for any request not found
location / {
# Set path
root /usr/share/nginx/html;
include mime.types;
types {
text/plain lock;
}
try_files $uri /index.html;
}
}
119 changes: 119 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
{
"name": "@folio/platform-complete",
"version": "3.9.0",
"license": "Apache-2.0",
"scripts": {
"build": "export NODE_OPTIONS=\"--max-old-space-size=8000 $NODE_OPTIONS\"; stripes-build build stripes.config.js",
"start": "stripes serve stripes.config.js",
"build-module-descriptors": "stripes-build mod descriptor stripes.config.js --full --strict --output ./ModuleDescriptors",
"local": "f=stripes.config.js; test -f $f.local && f=$f.local; echo Using config $f; stripes serve $f",
"test": "echo 'No unit tests implemented'"
},
"dependencies": {
"@folio/acquisition-units": "6.0.0",
"@folio/agreements": "12.0.2",
"@folio/bulk-edit": "5.0.2",
"@folio/calendar": "12.0.0",
"@folio/checkin": "11.0.1",
"@folio/checkout": "12.0.1",
"@folio/circulation": "11.0.1",
"@folio/circulation-log": "6.0.1",
"@folio/claims": "1.0.0",
"@folio/consortia-settings": "3.0.1",
"@folio/courses": "7.0.3",
"@folio/dashboard": "7.0.0",
"@folio/data-export": "7.0.0",
"@folio/data-import": "9.0.1",
"@folio/developer": "10.0.0",
"@folio/eholdings": "11.0.1",
"@folio/erm-comparisons": "8.0.1",
"@folio/erm-usage": "11.0.1",
"@folio/export-manager": "4.0.0",
"@folio/finance": "8.0.4",
"@folio/gobi-settings": "4.0.0",
"@folio/handler-stripes-registry": "3.0.0",
"@folio/inventory": "13.0.5",
"@folio/invoice": "7.0.4",
"@folio/ld-folio-wrapper": "1.3.3",
"@folio/ldp": "3.0.2",
"@folio/licenses": "12.0.1",
"@folio/lists": "4.0.3",
"@folio/local-kb-admin": "9.0.0",
"@folio/marc-authorities": "7.0.3",
"@folio/myprofile": "10.0.0",
"@folio/notes": "11.0.0",
"@folio/oai-pmh": "6.0.0",
"@folio/orders": "8.0.3",
"@folio/organizations": "6.0.1",
"@folio/plugin-bursar-export": "4.0.3",
"@folio/plugin-create-inventory-records": "6.0.0",
"@folio/plugin-find-agreement": "12.0.0",
"@folio/plugin-find-authority": "5.0.1",
"@folio/plugin-find-contact": "6.0.0",
"@folio/plugin-find-eresource": "8.0.0",
"@folio/plugin-find-erm-usage-data-provider": "7.0.0",
"@folio/plugin-find-fund": "4.0.0",
"@folio/plugin-find-import-profile": "9.0.0",
"@folio/plugin-find-instance": "9.0.1",
"@folio/plugin-find-interface": "6.0.0",
"@folio/plugin-find-license": "12.0.0",
"@folio/plugin-find-organization": "6.0.0",
"@folio/plugin-find-package-title": "7.0.0",
"@folio/plugin-find-po-line": "6.0.1",
"@folio/plugin-find-user": "8.0.0",
"@folio/plugin-query-builder": "2.0.3",
"@folio/quick-marc": "10.0.2",
"@folio/reading-room": "2.0.0",
"@folio/receiving": "7.0.2",
"@folio/remote-storage": "7.0.1",
"@folio/requests": "12.0.3",
"@folio/servicepoints": "8.0.0",
"@folio/plugin-eusage-reports": "4.0.1",
"@folio/service-interaction": "4.0.0",
"@folio/stripes": "10.0.12",
"@folio/stripes-authority-components": "6.0.2",
"@folio/stripes-build": "1.0.0",
"@folio/stripes-erm-components": "10.0.0",
"@folio/stripes-inventory-components": "2.0.4",
"@folio/stripes-marc-components": "2.0.1",
"@folio/serials-management": "2.0.4",
"@folio/tags": "9.0.0",
"@folio/tenant-settings": "10.0.0",
"@folio/users": "12.1.7",
"@types/lodash": "^4.14.197",
"final-form": "^4.20.7",
"final-form-arrays": "^3.0.2",
"lodash": "^4.17.5",
"moment": "~2.29.0",
"react": "~18.2.0",
"react-dom": "~18.2.0",
"react-final-form": "^6.5.9",
"react-final-form-arrays": "^3.1.3",
"react-intl": "^7.1.10",
"react-query": "^3.13.0",
"react-redux": "^8.0.5",
"react-router": "^5.2.0",
"react-router-dom": "^5.2.0",
"react-titled": "^2.0.0",
"redux": "^4.2.1",
"redux-observable": "^1.2.0",
"rxjs": "^6.6.7",
"zustand": "^4.1.1",
"@folio/authorization-policies": "2.0.0",
"@folio/authorization-roles": "2.0.3",
"@folio/plugin-select-application": "2.0.0"
},

"resolutions": {
"@rehooks/local-storage": "2.4.5",
"@folio/stripes-acq-components": "7.0.5",
"@folio/stripes-authorization-components": "2.0.4",
"colors": "1.4.0",
"final-form": "^4.20.4",
"minimist": "^1.2.3",
"moment": "~2.29.0",
"redux-form": "^8.0.0",
"typescript": "~5.5",
"@types/react": "^18"
}
}
134 changes: 134 additions & 0 deletions platform-descriptor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
{
"name": "FOLIO LSP",
"description": "FOLIO LSP (Library Services Platform) is a set of microservices and applications that provide a complete library management system.",
"version": "R1-2025",
"eureka-components": [
{
"name": "folio-kong",
"version": "3.9.0"
},
{
"name": "folio-keycloak",
"version": "26.1.3"
},
{
"name": "folio-module-sidecar",
"version": "3.0.4"
},
{
"name": "mgr-applications",
"version": "3.0.0"
},
{
"name": "mgr-tenants",
"version": "3.0.0"
},
{
"name": "mgr-tenant-entitlements",
"version": "3.1.1"
}
],
"applications": {
"required": [
{
"name": "app-platform-minimal",
"version": "2.0.16"
},
{
"name": "app-platform-complete",
"version": "2.1.31"
}
],
"optional": [
{
"name": "app-erm-usage",
"version": "2.0.3"
},
{
"name": "app-edge-complete",
"version": "2.0.6"
},
{
"name": "app-dcb",
"version": "1.1.1"
},
{
"name": "app-consortia-manager",
"version": "1.1.1"
},
{
"name": "app-consortia",
"version": "1.2.1"
},
{
"name": "app-requests-mediated",
"version": "1.1.0-SNAPSHOT.4803"
},
{
"name": "app-requests-ecs",
"version": "1.0.0-SNAPSHOT.4803"
},
{
"name": "app-reading-room",
"version": "2.0.1"
},
{
"name": "app-requests-mediated-ui",
"version": "1.0.0-SNAPSHOT.4803"
},
{
"name": "app-acquisitions",
"version": "1.0.18"
},
{
"name": "app-bulk-edit",
"version": "1.0.6"
},
{
"name": "app-ebsconet",
"version": "1.0.0-SNAPSHOT.4803"
},
{
"name": "app-fqm",
"version": "1.0.7"
},
{
"name": "app-gobi",
"version": "1.0.0-SNAPSHOT.4803"
},
{
"name": "app-inn-reach",
"version": "1.0.0"
},
{
"name": "app-linked-data",
"version": "1.1.6"
},
{
"name": "app-marc-migrations",
"version": "2.0.1"
},
{
"name": "app-mosaic",
"version": "1.0.0-SNAPSHOT.4803"
},
{
"name": "app-oai-pmh",
"version": "1.0.1"
},
{
"name": "app-reporting",
"version": "1.0.0-SNAPSHOT.4803"
},
{
"name": "app-rtac",
"version": "1.0.0-SNAPSHOT.4803"
}
]
},
"dependencies": {
"postgres": ">=16.0",
"kafka": ">=3.5.1",
"opensearch": ">=2.0.0"
}
}
Loading