This project implements a basic digital library with searching books via ISBN and inventory management (add/delete book) functions using Spring Modulith and ReactJS. This application uses Open Library as book info database. The project supports Java SDK 21.
See Medium article: Modular Monoliths with Spring Modulith
The project is compatible with docker and comprises of modules and services that underpins a typical Spring Modulith based application:
Serves as event registry for digilib modulith. It includes Neo4J browser for data browsing on graph DB.
The project comes with two different modes based on docker-compose:
-
One for development to activate mandatory external services for development with opening required ports for IDE,
-
The other one for production complementing previous one with serving full-stack application inside docker-compose setup.
The start script (based on zsh
) has the following options:
start.sh -h
Start script for digilib app
Syntax: start.sh [-h|p|d]
options:
h Prints this Help.
p Start in production mode.
d Start in developer mode.
u Uninstall setup.
The start script also generates (under certificates
folder) and registers a self-signed certificate (public certificate and private key) to enable TLS on Traefik edge router. The digilib.crt
should be imported into trusted CA list for seamless browsing.
See environment file for credentials and parameters used in docker-compose setup.
Some DNS entries should be added with IP of node that hosts Traefik deployment.
For local deployments a typical hosts
file content for digilib would be:
127.0.0.1 portainer.digilib.local
127.0.0.1 neo4j.digilib.local
127.0.0.1 pgadmin.digilib.local
127.0.0.1 ui.digilib.local
127.0.0.1 api.digilib.local
127.0.0.1 kafdrop.digilib.local
127.0.0.1 zipkin.digilib.local
URL | Mode | Detail |
---|---|---|
Production |
Portainer UI |
|
All modes |
Neo4J browser |
|
All modes |
PgAdmin UI |
|
All modes |
Kafdrop UI |
|
All modes |
Zipkin UI |
|
Production |
digilib UI |
|
Development |
digilib UI |
|
Production |
digilib API host |
For OpenAPI definitions {API Host}/swagger-ui
should be used.