All Projects → WelcomerTeam → Sandwich-Daemon

WelcomerTeam / Sandwich-Daemon

Licence: MIT License
Sandwich Daemon is the middle man between discord and your microserviced bot. Handles gateway, state and provides a dashboard.

Programming Languages

go
31211 projects - #10 most used programming language
Vue
7211 projects

Projects that are alternatives of or similar to Sandwich-Daemon

Hemera
🔬 Writing reliable & fault-tolerant microservices in Node.js https://hemerajs.github.io/hemera/
Stars: ✭ 773 (+3580.95%)
Mutual labels:  microservice, nats
Go Micro Boilerplate
The boilerplate of the GoLang application with a clear microservices architecture.
Stars: ✭ 147 (+600%)
Mutual labels:  microservice, nats
laracom
laracom driven by go micro services
Stars: ✭ 37 (+76.19%)
Mutual labels:  microservice, nats
alpine-ssh
This repository can be used for development/learning and RnD purpose for alpine-ssh running inside the docker container
Stars: ✭ 17 (-19.05%)
Mutual labels:  microservice
imageup
🎑 ⬆️ A high speed image manipulation and storage microservice for Google Cloud Platform written in Go
Stars: ✭ 33 (+57.14%)
Mutual labels:  microservice
api-gateway
Api Gateway for a microservices deployment
Stars: ✭ 31 (+47.62%)
Mutual labels:  microservice
space-cloud
Open source Firebase + Heroku to develop, scale and secure serverless apps on Kubernetes
Stars: ✭ 3,405 (+16114.29%)
Mutual labels:  microservice
spring-cloud-sidecar-polygot
This project contains samples demonstrating the usage of side car polygot
Stars: ✭ 30 (+42.86%)
Mutual labels:  microservice
mu-cl-resources
High-level abstractions for generating generic jsonapi compliant resources configured in Common Lisp.
Stars: ✭ 14 (-33.33%)
Mutual labels:  microservice
kubernetes-go-grpc
Microservices using Go, gRPC and Kubernates
Stars: ✭ 35 (+66.67%)
Mutual labels:  microservice
game 01
Scalable MMORPG game server based on entity control
Stars: ✭ 19 (-9.52%)
Mutual labels:  microservice
demo-vertx-kotlin-rxjava2-kubernetes
Demonstration of Eclipse Vert.x, Kotlin, RxJava2 and Kubernetes
Stars: ✭ 23 (+9.52%)
Mutual labels:  microservice
zauberlehrling
Collection of tools and ideas for splitting up big monolithic PHP applications in smaller parts.
Stars: ✭ 28 (+33.33%)
Mutual labels:  microservice
rc-coffee-chats
A service that matches community members for chats
Stars: ✭ 16 (-23.81%)
Mutual labels:  microservice
ILEastic
Embedded application server for ILE on IBM i
Stars: ✭ 31 (+47.62%)
Mutual labels:  microservice
stan.rb
Ruby NATS Streaming Client
Stars: ✭ 21 (+0%)
Mutual labels:  nats
silky
The Silky framework is designed to help developers quickly build a microservice development framework through simple code and configuration under the .net platform.
Stars: ✭ 146 (+595.24%)
Mutual labels:  microservice
pandora
Small box of pandora to prototype your app with ready for use backend. This is just my compilation of different solutions occasionally applied in hackathons and challenges
Stars: ✭ 26 (+23.81%)
Mutual labels:  nats
node-carotte-amqp
An amqplib wrapper for microservices
Stars: ✭ 27 (+28.57%)
Mutual labels:  microservice
stan-js-replicator
replicate messages from streaming channel to jetstream
Stars: ✭ 14 (-33.33%)
Mutual labels:  nats

Sandwich Daemon

Sandwich Daemon is a utility that handles gateway connections, state and event processing. It handles the events from discord, handles filtering out events you do not want, stores users, members, guilds etc. in its internal store then sends the resulting data into a message queue for further handling from consumers.

Easily create new managers, scale up utilising rolling restarts on already running bots with shardgroups and configure and manage everything with a dashboard.

Includes an easy to use GRPC interface for fetching information from Sandwich including (but not limited to) searching for members by ID or name, fetching mutual guilds and returning what shard and manager a guild may be on.

Sandwich can filter out events on an absolute level so it will not even know it received the event and also the possibility to internally process (such as add to state) but then not publish to a consumer.

Consuming

Consuming Sandwich Daemon events should be fairly similar to a regular discord payload however also include a few changes to both fit the purpose of sandwich and support forward compatibility.

A sandwich payload received by a consumer will be a JSON payload similar to a regular discord payload. Sandwich events will also include the exact same op,d,s,t keys from a regular discord payload and these should not be affected by sandwich between it receiving and it being published.

Any extra data that sandwich includes will be under the keys __extra, __sandwich, __sandwich_trace.

  • __extra: This is the sandwich equivelant of the d key in the regular discord payload. This will include extra data that will be useful contextually, at the moment this will only be present on _UPDATE events and will include the previous state.

  • __sandwich_trace: This will include trace times (will be introduced at a later point in time. This will be key pairs of map[string]int).

  • __sandwich: This includes any metadata that will be useful for consumers identifying the origin of the message. Metadata includes the keys v,i,a,s

    • __sandwich.v: The current version of Sandwich.
    • __sandwich.i: The ProducerIdentifier of a manager.
    • __sandwich.a: The Application name of a manager. This will be the regular identifier.
    • __sandwich.s: This is a list of integers. This represents: shardgroupID, shardID, shardCount
    {
      "op":0,
      "d": ...,
      "s":117,
      "t":"MESSAGE_CREATE",
      "__extra": null,
      "__sandwich":{
        "v":"1.0.1",
        "i":"welcomer",
        "a":"welcomer_dogfd",
        "s":[ 1, 0, 1 ]
      },
      "__sandwich_trace": null
    }
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].