{"id":19380432,"url":"https://github.com/margostino/supersonic-session","last_synced_at":"2026-05-06T18:32:47.289Z","repository":{"id":81877482,"uuid":"294805625","full_name":"margostino/supersonic-session","owner":"margostino","description":"A Reactive and Event-Driven REST API of a CRUD of a backend session. Native Support with Quarkus.","archived":false,"fork":false,"pushed_at":"2020-12-28T20:45:23.000Z","size":174,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-06T14:38:09.205Z","etag":null,"topics":["dynamodb","event-driven-architecture","microprofile","quarkus","reactive-architecture","rest-api","vertx"],"latest_commit_sha":null,"homepage":"https://margostino.com","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/margostino.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}},"created_at":"2020-09-11T20:26:25.000Z","updated_at":"2020-12-28T20:45:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"b51e036d-6d76-444b-9291-f469461b5ba8","html_url":"https://github.com/margostino/supersonic-session","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/margostino/supersonic-session","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/margostino%2Fsupersonic-session","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/margostino%2Fsupersonic-session/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/margostino%2Fsupersonic-session/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/margostino%2Fsupersonic-session/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/margostino","download_url":"https://codeload.github.com/margostino/supersonic-session/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/margostino%2Fsupersonic-session/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272936419,"owners_count":25018160,"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","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["dynamodb","event-driven-architecture","microprofile","quarkus","reactive-architecture","rest-api","vertx"],"created_at":"2024-11-10T09:13:54.497Z","updated_at":"2026-05-06T18:32:47.246Z","avatar_url":"https://github.com/margostino.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Supersonic Session (SUSE)\n## Proof of Concept\n\nThis project is an attempt to build a generic REST API with a CRUD of backend session and explores a reactive and event-driven stack. \nThis is just an experiment. The first version is based on a Generic Task Demo Service.\n\n## Tech Stack\n\nThe project uses [Quarkus](https://quarkus.io/) to build the CRUD API Rest service for (reduced and lightweight version) a backend/server session handling. The data persistance relies on DynamoDB. For reactive programming support it uses [Vertx](https://vertx.io/) and [Smallrye](https://smallrye.io/). The architecture follows the [MicroProfile](https://projects.eclipse.org/projects/technology.microprofile) specification for building microservices and deliver portable applications across multiple runtimes.\nAs an Event-Driven Backbone the project uses Kafka.  \n\n![](./documentation/images/quarkus.png#250x) ![](./documentation/images/vertx.png#250x) ![](./documentation/images/dynamodb.png#250x) ![](./documentation/images/microprofile.png#250x)\n\n### Requirements:\n\n- Java 11\n- Docker\n- Gradle\n- GraalVM 20\n\n## Local Development\n\n### How to run SUSE locally\n- Spin up dependencies: `make docker.run.dependencies`: Kafka + DynamoDB\n- Run SUSE `./gradlew quarkusDev`  \n- The folder `postman` includes the CRUD requests to test.\n\nThe default profile is `dev`\n\n## Build Native\n\n- Set `quarkus.package.type:native` in [application configuration](./src/main/resources/application.yaml) \n- Build the application: `./gradlew quarkusBuild`\n- Grab a coffee and wait :)\n- Build the docker image: `docker build -f src/main/docker/Dockerfile.native -t suse/suse .`\n- Run the docker container: `docker run -i --rm -p 8080:8080 suse/suse`\n\n## Build (fast) JAR\n\n- Set `quarkus.package.type:fast-jar` in [application configuration](./src/main/resources/application.yaml) \n- Build the application: `./gradlew quarkusBuild` (or `./gradlew quarkusBuild --fast-jar`)\n- Build the docker image: `docker build -f src/main/docker/Dockerfile.jvm -t suse/suse .`\n- Run the docker container: `docker run -i --rm -p 8080:8080 suse/suse`\n\n## Build (uber) JAR\n\n- Set `quarkus.package.type:uber-jar` in [application configuration](./src/main/resources/application.yaml) \n- Build the application: `./gradlew quarkusBuild` (or `./gradlew quarkusBuild --uber-jar`)\n- Build the docker image: `docker build -f src/main/docker/Dockerfile -t suse/suse .`\n- Run the docker container: `docker run -i --rm -p 8080:8080 suse/suse`\n\n## Build (uber) JAR + Run SUSE as Docker Container\n\n- `make docker.build` \n- `make docker.run.suse`\n- `curl http://localhost:8080/reactive/ping` to check service is UP.\n\n\n## Metrics\n\n- [http://localhost:8080/health-ui/](http://localhost:8080/health-ui/)\n- [http://localhost:8080/health/](http://localhost:8080/health/)\n- [http://localhost:8080/metrics](http://localhost:8080/metrics)\n- [http://localhost:8080/health/live](http://localhost:8080/health/live)\n- [http://localhost:8080/health/ready](http://localhost:8080/health/ready)\n- [http://localhost:8080/metrics/application](http://localhost:8080/metrics/application)\n\n\n- Build the application: `./gradlew quarkusBuild`\n- Build the docker image: `docker build -f src/main/docker/Dockerfile.jvm -t suse/suse .`\n\n### Notes:\n\n- If you have environment variable `KAFKA_BOOTSTRAP_SERVERS=some-ip:9092`, it will take precedence.\n\n### What's next\n- Performance Benchmark\n- ETag header implementation for Optimistic Locking\n\n### Architecture\ncoming soon\n\n### How to run API tests\ncoming soon...\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmargostino%2Fsupersonic-session","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmargostino%2Fsupersonic-session","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmargostino%2Fsupersonic-session/lists"}