muminst-server-rs
This is the muminst server implementation in rust.
This is currently a work in progress, and many features are still unstable.
Follow up on the feature compatibility list to get familiar with ongoing progress:
- dotenv
- Logger
- uses env_logger
- uses actix logger middleware
- discord client connection event
- discord client reconnection event
- discord client startup
- http server startup
- http server requests
- Storage
- sqlite3 database
- diesel orm setup
- run pending migrations when
RUN_PENDING_MIGRATIONS
env var is set totrue
- Modularized
- Docker Image
- debian version
- alpine version (lots of problems with musl)
- Kubernetes manifests
- PersistentVolumeClaim
- Deployment
- Service
- VirtualService
- DestinationRule
- Kustomize
- CI
- Setup github actions
- Build docker image
- Deploy application to kubernetes
- Observability
- HTTP Server
- GET /sounds
- GET /assets
- GET /download-sounds
- POST /play-sound
- POST /upload
- Checks for supported file types
- mp3
- webm
- ogg
- wav
- Checks if sound already exists in the database
- Uploads sound to disk
- Inserts sound record in the database
- Inserts given tags
- Checks for supported file types
- PUT /add-tags/:sound_id
- Websocket Server
- actix websocket setup
- /ws route
- Notifies locked state to clients
- Manages connections correctly
- Discord Client
- Reconnects in case of disconnect events from the discord server
- Enable consumers to play audio outside of a command function. (e.g.: from an endpoint handler)
- Audio can be played through messaging to the Discord Actor address, which is available in Actix Web Data context in case you need access from a middleware or an endpoint handler.
- Telegram Client
- Sends audio to telegram in case the
POST /play-sound
endpoint receivestelegram
as a client
- Sends audio to telegram in case the
- Thread management
- Supports multiple worker threads
- Terminates the entire process and child threads in case one gets terminated.