{"id":19882807,"url":"https://github.com/reactivecircus/kstreamlined-backend","last_synced_at":"2025-06-28T07:36:15.018Z","repository":{"id":252918244,"uuid":"513825262","full_name":"ReactiveCircus/kstreamlined-backend","owner":"ReactiveCircus","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-20T10:05:39.000Z","size":713,"stargazers_count":3,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-20T11:23:28.727Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","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/ReactiveCircus.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},"funding":{"github":"ychescale9"}},"created_at":"2022-07-14T08:46:16.000Z","updated_at":"2025-06-08T11:35:08.000Z","dependencies_parsed_at":"2024-08-28T14:55:47.030Z","dependency_job_id":"d44e938a-81ad-4995-b810-98842a8a5ba7","html_url":"https://github.com/ReactiveCircus/kstreamlined-backend","commit_stats":null,"previous_names":["reactivecircus/kstreamlined-backend"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ReactiveCircus/kstreamlined-backend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReactiveCircus%2Fkstreamlined-backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReactiveCircus%2Fkstreamlined-backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReactiveCircus%2Fkstreamlined-backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReactiveCircus%2Fkstreamlined-backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ReactiveCircus","download_url":"https://codeload.github.com/ReactiveCircus/kstreamlined-backend/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReactiveCircus%2Fkstreamlined-backend/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262393698,"owners_count":23304159,"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":[],"created_at":"2024-11-12T17:18:33.834Z","updated_at":"2025-06-28T07:36:15.006Z","avatar_url":"https://github.com/ReactiveCircus.png","language":"Kotlin","funding_links":["https://github.com/sponsors/ychescale9"],"categories":[],"sub_categories":[],"readme":"# KStreamlined Backend\n\nGraphQL API for the [KStreamlined mobile apps](https://github.com/ReactiveCircus/kstreamlined-mobile).\n\nThe API combines multiple Kotlin-related RSS feeds into a single list of `FeedEntry` and supports filtering by feed sources.\n\nCurrently supported feed sources:\n\n1. [Kotlin Blog](https://blog.jetbrains.com/kotlin/feed/) - Latest news from the official Kotlin Blog\n2. [Kotlin YouTube Channel](https://www.youtube.com/feeds/videos.xml?channel_id=UCP7uiEZIqci43m22KDl0sNw) - The official YouTube channel of the Kotlin programming language\n3. [Talking Kotlin](https://talkingkotlin.com/feed) - Technical show discussing everything Kotlin, hosted by Hadi and Sebastian\n4. [Kotlin Weekly](https://rss.app/feeds/QKefltG2nWU9PWuu.xml) - Weekly community Kotlin newsletter, hosted by Enrique\n\n## Tech\n\n- [Spring Boot](https://github.com/spring-projects/spring-boot)\n- [Netflix DGS Framework](https://netflix.github.io/dgs/)\n- [Ktor (client)](https://ktor.io/)\n- [GraalVM](https://www.graalvm.org/)\n\n## Local dev environment\n\nSetup the required environment variables:\n\n```\nKS_REDIS_REST_URL\nKS_REDIS_REST_TOKEN\nKS_GCLOUD_PROJECT_ID\n```\n\nRun `gcloud auth application-default login` to authenticate Firestore.\n\n## Building and running locally\n\nTo compile the project:\n\n```\n./gradlew assemble\n```\n\nTo run all checks (including both unit tests and static analysis):\n\n```\n./gradlew check\n```\n\nTo run the service as a Spring Boot application:\n\n```\n./gradlew bootRun\n```\n\nThe GraphQL playground is available at:\n\n```\nhttp://localhost:8000/graphiql\n```\n\nTo assemble an executable jar archive:\n\n```\n./gradlew bootJar\n```\n\n## GraalVM Native Image\n\nMake sure the required version of GraalVM JDK is installed.\n\nTo compile a native executable:\n\n```\n./gradlew nativeCompile\n```\n\nTo run the native executable:\n\n```\n./gradlew nativeRun\n```\n\n## License\n\n```\nCopyright 2022 Yang Chen\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactivecircus%2Fkstreamlined-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freactivecircus%2Fkstreamlined-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactivecircus%2Fkstreamlined-backend/lists"}