This document provides guidelines for code formatting to developers contributing
In 2016, SilverStripe started a rewrite of its CMS interface in
ReactJS. Code written prior to this rewrite
might not follow these conventions, and is placed in a
legacy/ folder structure.
SilverStripe authored npm dependencies are posted under the silverstripe npm organisation.
Check our requirements documentation.
as well as the AirBnB React Conventions.
A lot of their rules can be validated via ESLint,
and can be checked locally via
yarn run lint.
All symbols and documentation should use UK-English spelling (e.g. "behaviour" instead of "behavior"), except when necessitated by third party conventions (e.g using "color" for CSS styles).
File and Folder Naming
client/folder on the top level of the module
- Frontend files relating to the
frameworkCMS UI should be placed in
- File names should follow the AirBnB Naming Conventions
client/src/componentsfolder should contain only React presentational components. These components should be self-contained, and shouldn't know about Redux state.
client/src/containersfolder should contain only React container components
- React classes in
client/src/containersshould have one folder per component, alongside a
README.mdand SCSS files where applicable.
client/src/statefolder should contain Redux actions, action types and reducers. Each set of these should be kept in a folder named the same as its reducer state key.
with their file name suffixed with
tests/subfolder alongside the module code.