Folder Structure
The <customer theme> folder structure is designed to simplify front-end development by organizing assets and resources in a clear and efficient manner. At its core is the src directory, which contains everything needed to build the theme. Let's explore its key components:
- src/images: Holds essential image assets like
favicon.ico, ensuring a visually appealing website. - src/fonts: Stores
fontfiles for consistent typography across the site. - src/scripts: Houses
TypeScriptfiles for interactive web functionalities. - src/styles: Contains
SCSSfiles to define the website's layout and aesthetics. - src/templates: Centralizes reusable templates for different sections of the website, including base layouts, components, widgets, and specific page views.
This organized structure streamlines development, making it easier to maintain and scale the project over time. By following this framework, developers can efficiently collaborate and create exceptional web experiences.
cloudsuite_responsive
In themes based on cloudsuite_responsive, the templates reside in <customer theme>/templates/ rather than <customer theme>/src/templates/.
Examples
Theme Based on Mosaic Templates
Mosaic Templates theme folder structure
<customer theme>/
├── src/
│ ├── images/
│ │ ├── favicon.ico
│ │ └── ...
│ │
│ ├── fonts/
│ │ ├── roboto.woff
│ │ └── ...
│ │
│ ├── scripts/
│ │ ├── main.ts
│ │ └── ...
│ │
│ ├── styles/
│ │ ├── main.scss
│ │ └── ...
│ │
│ └── templates/
│ ├── base/
│ │ ├── js-body-custom.html
│ │ └── ...
│ │
│ ├── components/
│ │ └── header/
│ │ ├── search.html
│ │ └── ...
│ │ └── ...
│ │
│ ├── layouts/
│ │ ├── pdp.html
│ │ └── ...
│ │
│ ├── widgets/
│ │ ├── widget_name/
│ │ │ ├── template.html
│ │ │ └── schema.json
│ │ └── ...
│ │
│ ├── views/
│ │ ├── pdp/
│ │ │ └── index.html
│ │ └── ...
│ │
│ └── base.html
│
├── package.json
├── webpack.config.js
└── ...
Theme Based on Mosaic Templates (Monorepo)
Mosaic Templates monorepo theme folder structure
<customer>/
├── <customer theme 1>/
│ ├── src/
│ │ ├── images/
│ │ │ ├── favicon.ico
│ │ │ └── ...
│ │ │
│ │ ├── fonts/
│ │ │ ├── roboto.woff
│ │ │ └── ...
│ │ │
│ │ ├── scripts/
│ │ │ ├── main.ts
│ │ │ └── ...
│ │ │
│ │ ├── styles/
│ │ │ ├── main.scss
│ │ │ └── ...
│ │ │
│ │ └── templates/
│ │ ├── base/
│ │ │ ├── js-body-custom.html
│ │ │ └── ...
│ │ │
│ │ ├── components/
│ │ │ └── header/
│ │ │ ├── search.html
│ │ │ └── ...
│ │ │ └── ...
│ │ │
│ │ ├── layouts/
│ │ │ ├── pdp.html
│ │ │ └── ...
│ │ │
│ │ ├── widgets/
│ │ │ ├── widget_name/
│ │ │ │ ├── template.html
│ │ │ │ └── schema.json
│ │ │ └── ...
│ │ │
│ │ ├── views/
│ │ │ ├── pdp/
│ │ │ │ └── index.html
│ │ │ └── ...
│ │ │
│ │ └── base.html
│ │
│ ├── package.json
│ ├── webpack.config.js
│ └── ...
│
├── <customer theme 2>/
│ ├── src/
│ │ ├── images/
│ │ │ ├── favicon.ico
│ │ │ └── ...
│ │ │
│ │ ├── fonts/
│ │ │ ├── roboto.woff
│ │ │ └── ...
│ │ │
│ │ ├── scripts/
│ │ │ ├── main.ts
│ │ │ └── ...
│ │ │
│ │ ├── styles/
│ │ │ ├── main.scss
│ │ │ └── ...
│ │ │
│ │ └── templates/
│ │ ├── base/
│ │ │ ├── js-body-custom.html
│ │ │ └── ...
│ │ │
│ │ ├── components/
│ │ │ └── header/
│ │ │ ├── search.html
│ │ │ └── ...
│ │ │ └── ...
│ │ │
│ │ ├── layouts/
│ │ │ ├── pdp.html
│ │ │ └── ...
│ │ │
│ │ ├── widgets/
│ │ │ ├── widget_name/
│ │ │ │ ├── template.html
│ │ │ │ └── schema.json
│ │ │ └── ...
│ │ │
│ │ ├── views/
│ │ │ ├── pdp/
│ │ │ │ └── index.html
│ │ │ └── ...
│ │ │
│ │ └── base.html
│ │
│ ├── package.json
│ ├── webpack.config.js
│ └── ...
│
├── package.json
├── webpack.config.js
└── ...
Theme based on cloudsuite_responsive
cloudsuite_responsive theme folder structure
<customer theme>/
├── src/
│ ├── images/
│ │ ├── favicon.ico
│ │ └── ...
│ │
│ ├── fonts/
│ │ ├── roboto.woff
│ │ └── ...
│ │
│ ├── scripts/
│ │ ├── main.ts
│ │ └── ...
│ │
│ └── styles/
│ ├── main.scss
│ └── ...
│
├── templates/
│ ├── base/
│ │ ├── js-body-custom.html
│ │ └── ...
│ │
│ ├── components/
│ │ └── header/
│ │ ├── search.html
│ │ └── ...
│ │ └── ...
│ │
│ ├── layouts/
│ │ ├── pdp.html
│ │ └── ...
│ │
│ ├── widgets/
│ │ ├── widget_name/
│ │ │ ├── template.html
│ │ │ └── schema.json
│ │ └── ...
│ │
│ ├── views/
│ │ ├── pdp/
│ │ │ └── index.html
│ │ └── ...
│ │
│ └── base.html
│
├── package.json
├── webpack.config.js
└── ...
Theme based on cloudsuite_responsive (monorepo)
cloudsuite_responsive monorepo theme folder structure
<customer>/
├── <customer theme 1>/
│ ├── src/
│ │ ├── images/
│ │ │ ├── favicon.ico
│ │ │ └── ...
│ │ │
│ │ ├── fonts/
│ │ │ ├── roboto.woff
│ │ │ └── ...
│ │ │
│ │ ├── scripts/
│ │ │ ├── main.ts
│ │ │ └── ...
│ │ │
│ │ └── styles/
│ │ ├── main.scss
│ │ └── ...
│ │
│ ├── templates/
│ │ ├── base/
│ │ │ ├── js-body-custom.html
│ │ │ └── ...
│ │ │
│ │ ├── components/
│ │ │ └── header/
│ │ │ │ ├── search.html
│ │ │ │ └── ...
│ │ │ └── ...
│ │ │
│ │ ├── layouts/
│ │ │ ├── pdp.html
│ │ │ └── ...
│ │ │
│ │ ├── widgets/
│ │ │ ├── widget_name/
│ │ │ │ ├── template.html
│ │ │ │ └── schema.json
│ │ │ └── ...
│ │ │
│ │ ├── views/
│ │ │ ├── pdp/
│ │ │ │ └── index.html
│ │ │ └── ...
│ │ │
│ │ └── base.html
│ │
│ ├── package.json
│ ├── webpack.config.js
│ └── ...
│
├── <customer theme 2>/
│ ├── src/
│ │ ├── images/
│ │ │ ├── favicon.ico
│ │ │ └── ...
│ │ │
│ │ ├── fonts/
│ │ │ ├── roboto.woff
│ │ │ └── ...
│ │ │
│ │ ├── scripts/
│ │ │ ├── main.ts
│ │ │ └── ...
│ │ │
│ │ └── styles/
│ │ ├── main.scss
│ │ └── ...
│ │
│ ├── templates/
│ │ ├── base/
│ │ │ ├── js-body-custom.html
│ │ │ └── ...
│ │ │
│ │ ├── components/
│ │ │ └── header/
│ │ │ │ ├── search.html
│ │ │ │ └── ...
│ │ │ └── ...
│ │ │
│ │ ├── layouts/
│ │ │ ├── pdp.html
│ │ │ └── ...
│ │ │
│ │ ├── widgets/
│ │ │ ├── widget_name/
│ │ │ │ ├── template.html
│ │ │ │ └── schema.json
│ │ │ └── ...
│ │ │
│ │ ├── views/
│ │ │ ├── pdp/
│ │ │ │ └── index.html
│ │ │ └── ...
│ │ │
│ │ └── base.html
│ │
│ ├── package.json
│ ├── webpack.config.js
│ └── ...
│
└── package.json