/muminst-server-rs

Muminst server written in Rust

Primary LanguageRust

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 to true
  • 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
    • 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 receives telegram as a client
  • Thread management
    • Supports multiple worker threads
    • Terminates the entire process and child threads in case one gets terminated.