{"id":21023887,"url":"https://github.com/kolman-freecss/gluns-spring","last_synced_at":"2026-01-26T08:33:39.013Z","repository":{"id":261824693,"uuid":"885438995","full_name":"Kolman-Freecss/gluns-spring","owner":"Kolman-Freecss","description":"InvestBank: Simplifying Financial Management with Personalized Insights, Data, and Advice.","archived":false,"fork":false,"pushed_at":"2024-11-10T01:00:11.000Z","size":6153,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-28T01:54:45.734Z","etag":null,"topics":["docker","docker-compose","hexagonal-architecture","java","jwt","keycloak","microservices","oauth2","reactive-programming","springboot","webflux"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kolman-Freecss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-CC-BY-NC-ND","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-11-08T15:31:19.000Z","updated_at":"2024-11-10T02:43:54.000Z","dependencies_parsed_at":"2025-01-20T13:43:14.822Z","dependency_job_id":"be3a4c76-4b8e-4d5c-8c7c-ec459ae1e941","html_url":"https://github.com/Kolman-Freecss/gluns-spring","commit_stats":null,"previous_names":["kolman-freecss/gluns-spring"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Kolman-Freecss/gluns-spring","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kolman-Freecss%2Fgluns-spring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kolman-Freecss%2Fgluns-spring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kolman-Freecss%2Fgluns-spring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kolman-Freecss%2Fgluns-spring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kolman-Freecss","download_url":"https://codeload.github.com/Kolman-Freecss/gluns-spring/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kolman-Freecss%2Fgluns-spring/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28770841,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T07:45:00.504Z","status":"ssl_error","status_checked_at":"2026-01-26T07:45:00.070Z","response_time":59,"last_error":"SSL_read: 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":["docker","docker-compose","hexagonal-architecture","java","jwt","keycloak","microservices","oauth2","reactive-programming","springboot","webflux"],"created_at":"2024-11-19T11:20:48.627Z","updated_at":"2026-01-26T08:33:38.995Z","avatar_url":"https://github.com/Kolman-Freecss.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gluns-Spring\n\nService built to work as core microservice for Gluns-Bank project.\n\n\u003cimg src=\"gluns-bank-logo.svg\" alt=\"Gluns Logo\" width=\"350\" /\u003e\n\n## Index\n- [Useful Links](#useful-links)\n  - [Project Resources](#project-resources)\n- [Brief Features Description](#brief-features-description)\n- [Use](#use)\n  - [Local](#local)\n  - [Docker](#docker)\n- [Tech stack](#tech-stack)\n  - [CI/CD](#cicd)\n  - [DB](#db)\n- [Architecture](#architecture)\n- [Infrastructure](#infrastructure)\n- [Configuration](#configuration)\n  - [Keycloak Configuration](#keycloak-configuration)\n- [Flows](#flows)\n\n## Useful Links\n\n- Frontend: https://github.com/Kolman-Freecss/gluns-front\n- Python Backend: https://github.com/shubhamsugara22/gluns-python-backend\n\n### Project Resources\n- Swagger: http://localhost:8083/webjars/swagger-ui/index.html#/\n- Keycloak: http://localhost:8080/\n- Database Client (pgAdmin4): http://localhost:80/\n- MySQL: http://localhost:3306/\n\n## Brief Features Description\n\n- Security implementation using Spring Boot 3.3.5 and Keycloak with JSON Web Tokens (JWT).\n  - SSO (Single Sign-On) using Keycloak.\n  - OAuth2 Protocol. \n\n## Use\n\n### Local\n\n1. Check the `.launchers` folder to see the different launchers.\n2. Run GlunsSpringApplication.run.xml to start the application. (This will start the Springboot application)\n\n## Docker\n\n1. Build the Docker containers:\n\n   ```bash\n   docker compose build\n   ```\n   \n2. Bring up the containers in the background:\n\n   ```bash\n    docker compose up -d\n    ```\n   \n## Tech stack\n\n- Java 21\n- Spring:\n  - Spring Boot 3.3.5\n  - Spring Actuator\n  - Spring Webflux\n    - Reactive programming. Async API to perform non-blocking operations in the main thread application.\n    - Used also to consume the Github API asynchrously (instead Java 11 HttpClient or OkHttp).\n  - Spring Boot DevTools\n    - To reload the application when a change is detected.\n  - Spring AOP\n    - Auxiliar Join Components to log the requests and responses.\n- Auth:\n  - Keycloak\n  - JSON Web Tokens (JWT)\n- Maven\n- OpenAPI/Swagger docs v2\n\n### CI/CD\n\n- Docker\n- Docker Compose\n\n### DB\n\n- MySQL\n- pgAdmin4\n- Spring Data JPA Hibernate\n  - Way to interact with the database using an ORM (Hibernate) with all the entities and relationships configured.\n\n## Architecture\n\n- Microservices Architecture\n  - Sync communication through REST API\n- Hexagonal Architecture\n\n## Infrastructure\n\nDiagram Flow:\n\n![Diagram Flow](Infra-gluns-bank.svg)\n\n## Configuration\n\n### Keycloak Configuration\n\n- Configure Keycloak with the following settings:\n  - New Realm: `gluns`\n  - Create a new Client: `gluns-back`\n    - Client ID: `gluns-back`\n  - 2 Roles: `USER` and `ADMIN`\n  - 2 Users: `user` and `admin`\n    - Password: `password`\n    - Map Roles to the users: `USER` and `ADMIN`\n\n\n## Flows\n\nUser Chat Flow:\n\n![User Chat Flow](User-chat-flow-overview.svg)\n\n---\n\nShield: [![CC-BY-NC-ND 4.0][CC-BY-NC-ND-shield]][CC-BY-NC-ND]\n\nThis work is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.][CC-BY-NC-ND]\n\n[![CC-BY-NC-ND 4.0][CC-BY-NC-ND-image]][CC-BY-NC-ND]\n\n[CC-BY-NC-ND-shield]: https://img.shields.io/badge/License-CC--BY--NC--ND--4.0-lightgrey\n[CC-BY-NC-ND]: http://creativecommons.org/licenses/by-nc-nd/4.0/\n[CC-BY-NC-ND-image]: https://i.creativecommons.org/l/by-nc-nd/4.0/88x31.png\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkolman-freecss%2Fgluns-spring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkolman-freecss%2Fgluns-spring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkolman-freecss%2Fgluns-spring/lists"}