{"id":15807955,"url":"https://github.com/ptrdom/play-grpc-slinky-grpcweb","last_synced_at":"2026-04-21T16:33:56.584Z","repository":{"id":94132833,"uuid":"326046849","full_name":"ptrdom/play-grpc-slinky-grpcweb","owner":"ptrdom","description":"Template project for full-stack Scala web development based on gRPC-web.","archived":false,"fork":false,"pushed_at":"2021-03-30T15:29:14.000Z","size":24,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-06T03:02:30.800Z","etag":null,"topics":["akka-grpc","grpc","grpc-web","play-framework","scala","scalajs","slinky"],"latest_commit_sha":null,"homepage":"","language":"Scala","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/ptrdom.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}},"created_at":"2021-01-01T19:59:04.000Z","updated_at":"2021-12-18T12:49:06.000Z","dependencies_parsed_at":"2023-03-13T17:06:25.324Z","dependency_job_id":null,"html_url":"https://github.com/ptrdom/play-grpc-slinky-grpcweb","commit_stats":null,"previous_names":[],"tags_count":2,"template":true,"template_full_name":"ptrdom/play-grpc-scala-js-grpcweb","purl":"pkg:github/ptrdom/play-grpc-slinky-grpcweb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ptrdom%2Fplay-grpc-slinky-grpcweb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ptrdom%2Fplay-grpc-slinky-grpcweb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ptrdom%2Fplay-grpc-slinky-grpcweb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ptrdom%2Fplay-grpc-slinky-grpcweb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ptrdom","download_url":"https://codeload.github.com/ptrdom/play-grpc-slinky-grpcweb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ptrdom%2Fplay-grpc-slinky-grpcweb/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262421822,"owners_count":23308520,"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":["akka-grpc","grpc","grpc-web","play-framework","scala","scalajs","slinky"],"created_at":"2024-10-05T03:01:34.176Z","updated_at":"2026-04-21T16:33:51.549Z","avatar_url":"https://github.com/ptrdom.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Play gRPC Slinky gRPC-web\n\nThis template project was the result of investigation into full-stack `Scala` web development experience with following requirements:\n\n- Compile time type safety\n- Streaming API\n- Quick hot reload in development\n- Single deployment in production\n\nDecision to base the implementation on `gRPC-Web` came after testing out popular \nimplementations of `REST`([autowire](https://github.com/lihaoyi/autowire), \n[endpoints4s](https://github.com/endpoints4s/endpoints4s)) and `GraphQL` \n([sangria](https://github.com/sangria-graphql/sangria), \n[caliban](https://github.com/ghostdogpr/caliban)) \nand realisation that none of existing solutions satisfy each requirement, \nwhile `gRPC`'s basic functionality has all the required features.   \n\n## How to run\n\n### Development mode\n\nUsing `sbt`:\n- `~serverDev`\n- `~clientDev`\n\nUsing `IntelliJ` (tested with `2020.3`):\n- Enable `sbt shell` for compilation.\n- Use Run/Debug configurations provided in `/.run`.\n\n`~serverDev` starts back-end based on Play Framework in `watch` mode. \nIt serves both `HTTP` and `gRPC` endpoints for front-end to consume.\n`~clientDev` starts `webpack dev server` with `HMR` enabled for `Scala.js`, specifically `Slinky`, front-end development.\nAfter running these commands and opening `localhost:9000`, back-end returns index page with\nscript definition that wires-in front-end.\n\n### Production mode\n\nUsing `sbt`:\n- Start `sbt` with production flag enabled - `sbt \"-Denv=prod\"`\n- `server/docker:publishLocal`\n\nIn production mode, optimized front-end bundle is packaged and stored in back-end's assets,\nthen served with aggressive caching enabled by fingerprinting.\n\n## Slinky IntelliJ support\n\nhttps://slinky.dev/docs/installation/ describes how to add support `@react` for macro.\nIf documented approach fails, manual plugin installation can be done by downloading \nhttps://mvnrepository.com/artifact/me.shadaj/slinky-core-ijext `.jar` \nand manually installing it as IntelliJ plugin through `Settings -\u003e Plugins -\u003e Install Plugin from Disk...`. \nTested with IntelliJ IDEA `2020.3.1` and Slinky `0.6.6`.\n\n## Built on:\n- https://github.com/akka/akka-grpc\n- https://github.com/playframework/play-grpc\n- https://github.com/playframework/playframework\n- https://github.com/scalapb/scalapb-grpcweb\n- https://github.com/sbt/sbt-web\n- https://github.com/vmunier/sbt-web-scalajs\n- https://github.com/scalacenter/scalajs-bundler\n- https://github.com/shadaj/slinky","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fptrdom%2Fplay-grpc-slinky-grpcweb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fptrdom%2Fplay-grpc-slinky-grpcweb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fptrdom%2Fplay-grpc-slinky-grpcweb/lists"}