{"id":21803557,"url":"https://github.com/terrestris/shogun","last_synced_at":"2026-02-05T11:01:39.086Z","repository":{"id":39586271,"uuid":"170513325","full_name":"terrestris/shogun","owner":"terrestris","description":"SHOGun Webmapping using Spring Boot","archived":false,"fork":false,"pushed_at":"2026-02-03T16:27:39.000Z","size":7528,"stargazers_count":23,"open_issues_count":18,"forks_count":16,"subscribers_count":12,"default_branch":"main","last_synced_at":"2026-02-04T06:12:49.994Z","etag":null,"topics":["graphql","hacktoberfest","hibernate","java","microservice","shogun","spring","spring-boot","spring-security","swagger","webgis","webgis-framework"],"latest_commit_sha":null,"homepage":"https://terrestris.github.io/shogun/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/terrestris.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-02-13T13:32:52.000Z","updated_at":"2026-01-23T07:42:55.000Z","dependencies_parsed_at":"2023-02-17T02:01:07.559Z","dependency_job_id":"644d16da-fa12-4fa6-8f0a-474ad78c9baa","html_url":"https://github.com/terrestris/shogun","commit_stats":null,"previous_names":[],"tags_count":89,"template":false,"template_full_name":null,"purl":"pkg:github/terrestris/shogun","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terrestris%2Fshogun","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terrestris%2Fshogun/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terrestris%2Fshogun/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terrestris%2Fshogun/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/terrestris","download_url":"https://codeload.github.com/terrestris/shogun/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/terrestris%2Fshogun/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29120481,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T10:47:47.471Z","status":"ssl_error","status_checked_at":"2026-02-05T10:45:08.119Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["graphql","hacktoberfest","hibernate","java","microservice","shogun","spring","spring-boot","spring-security","swagger","webgis","webgis-framework"],"created_at":"2024-11-27T11:45:12.011Z","updated_at":"2026-02-05T11:01:39.054Z","avatar_url":"https://github.com/terrestris.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ![SHOGun Logo](./docs/assets/img/shogun_logo_thumb.png) SHOGun\n\n![](https://img.shields.io/github/license/terrestris/shogun)\n![publish](https://github.com/terrestris/shogun/actions/workflows/build-and-publish.yml/badge.svg?branch=main)\n![test](https://github.com/terrestris/shogun/actions/workflows/test.yml/badge.svg?branch=main)\n\u003c!-- ![dependabot](https://api.dependabot.com/badges/status?host=github\u0026repo=terrestris/shogun) --\u003e\n\nSHOGun is an application framework written in Java for building scaleable web application backends in the context of\ngeospatial data infrastructures. It can be used directly without any specific customizations or highly customized to\nmeet the demands of flexible project requirements.\n\n## In a nutshell\n\nSHOGun…\n\n* …is written in Java and supports Java \u003e= 21.\n* …is based on top of Spring / Spring Boot.\n* …provides a set of configuration entities to manage the contents of a geospatial data infrastructure (e.g. layers,\napplications, users or groups).\n* …provides (secured) web interfaces (REST \u0026 GraphQL) for accessing and manipulating these entities (e.g. for creating\nan application configuration).\n* …separates its functionalities into isolated microservices (e.g. for proxying OGC requests) and is highly scalable.\n\n## Development\n\n### Requirements\n\nFor the development of SHOGun the following tools are required locally:\n\n- maven \u003e= 3.9\n- Java 21\n- docker and docker compose\n- IntelliJ (recommended)\n- [IntelliJ Lombok plugin](https://plugins.jetbrains.com/plugin/6317-lombok/)\n\n### Steps for development setup (for the first checkout)\n\nTo set up a local development setup, please proceed as follows:\n\n1. Checkout this repository:\n\n   ```bash\n   git clone git@github.com:terrestris/shogun.git\n   ```\n\n2. Checkout the `shogun-docker` repository:\n\n   ```bash\n   git clone git@github.com:terrestris/shogun-docker.git\n   ```\n\n3. Create a new project in IntelliJ by importing the first module:\n\n   - `File` -\u003e `New` -\u003e `Project from Existing Sources…`\n   - Navigate to the checkout of `shogun`\n   - Select the Project Object Model file (`pom.xml`) of `shogun`\n\n4. *Optional:* You may also want to import the `shogun-docker` project.\n   If so, import the folder as a module:\n\n   - `File` -\u003e `New` -\u003e `Module from Existing Sources…`\n   - Navigate to checkout of `shogun-docker` and choose the directory\n\n5. If not already done, the annotation processing of the Lombok plugin must be\n   enabled.\n   Check the settings for `Lombok` (Enable Lombok plugin for this project) and\n   `Annotation Processors` (Enable annotation processing).\n\n6. Set up the shogun-docker requirements as described in [here](https://github.com/terrestris/shogun-docker).\n\n7. Startup the containers (in the `shogun-docker` checkout directory):\n\n   ```bash\n   docker compose up\n   ```\n\n8. The application is now available at [https://localhost/](https://localhost/).\n\n### Quick startup\n\nIf you already have a local development setup, just proceed as follows:\n\n1. Startup the containers (in the `shogun-docker` checkout directory):\n\n   ```bash\n   docker compose up\n   ```\n\n2. The application is now available at [https://localhost/](https://localhost/).\n\n### Development hints\n\n#### Local install\n\nInstall a new version of SHOGun to your local maven repository with\n\n  ```bash\n  mvn clean install\n  ```\n\nor\n\n   ```bash\n   mvn clean install -DskipTests -Djib.skip=true\n   ```\n\n#### Application restart\n\nTo apply any changes made, a restart of the application is required. A restart can easily be accomplished by\nrestarting the appropriate container, e.g.:\n\n   ```bash\n   docker restart shogun-boot\n   ```\n\n#### Remote debugger\n\nTo create a remote debugger, a new run configuration in IntelliJ has to be created:\n\n- Open `Edit configurations` in the `Run` menu.\n- Add a new `Remote JVM debug` configuration and enter the following properties:\n  - Name: `shogun-boot remote debugger`\n  - Host: `localhost`\n  - Port: `4711` (may be adjusted to the given module/service)\n  - Use module classpath: `shogun-boot` (or any other module)\n\n## GeoServer interceptor\n\nTo use REST API of GeoServer interceptor it's necessary to create a role\n`interceptor_admin` in Keycloak. Users having this role are allowed to use them.\n\n## MVN Report\n\nIf you want to create a report with detailed information about the projects\ndependencies or similar, you can use this command:\n\n```bash\nmvn site -Preporting\n```\n\nJust have a look at `/target/site/index.html` afterwards.\n\n## Get an access token programmatically\n\nTo get an access token programmatically the following curl can be used (adjust `\u003cEXTERNAL_KEYCLOAK_HOST\u003e`\nbeforehand):\n\n```bash\ncurl \\\n  -v \\\n  -k \\\n  -X POST \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -d 'grant_type=password' \\\n  -d 'client_id=shogun-client' \\\n  -d 'username=shogun' \\\n  -d 'password=shogun' \\\n  'https://\u003cEXTERNAL_KEYCLOAK_HOST\u003e/auth/realms/SHOGun/protocol/openid-connect/token' | jq '.access_token'\n```\n\nThe usage of `jq` is optional and can be removed if not needed or `jq` is not available.\n\n## Actuator\n\n[Spring Boot Actuator](https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#production-ready)\nis enabled by default and is available via the `actuator/` endpoints.\nThe following list demonstrates some use cases:\n\n- List current properties:\n  - `https://localhost/actuator/configprops`\n- List current status of flyway migrations:\n  - `https://localhost/actuator/flyway`\n- List current health information:\n  - `https://localhost/actuator/health`\n- List build and git information:\n  - `https://localhost/actuator/info`\n- List current log levels:\n  - `https://localhost/actuator/loggers`\n- List current log level of a specific module:\n  - `https://localhost/actuator/loggers/de.terrestris`\n- Set log level for a specific module to the desired level (e.g. `DEBUG` for\n  `de.terrestris`):\n\n    ```bash\n    curl \\\n      -v \\\n      -X POST \\\n      -H 'Authorization: Bearer \u003cTOKEN\u003e' \\\n      -H 'Content-Type: application/json' \\\n      -d '{\"configuredLevel\": \"DEBUG\"}' \\\n      'https://localhost/actuator/loggers/de.terrestris'\n    ```\n\n- List all available endpoint mappings:\n  - `https://localhost/actuator/mappings`\n\nNote: All endpoints are accessible by users with the `ADMIN` role only.\n\n## Release\n\n- To trigger a release, manually run the `Publish` github action \n\n## Entity Auditing\n\nSHOGun supports auditing of entities, powered by [Hibernate Envers](https://hibernate.org/orm/envers/).\n\nAuditing is enabled by default and can be disabled by setting `spring.jpa.properties.hibernate.integration.envers` to `false`.\n\n### Enabling envers mid-project\n\nIf envers is enabled mid-way and there is already data this can result in errors when querying audit data. To fix this, a revision with revision type `0` (created) has to be manually inserted for each existing entity into the respective audit table.\n\nSee https://discourse.hibernate.org/t/safe-envers-queries-when-the-audit-history-is-incomplete/771.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fterrestris%2Fshogun","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fterrestris%2Fshogun","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fterrestris%2Fshogun/lists"}