{"id":19335111,"url":"https://github.com/buttercam/sisyphus","last_synced_at":"2025-05-09T01:46:43.640Z","repository":{"id":37074326,"uuid":"264589207","full_name":"ButterCam/sisyphus","owner":"ButterCam","description":"Modern gRPC back-end development framework base on JVM.","archived":false,"fork":false,"pushed_at":"2024-04-08T21:08:26.000Z","size":64795,"stargazers_count":97,"open_issues_count":9,"forks_count":11,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-05-09T01:46:30.263Z","etag":null,"topics":["backend","google-aip","grpc","kotlin","protobuf","spring-boot"],"latest_commit_sha":null,"homepage":"https://sisyphus.bybutter.com","language":"Kotlin","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/ButterCam.png","metadata":{"files":{"readme":"ReadMe.md","changelog":"CHANGELOG.md","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":"2020-05-17T05:16:52.000Z","updated_at":"2025-03-15T05:56:25.000Z","dependencies_parsed_at":"2025-05-08T21:34:12.485Z","dependency_job_id":"e6bac47a-ec0a-474d-a8ce-5345ad87a03f","html_url":"https://github.com/ButterCam/sisyphus","commit_stats":null,"previous_names":[],"tags_count":97,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ButterCam%2Fsisyphus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ButterCam%2Fsisyphus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ButterCam%2Fsisyphus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ButterCam%2Fsisyphus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ButterCam","download_url":"https://codeload.github.com/ButterCam/sisyphus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253176443,"owners_count":21866142,"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":["backend","google-aip","grpc","kotlin","protobuf","spring-boot"],"created_at":"2024-11-10T03:05:22.871Z","updated_at":"2025-05-09T01:46:43.616Z","avatar_url":"https://github.com/ButterCam.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n\u003cp\u003e\n\u003cimg src=\"doc/sisyphus_logo_github.svg\" width=\"180px\" alt=\"Sisyphus\" /\u003e\n\u003c/p\u003e\n\u003cp\u003e\n\u003ca href=\"https://github.com/grpc-ecosystem/awesome-grpc\"\u003e\u003cimg alt=\"Awesome gRPC\" src=\"https://raw.githubusercontent.com/sindresorhus/awesome/main/media/badge.svg\" /\u003e\u003c/a\u003e\n\u003cimg src=\"https://img.shields.io/badge/jdk-17-green?logo=openjdk\" alt=\"JDK version\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/SpringBoot-3-green?logo=springboot\" alt=\"SpringBoot version\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/Kotlin-1.9-green?logo=kotlin\" alt=\"Kotlin version\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/gradle-%5E8-green?logo=gradle\" alt=\"Gradle version\"/\u003e\n\u003ca href=\"https://mvnrepository.com/artifact/com.bybutter.sisyphus/sisyphus-bom\"\u003e\u003cimg src=\"https://img.shields.io/maven-central/v/com.bybutter.sisyphus/sisyphus-bom\" alt=\"Maven Central\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003c/h1\u003e\n\nSisyphus is the way how we provide backend services. It integrates all tools and libraries needed for designing API\nwhich follows the [Google API Improvement Proposals](https://aip.bybutter.com).\n\nSee the [documents](https://sisyphus.bybutter.com/) website for more details,\n也包含[中文文档](https://sisyphus.bybutter.com/zh-Hans/)。\n\n## We are rolling a huge boulder\n\nDue to analyzing product documents completely, it is not particularly difficult to write an exquisite and easy-to-use\nAPI at the beginning for most APIs.\n\nHowever, many people will break the initial design of the API in the endless updates of products.\n\nIt's hard to create a strong and extensible API in the whole project lifetime, just like rolling a huge boulder\nendlessly up a steep hill.\n\nSo we need an all-encompassing guide book to guide us in creating, updating, and modifying APIs.\n\nThe [Google API Improvement Proposals](https://aip.bybutter.com) is the all-encompassing guide book. Google created it\nin their rich and extensive API design experience. It laid the foundation for anyone to create an extensible API.\n\n## Good tools can help you\n\nChoosing good tools can help you 'rolling a huge boulder' faster and easier. Sisyphus provides and integrates many tools\nin your 'boulder rolling' route.\n\n[**Kotlin**](https://kotlinlang.org/) is our target language. The mature JVM community and concise grammar are the\nreasons.\n\n[**Spring boot**](https://spring.io/projects/spring-boot) is our old friend to manage and organize our components.\n\n[**gRPC**](https://grpc.io/) is our target API framework. Sisyphus also provides\nthe [HTTP and gRPC Transcoding](https://aip.bybutter.com/127) component for the environment which isn't compatible with\ngRPC.\n\n[**Sisyphus JS**](https://github.com/ButterCam/sisyphus-js) is our customized protobuf and gRPC runtime for Javascript/Typescript.\n\n[**Sisyphus Protobuf**](/lib/sisyphus-protobuf) is our customized protobuf runtime, which designed for Kotlin.\n\n[**Sisyphus gRPC Coroutine**](/lib/sisyphus-grpc) is our customized gRPC stub runtime, which designed for Kotlin coroutine.\n\n[**Sisyphus gRPC RxJava**](/lib/sisyphus-grpc) is our customized gRPC stub runtime, which designed for RxJava2(Client only, design for Android).\n\n[**Sisyphus DTO**](/lib/sisyphus-dto) is the way how we create struct without protobuf.\n\n[**Sisyphus Test**](/lib/sisyphus-test) is the way how we test our gRPC API by data-driven.\n\n[**Sisyphus Middleware**](/middleware) is the way how we connect Sisyphus and other systems.\n\n[**Sisyphus Configuration Artifact**](/middleware/sisyphus-configuration-artifact) is the way how we manage\nconfigurations and developing environment.\n\n[**Sisyphus Kubernetes gRPC client**](/middleware/sisyphus-grpc-client-kubernetes) is the way how we implement service\ndiscovery in Kubernetes.\n\n[**Sisyphus Protobuf Compiler**](/tools/sisyphus-protoc) is the way how we generate Kotlin codes by `.proto` files.\n\n[**Sisyphus Project Plugin**](/tools/sisyphus-project-gradle-plugin) is the way how we manage project and configuring\nGradle.\n\n[**Sisyphus Protobuf Plugin**](/tools/sisyphus-protobuf-gradle-plugin) is the way how we generate code by `.proto` files\nin Gradle.\n\n**And More** tools like [CEL(Common Expression Language)](https://github.com/google/cel-spec)\n, [Filtering](https://aip.bybutter.com/160) and [Ordering](https://aip.bybutter.com/132#ordering) scripts will help you\nto design APIs following Google AIP.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuttercam%2Fsisyphus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbuttercam%2Fsisyphus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuttercam%2Fsisyphus/lists"}