MCPcopy Index your code
hub / github.com/CRED-CLUB/propeller

github.com/CRED-CLUB/propeller @v0.0.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.0.5 ↗ · + Follow
540 symbols 1,149 edges 55 files 279 documented · 52% updated 7mo agov0.0.5 · 2024-11-29★ 3304 open issues

Browse by type

Functions 436 Types & classes 104
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Propeller 𖣘

Go Report Card CHECKS GoDoc Stars

Propeller is an opinionated platform that enables realtime and bidirectional communication between frontend and backend clients.

The Need

While polling and REST-style request-response have been the dominant paradigms for client-server communication, they inherently come with limitations that can impact performance, scalability, and user experience. 1. Increased Latency: Polling intervals often dictate the minimum latency for receiving updates, limiting real-time responsiveness. 2. Resource Consumption: Each polling request requires server resources to process, even if there's no new data. 3. Retry Storms: In case of widespread failures or degradations, a large number of clients may initiate retries simultaneously, overwhelming the server. 4. Scalability Constraints: As the number of clients and polling frequency increase, server load can become a significant bottleneck.

Features

  1. Frontend Client can create a persistent channel with the backend.
  2. Backend services can send events to the frontend clients.
  3. Support for multiple devices for a client.
  4. Support for custom topics between frontend and backend.
  5. Easy integration with legacy REST based services.

Building Blocks

Propeller is built on top of the following battle-tested technologies to power realtime experiences: 1. bi-directional gRPC: Propeller uses bi-directional streaming gRPC to establish a stream between the client and the server. 2. Redis and NATS: Propeller supports Redis and NATS as brokers for the communication. 3. Golang: Propeller uses the power of Golang to achieve high number of concurrent clients being connected.

Documentation

Please refer https://cred-club.github.io/propeller/ for further documentation on getting started, testing, design etc.

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Method 362
Struct 88
Function 74
Interface 12
TypeAlias 3
FuncType 1

Languages

Go100%

Modules by API surface

rpc/push/v1/api.pb.go214 symbols
rpc/push/v1/api_grpc.pb.go39 symbols
pkg/fs/fs.go31 symbols
internal/push/service.go20 symbols
internal/push/model.go18 symbols
pkg/broker/redis/redis.go12 symbols
internal/pubsub/pubsub.go12 symbols
internal/component/apiserver/grpc_handler.go11 symbols
pkg/broker/redis/streams.go10 symbols
pkg/broker/redis/pubsub.go10 symbols
internal/pubsub/nats.go10 symbols
internal/component/apiserver/websocket_handler.go10 symbols

For agents

$ claude mcp add propeller \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page