{"id":32405754,"url":"https://github.com/lagenorhynque/hello-grpc","last_synced_at":"2026-04-16T00:31:54.022Z","repository":{"id":79132902,"uuid":"326176412","full_name":"lagenorhynque/hello-grpc","owner":"lagenorhynque","description":"An example Protojure app generated from protojure template","archived":false,"fork":false,"pushed_at":"2024-01-25T05:56:37.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-25T12:02:38.726Z","etag":null,"topics":["clojure","grpc","protojure"],"latest_commit_sha":null,"homepage":"","language":"Clojure","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/lagenorhynque.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":"2021-01-02T12:18:35.000Z","updated_at":"2024-01-25T03:58:08.000Z","dependencies_parsed_at":"2023-05-23T10:45:25.153Z","dependency_job_id":null,"html_url":"https://github.com/lagenorhynque/hello-grpc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lagenorhynque/hello-grpc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lagenorhynque%2Fhello-grpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lagenorhynque%2Fhello-grpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lagenorhynque%2Fhello-grpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lagenorhynque%2Fhello-grpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lagenorhynque","download_url":"https://codeload.github.com/lagenorhynque/hello-grpc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lagenorhynque%2Fhello-grpc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31866269,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"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":["clojure","grpc","protojure"],"created_at":"2025-10-25T12:00:54.796Z","updated_at":"2026-04-16T00:31:53.990Z","avatar_url":"https://github.com/lagenorhynque.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hello-grpc\n\nThis is the output of a `lein new protojure` template run. The output is a set of sample\nfiles demonstrating the use of the protojure lib + protoc plugin to expose a GRPC service.\n\nThe overall structure of the code/doc was originally modified from what you get when you run:\n\n```lein new pedestal-service hello-grpc```\n\nThe output of the pedestal-service template was\naugmented in the following ways:\n\n1. Added resources/addressbook.proto\n2. Modified the src/hello-grpc/service.clj to implement the GRPC service\n   (see `-- PROTOC-GEN-CLOJURE --` annotations in the code)\n3. Added dependencies to project.clj for [undertow](http://undertow.io/)\n   and [protobuf](https://developers.google.com/protocol-buffers/).  For example:\n\n```\n[io.undertow/undertow-core \"2.0.25.Final\"]\n[io.undertow/undertow-servlet \"2.0.25.Final\"]\n[com.google.protobuf/protobuf-java \"3.9.1\"]\n```\n\n**Note**: See the [Pedestal](https://github.com/pedestal/pedestal) set of libraries on github\nfor more information on Pedestal, which Protojure uses in this project to help integrate with\na server for hosting our GRPC endpoints.\n\n## Prerequisites\n\nThe [Protocol Buffer 'protoc' compiler](https://github.com/protocolbuffers/protobuf/releases)\nand [Protojure protoc-plugin](https://github.com/protojure/protoc-plugin/releases) must be installed.\n\nYou can confirm these dependencies are installed by either using the `all` Makefile target\nor manually running\n\n```\nprotoc --clojure_out=grpc-client,grpc-server:src --proto_path=resources resources/addressbook.proto\n```\n\n## Getting Started\n\nAfter you have run `make all` or the protoc command mentioned in the prerequisites above:\n\n1. Start the application: `lein run`\n2. Go to [localhost:8080](http://localhost:8080/) to see: `Hello from hello-grpc, backed by Protojure Template! `\n\nYou now have a grpc endpoint written in clojure running locally!\n\nThe `.proto` definition file can be found at `./resources/addressbook.proto`\n\nIn order to invoke the hello endpoint:\n\n3. Run `lein repl` while in the project root (Have `lein run` executing in a separate terminal session, as above)\n4. In the repl, run:\n\n```\n(use 'com.example.addressbook.Greeter.client)\n(use 'protojure.grpc.client.providers.http2)\n@(Hello @(connect {:uri (str \"http://localhost:\" 8080)}) {:name \"John Doe\"})\n```\n\nYou should see output like the below in the repl after the 3rd command:\n\n```\n#com.example.addressbook.HelloResponse{:message \"Hello, John Doe\"}\n\n```\n\n## Making this project your own:\n\nFrom here, a probable next step is adding your own `.proto` Protocol Buffer\nand/or GRPC Service definition files.\n\nYou may place these whereever you like, alongside `addressbook,proto`, somewhere else in this\nproject, or anywhere else on your local system. Once you have a selected a location, either\nupdate the command above to:\n\n```\nprotoc --clojure_out=grpc-server:src --proto_path=\u003cpath to your.protos\u003e \u003c.protos to compile\u003e\n```\n\nor update the Makefile `all` target similarly.\n\nThis should then result in directories in the `src/` folder of this project containing clojure\nnamespaces corresponding to the packages of your `.proto` files.\n\nIf you then update the `require` block of hello-grpc/service.clj to use these generated clojure\nnamespaces created by the protoc command above and placed in your source directory, model your\nGRPC endpoint definition on the sample `Greeter` GRPC Service, and then re-run `lein run`, you\nwill have deployed endpoints exposing your defined GRPC services using your Protocol Buffer\ndefinitions.\n\nNote that you may also easily expose HTTP/1, HTTP/2 endpoints alongside your GRPC endpoints (a feature\nthat may be unique to Protojure among libraries implementing language .proto \u0026 GRPC support but\nthat we hope you'll find useful). The home and about page handlers are just standard run-of-the-mill\n.clj [ring](https://github.com/ring-clojure/ring) handlers.\n\n## License\n\nThis project is licensed under the Apache License 2.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flagenorhynque%2Fhello-grpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flagenorhynque%2Fhello-grpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flagenorhynque%2Fhello-grpc/lists"}