The server is the highly scalable backbone of the Mattermost project. Written in Go, it compiles to a single, standalone binary. It’s generally stateless except for the WebSocket connections and some in-memory caches.
Communication with Mattermost clients and integrations mainly occurs through the RESTful JSON web API and WebSocket connections primarily used for event delivery.
Data storage is done with MySQL or PostgreSQL for non-binary data. Files are stored locally, on network drives or in a service such as S3 or Minio.
https://github.com/mattermost/mattermost
The server consists of several different Go packages:
api4
- Version 4 of the RESTful JSON Web Serviceapp
- Logic layer for getting, modifying, and interacting with modelscmd
- Command line interfaceeinterfaces
- Interfaces for Enterprise Edition featuresjobs
- Job server and schedulingmodel
- Definitions and helper functions for data modelsstore
- Storage layer for interacting with caches and databasesutils
- Utility functions for various tasksweb
- Serves static pages