The design of FOLIO architecture (microservices and REST) enables any module to be written in a programming language that the developer is comfortable with. So various programming languages and build environments could be utilized.
The back-end modules can utilize any language.
Frameworks and libraries abstract much functionality and enable the developer to focus on implementing business functions. Define the APIs and objects in RAML or OpenAPI files and schema files, then the framework generates code and provides tools to help implement the module. Frameworks and libraries currently in use:
- raml-module-builder (RMB) for RAML files and Vert.x
- folio-vertx-lib for OpenAPI files and Vert.x
- Spring Way and folio-spring-base for OpenAPI files and Spring based Java
Key requirements for server-side modules:
- Be able to handle the REST interactions according to the API and implement the lifecycle endpoints.
- As explained in the Okapi Guide, Okapi uses HTTP 1.1 with chunked encoding to make the connections to the modules.
- Be able to handle the REST interactions according to the API.
- Be able to manage state and send special headers such as X-Okapi-Tenant.
So far we have concentrated on server-side modules in Java using Vert.x or Spring, and client-side in Node.js and React. Because we use them internally, those technologies will have a prominent place in the FOLIO ecosystem and, initially, it may be easiest to get started using them. We provide libraries and utilities that help with development (especially with writing standard boiler-plate code and scaffolding).