The Mattermost web app is written in JavaScript using React and Redux.
It is located in the webapp
directory of the main Mattermost repository.
https://github.com/mattermost/mattermost/tree/master/webapp
Find help wanted tickets here.
The web app is set up as a monorepo which has the code broken up into multiple packages. The main packages in the web app are:
channels
- The main web app which contains Channels, the System Console, login/signup pages, and most of the core infrastructure for the app.
src/
. Key folders include:
actions
- Contains Redux actions which make up much of the view logic for the web appcomponents
- Contains UI components and views written using Reacti18n
- Contains the localization files for the web apppackages/mattermost-redux
- Contains most of the Redux logic used for handling data from the serverplugins
- Contains the plugin framework, utility functions and componentsreducers
- Contains Redux reducers used for view stateselectors
- Contains Redux selectors used for view statetests
- Contains setup code and mocks used for unit testingutils
- Contains many widely-used utility functionsplatform
- Packages used by the web app and related projects
client
- The JavaScript client for Mattermost’s REST API, available on NPM as @mattermost/clientcomponents
- A work-in-progress package containing UI components designed to be used by different parts of Mattermosttypes
- The TypeScript types used by Mattermost, available on NPM as @mattermost/typesNote that the webapp was previously located at https://github.com/mattermost/mattermost-webapp/. You may find additional history in this repository that was not migrated back to https://github.com/mattermost/mattermost when forming the monorepo.