{"id":13753692,"url":"https://github.com/khauser/microservices4vaadin","last_synced_at":"2026-01-20T02:08:29.063Z","repository":{"id":87584665,"uuid":"48363025","full_name":"khauser/microservices4vaadin","owner":"khauser","description":"Sample application to show the secured integration of microservices and vaadin","archived":false,"fork":false,"pushed_at":"2020-09-18T11:48:49.000Z","size":802,"stargazers_count":30,"open_issues_count":0,"forks_count":16,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-08-03T09:05:45.652Z","etag":null,"topics":["authserver","docker","eventstore","gradle","microservice","oauth2","rancher","redis","service-discovery","spring-session","sso","vaadin"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/khauser.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2015-12-21T09:30:22.000Z","updated_at":"2023-01-10T06:43:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"11e45943-f120-4c7d-99f9-692765880641","html_url":"https://github.com/khauser/microservices4vaadin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khauser%2Fmicroservices4vaadin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khauser%2Fmicroservices4vaadin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khauser%2Fmicroservices4vaadin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khauser%2Fmicroservices4vaadin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/khauser","download_url":"https://codeload.github.com/khauser/microservices4vaadin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224884615,"owners_count":17386121,"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":["authserver","docker","eventstore","gradle","microservice","oauth2","rancher","redis","service-discovery","spring-session","sso","vaadin"],"created_at":"2024-08-03T09:01:27.516Z","updated_at":"2026-01-20T02:08:29.019Z","avatar_url":"https://github.com/khauser.png","language":"Java","funding_links":[],"categories":["vaadin"],"sub_categories":[],"readme":"# microservices4vaadin ![CircleCI](https://circleci.com/gh/khauser/microservices4vaadin.png?style=shield\u0026circle-token=e56d14269e12d73dcc8b45b8dad847985d4e20fb) [![Coverage Status](https://coveralls.io/repos/github/khauser/microservices4vaadin/badge.svg?branch=master)](https://coveralls.io/github/khauser/microservices4vaadin?branch=master)\nExemplary application to show the SSO and OAuth2 secured integration of microservices with Spring Cloud and Vaadin. Main concepts in this projects are:\n* Microservices (\"Software that Fits in Your Head\")\n* Secured Gateway (SSO and OAuth2)\n* Service Discovery\n* Circuit Breaking\n* Shared Session overall Services\n* Event store to fulfill CQRS principles\n\n## Architecture:\n![Architecture](/doc/Architecture.png)\n\n* **Authserver**:\n  * Authentification and authorization service\n  * Allows user login and also user registration via REST\n  * Generates spring session (persisted in Redis) which also holds the security context\n* **Configserver**\n  * Centralized configuration of each service\n* **Edge**:\n  * SSO Gateway to Frontend and also directly to the Backend\n  * UI for the landing page, the login and the registration panels\n  * Gets the security context and the user data from spring session\n* **Eventstore**:\n  * Distribute events across microservices via RabbitMQ and persist them in MongoDB\n* **Frontend**:\n  * Vaadin frontend with some simple but responsive UI\n  * Load balanced (Ribbon) access to backend\n  * Gets user data from spring session\n* **UserService**:\n  * Represents the user domain\n* **Backend**:\n  * Simple but secured REST resource as backend for the frontend\n* **Discovery**: service discovery with eureka\n* **Turbine**+**Hystrixdashboard**: use hystrix as circuit breaker\n\nToDo:\n* add a backend service\n\n## Main frameworks:\n* Spring: [Boot] (http://projects.spring.io/spring-boot/), [Data JPA] (http://projects.spring.io/spring-data-jpa), [Session] (http://projects.spring.io/spring-session), [Cloud Security] (http://cloud.spring.io/spring-cloud-security)\n* [Vaadin] (https://www.vaadin.com/)\n* Netflix: [Zuul] (https://github.com/Netflix/zuul), [Eureka] (https://github.com/Netflix/eureka), [Hystrix] (https://github.com/Netflix/Hystrix)\n* [AxonFramwork] (http://www.axonframework.org/)\n* [Rancher] (http://rancher.com/)\n\n## Installation:\n* install JDK 8\n* install Redis+RabbitMQ+MongoDB+MySQL (you can also use the [docker-compose.yml](docker-compose.yml) file\n* Run `gradlew clean build` to compile and build the application\n* Run `start-all.bat` to start the list of services\n* `http://localhost` should bring you to the landing page (with a redirect to https)\n\n## Development:\n* Git, Eclipse with Gradle IDE (Buildship), and [lombok] (https://projectlombok.org/)\n\n### Set up project:\n* checkout git repository\n* run `docker-compose up -d` do start dependent Redis, RabbitMQ, MongoDB and MySQL services (also DBs will be added automatically)\n* `gradlew clean build` to compile project\n* run `start-all.bat` in windows or `start-all.sh` in unix\n\n##Deployment:\n* The project could be deployed to a rancher stack using the given `rancher-docker-compose.yml`. The databases from above also here need to be added manually, here within the execute shell of the MySQL-container.\n![Rancher stack](/doc/rancher_stack_graph.png)\n\n* If all works fine (services might need to be restarted) you should see the this landing page:\n![Landing page](/doc/landing_page.png)\nInitial test credentials then are `ttester@test.de/quert6`.\n\n* Fingers crossed.. Finally the Vaadin UI should show up:\n![Vaadin UI](/doc/vaadin_ui.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhauser%2Fmicroservices4vaadin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhauser%2Fmicroservices4vaadin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhauser%2Fmicroservices4vaadin/lists"}