{"id":14957044,"url":"https://github.com/selcuksert/digilib","last_synced_at":"2025-05-02T07:33:11.298Z","repository":{"id":240448506,"uuid":"789857337","full_name":"selcuksert/digilib","owner":"selcuksert","description":"Digital book library app based on Spring Modulith","archived":false,"fork":false,"pushed_at":"2024-05-18T23:16:54.000Z","size":2449,"stargazers_count":7,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-29T23:04:50.494Z","etag":null,"topics":["modulith","react-js","spring-modulith","springboot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/selcuksert.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"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}},"created_at":"2024-04-21T18:34:23.000Z","updated_at":"2024-10-10T16:50:04.000Z","dependencies_parsed_at":"2024-05-19T00:34:22.419Z","dependency_job_id":null,"html_url":"https://github.com/selcuksert/digilib","commit_stats":null,"previous_names":["selcuksert/digilib"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selcuksert%2Fdigilib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selcuksert%2Fdigilib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selcuksert%2Fdigilib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selcuksert%2Fdigilib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/selcuksert","download_url":"https://codeload.github.com/selcuksert/digilib/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224305840,"owners_count":17289446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["modulith","react-js","spring-modulith","springboot"],"created_at":"2024-09-24T13:14:00.057Z","updated_at":"2024-11-12T16:04:53.572Z","avatar_url":"https://github.com/selcuksert.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"= Digital Library\n\nThis project implements a basic digital library with searching books via ISBN and inventory management (add/delete book) functions using link:https://spring.io/projects/spring-modulith[Spring Modulith,window=_blank] and ReactJS.\nThis application uses link:https://openlibrary.org/[Open Library,window=_blank] as book info database. The project supports Java SDK 21.\n\nSee Medium article: https://medium.com/@selcuk.sert/modular-monoliths-with-spring-modulith-96361f3167c9[Modular Monoliths with Spring Modulith\n]\n\n[cols=\"a,a\"]\n|===\n| image:docs/images/ui-1.png[ui-1]\n| image:docs/images/ui-2.png[ui-2]\n|===\n\n== Architecture\n\nThe project is compatible with docker and comprises of modules and services that underpins a typical Spring Modulith based application:\n\nimage:docs/models/arch.png[arch]\n\n=== Traefik\n\nServes as edge router for docker-compose setup.\n\n=== Neo4J\n\nServes as event registry for digilib modulith.\nIt includes *Neo4J browser* for data browsing on graph DB.\n\n=== Kafka\n\nServes as message broker for event externalization. *Kafdrop* is used as event browser.\n\n=== PostgreSQL\n\nServes as relational database to store book inventory. *PgAdmin* is used as DB viewer.\n\n=== Zipkin\n\nIs used to capture and view micrometer spans originated by digilib modulith for telemetry and tracing.\n\n== Start-up Modes\n\nThe project comes with two different modes based on docker-compose:\n\n* One for link:docker/docker-compose.yml[development] to activate mandatory external services for development with opening required ports for IDE,\n* The other one for link:docker/docker-compose.yml[production] complementing previous one with serving full-stack application inside docker-compose setup.\n\nThe link:docker/start.sh[start script] (based on `zsh`) has the following options:\n\n[source,shell]\n----\nstart.sh -h\n----\n\n[source,text]\n----\nStart script for digilib app\n\nSyntax: start.sh [-h|p|d]\noptions:\nh     Prints this Help.\np     Start in production mode.\nd     Start in developer mode.\nu     Uninstall setup.\n----\n\nThe 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.\n\nSee link:docker/.env[environment file] for credentials and parameters used in docker-compose setup.\n\n=== URLs\n\nSome DNS entries should be added with IP of node that hosts Traefik deployment.\nFor local deployments a typical `hosts` file content for digilib would be:\n\n[source,text]\n----\n127.0.0.1 portainer.digilib.local\n127.0.0.1 neo4j.digilib.local\n127.0.0.1 pgadmin.digilib.local\n127.0.0.1 ui.digilib.local\n127.0.0.1 api.digilib.local\n127.0.0.1 kafdrop.digilib.local\n127.0.0.1 zipkin.digilib.local\n----\n\n\n|===\n|URL |Mode |Detail\n\n|https://portainer.digilib.local\n|Production\n|Portainer UI\n\n|https://neo4j.digilib.local\n|All modes\n|Neo4J browser\n\n|https://pgadmin.digilib.local\n|All modes\n|PgAdmin UI\n\n|https://kafdrop.digilib.local\n|All modes\n|Kafdrop UI\n\n|https://zipkin.digilib.local\n|All modes\n|Zipkin UI\n\n|https://ui.digilib.local\n|Production\n|digilib UI\n\n|http://localhost:5173/\n|Development\n|digilib UI\n\n|https://api.digilib.local\n|Production\n|digilib API host\n|===\n\nFor OpenAPI definitions `{API Host}/swagger-ui` should be used.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselcuksert%2Fdigilib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fselcuksert%2Fdigilib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselcuksert%2Fdigilib/lists"}