# Introduction

The CMSMS Themes Optimizer helps to increase page speed metrix and advanced developer work-flow.

# Increase page speed metrix

When your app or website loads fast users can interact with it quickly, this has a possitive impact on user experience and revenue. Page speed is also important for Search Engine Optimization (SEO).

There are multiple tools to measure your app/website performance, quality and correctness for example Google Lighthouse or GTmetrix.

CMSMS Themes Optimizer is the tool to get a better page speed score.

# Advanced developer work-flow

I you like an automated file based work-flow this project is for you. Repetitive tasks and optimizations are automated by Gulp and Webpack. While developing- and testing you can lint your source-code. All file changes and interactions are synchronized between multiple devices using Browsersync.

Having good skills will help, having an "advanced developer" workflow makes you better and happier.

This is not a click and go project. You have to npm install the cmsms_themes_optimizer and write most of the HTML, Sass/CSS and JavaScript theme files yourself. Adopting a CSS/JS framework can speed things up but is not required. CMSMS Themes Optimizer is usable to kick-start a new CMSMS project or it can be applied to existing ones.

Only looking for a Gulp or Webpack setup for non CMSMS related development? cmsms_themes_optimizer gulpfile.babel.js gulp/*.js and webpack/*.js illustrates battle tested examples and can be configured for any directory structure.

If automation and an opinionated setup are not your thing? Probably this project is not for you. Although: You might get some inspiration from the tasks written for the cmsms_themes_optimizer. You can bring your own NPM, Bash or Grunt scripts and use the setup of this project as reference.

The cmsms_themes_optimizer project is separated from your CMSMS Theme folder. To make the optimizer tools as generic as possible everything is configurable to adapt your development environment and directory structure.

In your CMSMS Theme folder you store templates, JavaScript and CSS assets and a configuration file is specific for your project, these drive the cmsms_themes_optimizer.

# Why did I start this project

One of the big changes on CMSMS 2.3 related to theming are parent/child- themes and a themes.json file. Design Manager module free theming is possible now.

For me it was a logical step to launch this project, file-based theming and the cmsms_themes_optimizer project go well together.