{"id":22859381,"url":"https://github.com/stevenjdh/quarkus-surmiser-app","last_synced_at":"2026-04-29T17:37:45.845Z","repository":{"id":84474014,"uuid":"276602015","full_name":"StevenJDH/quarkus-surmiser-app","owner":"StevenJDH","description":"A kubernetes cloud native microservice using Quarkus, the the Supersonic Subatomic Java Framework.","archived":false,"fork":false,"pushed_at":"2024-01-27T18:12:17.000Z","size":441,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-31T08:21:14.152Z","etag":null,"topics":["cloudnative","demo","graalvm","kubernetes","microservice","quarkus"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/StevenJDH.png","metadata":{"files":{"readme":"README.md","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},"funding":{"github":"StevenJDH","custom":["https://www.paypal.me/stevenjdh","https://www.buymeacoffee.com/stevenjdh"]}},"created_at":"2020-07-02T09:16:33.000Z","updated_at":"2023-05-03T01:26:26.000Z","dependencies_parsed_at":"2023-03-12T23:04:36.498Z","dependency_job_id":"101024a4-7b8c-4788-878e-1264f69cc130","html_url":"https://github.com/StevenJDH/quarkus-surmiser-app","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/StevenJDH/quarkus-surmiser-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StevenJDH%2Fquarkus-surmiser-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StevenJDH%2Fquarkus-surmiser-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StevenJDH%2Fquarkus-surmiser-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StevenJDH%2Fquarkus-surmiser-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/StevenJDH","download_url":"https://codeload.github.com/StevenJDH/quarkus-surmiser-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/StevenJDH%2Fquarkus-surmiser-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32437103,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T17:34:55.123Z","status":"ssl_error","status_checked_at":"2026-04-29T17:34:45.749Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["cloudnative","demo","graalvm","kubernetes","microservice","quarkus"],"created_at":"2024-12-13T09:06:48.468Z","updated_at":"2026-04-29T17:37:45.840Z","avatar_url":"https://github.com/StevenJDH.png","language":"HTML","funding_links":["https://github.com/sponsors/StevenJDH","https://www.paypal.me/stevenjdh","https://www.buymeacoffee.com/stevenjdh"],"categories":[],"sub_categories":[],"readme":"# Surmiser\n\n![build-test](https://github.com/StevenJDH/quarkus-surmiser-app/workflows/build/badge.svg)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/dd8f9d7560294b428992187dd09dfdcf)](https://app.codacy.com/gh/StevenJDH/quarkus-surmiser-app/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=StevenJDH/quarkus-surmiser-app\u0026amp;utm_campaign=Badge_Grade)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=StevenJDH_quarkus-surmiser-app\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=StevenJDH_quarkus-surmiser-app)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=StevenJDH_quarkus-surmiser-app\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=StevenJDH_quarkus-surmiser-app)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=StevenJDH_quarkus-surmiser-app\u0026metric=reliability_rating)](https://sonarcloud.io/dashboard?id=StevenJDH_quarkus-surmiser-app)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=StevenJDH_quarkus-surmiser-app\u0026metric=sqale_index)](https://sonarcloud.io/dashboard?id=StevenJDH_quarkus-surmiser-app)\n[![Sonar Violations (long format)](https://img.shields.io/sonar/violations/StevenJDH_quarkus-surmiser-app?format=long\u0026server=https%3A%2F%2Fsonarcloud.io)](https://sonarcloud.io/dashboard?id=StevenJDH_quarkus-surmiser-app)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=StevenJDH_quarkus-surmiser-app\u0026metric=security_rating)](https://sonarcloud.io/dashboard?id=StevenJDH_quarkus-surmiser-app)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=StevenJDH_quarkus-surmiser-app\u0026metric=vulnerabilities)](https://sonarcloud.io/dashboard?id=StevenJDH_quarkus-surmiser-app)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=StevenJDH_quarkus-surmiser-app\u0026metric=coverage)](https://sonarcloud.io/dashboard?id=StevenJDH_quarkus-surmiser-app)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=StevenJDH_quarkus-surmiser-app\u0026metric=ncloc)](https://sonarcloud.io/dashboard?id=StevenJDH_quarkus-surmiser-app)\n![Maintenance](https://img.shields.io/badge/yes-4FCA21?label=maintained\u0026style=flat)\n![GitHub](https://img.shields.io/github/license/StevenJDH/quarkus-surmiser-app)\n\nSurmiser was develop to demo the use of [Quarkus](https://quarkus.io), the Supersonic Subatomic Java Framework, to create a cloud native microservice that exposes a few APIs for testing. The app surmises about a person's name to predict their gender, age, and nationality. The service is powered by [Genderize.io](https://genderize.io), [Agify.io](https://agify.io), and [Nationalize.io](https://nationalize.io), which it uses to produce a determination based on the supplied name.\n\n[![Buy me a coffee](https://img.shields.io/static/v1?label=Buy%20me%20a\u0026message=coffee\u0026color=important\u0026style=flat\u0026logo=buy-me-a-coffee\u0026logoColor=white)](https://www.buymeacoffee.com/stevenjdh)\n\n## Features\n* Third-party service consolidation using MicroProfiling.\n* In memory database with Hibernate for history persistent storage while testing.\n* Logging of requests using an HTTP interceptor.\n* Can be run in JVM mode, or it can be compiled to Native code (Linux, Windows, and macOS) for millisecond speeds with a low memory footprint.\n* Liveness and Readiness health checks with some being integrated automatically like for the DB.\n* Retry, circuit breaker, and fallback fault tolerance strategies using MicroProfiling.\n* Automated testing using REST-assured.\n* Automatic YAML generation for Kubernetes or containerized environments.\n\n## Endpoints\nBelow are the API references used in the demo that are exposed on port 8080.\n\n    GET /api/person?name={name}\n    GET /api/history\n    GET /api/history?name={name}\n    GET /q/health\n    GET /q/health/live\n    GET /q/health/ready\n\nThe APIs can also be tested using the interactive swagger documentation located at `localhost:8080/q/swagger-ui`.\n\n## Running the application in dev mode\nYou can run the application in dev mode that enables live coding using:\n```bash\n./mvnw quarkus:dev\n```\n\n## Packaging and running the application\nThe application can be packaged using `./mvnw package`.\nIt produces the `surmiser-app-1.0-SNAPSHOT-runner.jar` file in the `/target` directory.\nBe aware that it’s not an _über-jar_ as the dependencies are copied into the `target/lib` directory.\n\nThe application is now runnable using `java -jar target/surmiser-app-1.0-SNAPSHOT-runner.jar`.\n\n## Creating a native executable\nYou can create a native executable using: `./mvnw package -Pnative`.\n\nOr, if you don't have GraalVM installed, you can run the native executable build in a container using: `./mvnw package -Pnative -Dquarkus.native.container-build=true`.\n\nYou can then execute your native executable with: `./target/surmiser-app-1.0-SNAPSHOT-runner`\n\nIf you want to learn more about building native executables, please consult https://quarkus.io/guides/building-native-image.\n\n## Do you have any questions?\nMany commonly asked questions are answered in the FAQ:\n[https://github.com/StevenJDH/quarkus-surmiser-app/wiki/FAQ](https://github.com/StevenJDH/quarkus-surmiser-app/wiki/FAQ)\n\n## Want to show your support?\n\n|Method          | Address                                                                                   |\n|---------------:|:------------------------------------------------------------------------------------------|\n|PayPal:         | [https://www.paypal.me/stevenjdh](https://www.paypal.me/stevenjdh \"Steven's Paypal Page\") |\n|Cryptocurrency: | [Supported options](https://github.com/StevenJDH/StevenJDH/wiki/Donate-Cryptocurrency)    |\n\n\n// Steven Jenkins De Haro (\"StevenJDH\" on GitHub)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstevenjdh%2Fquarkus-surmiser-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstevenjdh%2Fquarkus-surmiser-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstevenjdh%2Fquarkus-surmiser-app/lists"}