How to write a new frontend engine

This documentation page is under development. The below tips stand but you may want to look at the existing frontend engine implementations about how to make your own one.

For the sake of extensibility frontend engines follow the "dynamic page" pattern.

  • Frontend engine main controllers should be named with the [EngineName]EngineController convention.
  • Since frontend engine page parts are added dynamically (not with migrations) they don't require a handler.
  • All frontend engine page types should include EngineCommonPart.
  • For frontend engines to be properly contexted routes to them should include either a GraphName token or a GraphContext data token.

Page content type conventions:

  • Page parts should be prefixed when necessary to avoid name clashing with other content parts
  • Shapes are to be named Page_PagePartName
  • Model, drivers, templates, etc. should be placed into a subdirectory: Pages/ControllerName/PagePartName.cshtml Here part name prefixes can be ommited.