{"id":29414069,"url":"https://github.com/alxlenc/songfind","last_synced_at":"2026-04-18T00:31:24.867Z","repository":{"id":39876163,"uuid":"397847057","full_name":"alxlenc/songfind","owner":"alxlenc","description":"Backend to proxy Spotify's API and play with Keycloak, OAuth2 and OIDC.","archived":false,"fork":false,"pushed_at":"2024-11-16T06:50:16.000Z","size":316,"stargazers_count":1,"open_issues_count":29,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-30T05:38:37.171Z","etag":null,"topics":["keycloak","spotify-api","spring","spring-security-oauth2","spring-webflux"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alxlenc.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,"zenodo":null}},"created_at":"2021-08-19T06:56:13.000Z","updated_at":"2021-10-26T05:06:20.000Z","dependencies_parsed_at":"2025-07-11T12:26:30.163Z","dependency_job_id":"07901f26-7e74-4188-aa46-91ee1e121579","html_url":"https://github.com/alxlenc/songfind","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alxlenc/songfind","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxlenc%2Fsongfind","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxlenc%2Fsongfind/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxlenc%2Fsongfind/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxlenc%2Fsongfind/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alxlenc","download_url":"https://codeload.github.com/alxlenc/songfind/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alxlenc%2Fsongfind/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31951231,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T17:29:20.459Z","status":"ssl_error","status_checked_at":"2026-04-17T17:28:47.801Z","response_time":62,"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":["keycloak","spotify-api","spring","spring-security-oauth2","spring-webflux"],"created_at":"2025-07-11T12:10:32.781Z","updated_at":"2026-04-18T00:31:24.817Z","avatar_url":"https://github.com/alxlenc.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Songfind](/img/songfind-banner.png)\n\n[![build](https://github.com/alxlenc/songfind/actions/workflows/maven.yml/badge.svg)](https://github.com/alxlenc/songfind/actions/workflows/maven.yml)  ![coverage](.github/badges/jacoco.svg)  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\n# Intro\n\nThis is a demo project used to practice and experiment with technologies while using a fun domain,\nmusic. It's 100% dependent on connectivity to Spotify's API and does have any persistence.\n\nThe topics that you can find on this repo are Spring Security, OAuth2 and OIDC, Keycloak, Spring\nWebflux, Hexagonal Architecture, Reactive caching with Redis and containerization.\n\nThe app has two layers of authentication. First it uses Keycloak as and identity provider but once\nyou log in you need additional authentication with Spotify. The reason behind this is that, besides\nexperimenting with Keycloak and OAuth2, I can host the application online without it being publicly\naccessible. This way I don't have to deal with regulations. What regulations? Well, think about how\nmany cookie banners you have to close during the day...\n\nThis repo is only one piece in the tech stack. It is built automatically using a Tekton pipeline and\ndeployed using a gitops approach with ArgoCD into an Istio service mesh. It also has a basic front\nbuilt in Vue.js.\n\nWant to see what I mean with all that? Take a look at the [videos](#videos).\n\nIf you want to experiment with this repo you need to go\nto [Spotify Developer Dashboard](https://developer.spotify.com/dashboard/) and create a Spotify\napplication that would provide you with a client id and a client secret.\n\n---\n\n# Key Features\n\nAt the moment music discoverabilty is the main feature.\n\n---\n\n# Videos\n\nHere are a some videos to showcase the tech stack and the development workflow.\n\n#### [Recommendations Filters Feature](https://www.youtube.com/watch?v=QmzbV03ACkA)\n\n#### [Hexagonal Architecture](https://www.youtube.com/watch?v=eiGwvGBXFT8)\n\n#### [Tekton Pipelines](https://youtu.be/Kvakrsuam3E)\n\n#### [Canary Release](https://www.youtube.com/watch?v=HzNx88H7nxU)\n\n#### [Dark Release](https://www.youtube.com/watch?v=zqSmLRE0lIQ)\n\n\n---\n\n# License\n\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falxlenc%2Fsongfind","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falxlenc%2Fsongfind","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falxlenc%2Fsongfind/lists"}