Mattermost allows for a variety of customization options and modifications, making it possible to create a more adequate experience depending on the needs of each deployment.
There are a few limitations regarding how the re-branding of Mattermost must be handled, as well as the fact that changes to the Enterprise Edition’s source code isn’t supported. However these limitations can be overcome with the utilization of Plugins.
The Mattermost server’s source code, written in Golang, may be customized to deliver additional functionalities or to meet specific security requirements.
It’s recommended that you attempt to meet such customizations by leveraging the Plugin framework in order to avoid creating any breaking changes, however details on how to build a custom server may be found here.
Some parts of server-side customizations don’t require changes to the source code. View more details on which server files may be customized in here.
Note: Modifications to server files can be utilized on both Team Edition and Enterprise Editions.
Mattermost’s web application runs on React, and its codebase has been open-sourced (regardless of which edition your server uses). You can view details on how to customize the web app in here. Keep in mind, however, that some changes to the web app can also leverage the Plugin framework, which can help reduce the necessity of rebasing your custom client to each Mattermost release.