diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 00000000..6b8710a7
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1 @@
+.git
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..720aee5b
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,22 @@
+# EditorConfig helps developers define and maintain consistent
+# coding styles between different editors and IDEs.
+# editorconfig.org
+
+root = true
+
+[*]
+
+# We recommend you to keep these unchanged.
+charset = utf-8
+end_of_line = lf
+indent_size = 4
+indent_style = tab
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[package.json]
+indent_style = space
+indent_size = 2
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 00000000..6ad260b6
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 96c47cf2..7a321ad4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,7 @@
.deploy
node_modules
bower_components
+releases
*~
*#
@@ -23,3 +24,4 @@ npm-debug.log
*.iml
/dist
+/.env
diff --git a/3.0.0 b/3.0.0
new file mode 100644
index 00000000..e69de29b
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 00000000..123c1916
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,22 @@
+#FROM ubuntu:16.04
+FROM node:alpine
+RUN mkdir -p /app
+COPY . /app
+WORKDIR /app
+ARG DEBIAN_FRONTEND=noninteractive
+
+RUN apk update \
+&& apk upgrade \
+&& apk add --no-cache bash git openssh \
+&& npm install \
+&& chown -R node:node /app \
+&& npm rebuild node-sass \
+&& npm cache clean --force
+
+USER node
+WORKDIR /app
+
+EXPOSE 4000
+
+CMD ["npm", "start"]
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..70d27b9d
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 ModularCode
+https://github.com/modularcode
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/README.md b/README.md
index 5abcdafc..40a248a9 100644
--- a/README.md
+++ b/README.md
@@ -1,70 +1,47 @@
-# ModularAdmin: Free Dashboard Theme HTML version
+# ModularAdmin: Free Bootstrap 4 Dashboard Theme HTML version
-> [ModularAdmin](http://modularcode.github.io/modular-admin-html/) is an open source dashboard theme
-> built in modular way. That makes it awesomely easy to scale, modify and maintain.
+[](#backers) [](#sponsors) [](https://gitter.im/modularcode/modular-admin?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-> This is the HTML version, which is great for enhancing and integrating it into other platforms and environments.
-> AngularJS, Angular2, React and Meteor versions are coming soon.
-
-
- 
-
+[](http://modularcode.github.io/modular-admin-html/)
-### Table of contents
+ModularAdmin is an open source **dashboard theme** built in a modular way. That makes it easy to scale, modify and maintain.
+
+---
- * [Browser support](#browser-support)
- * [Getting started](#getting-started)
- * [Folder structure](#folder-structure)
- * [File types](#file-types)
- * [Build tasks](#build-tasks)
- * [Get in touch](#get-in-touch)
+## 📣 Heads up for the Modular Material Admin + React!
--------
+Currently I work on the Modular Admin ReactJS version, which uses **React**, **MaterialUI**, **Redux** and **TypeScript**. [**🎖 Star**](https://github.com/modularcode/modular-admin-react/stargazers) the project or [**👣 follow me on Twitter**](https://twitter.com/modularcoder) to stay up to date!
-## Browser support
+**👉 [Support me on pateron](https://www.patreon.com/modularcoder) to make this happen! 👍**
-* Last 2 Versions FF, Chrome, IE 10+, Safari Mac
-* IE 10+
-* Android 4.4+, Chrome for Android 44+
-* iOS Safari 7+
+---
-Some of the components use new Flexbox Layout module which is available in modern browsers. Bootstrap4 is used as main fraimwork.
-Please make sure if that's suitable for you [Flexbox browser support](http://caniuse.com/#feat=flexbox).
## Getting Started
-For assembling the application, you need to have [NodeJs](https://nodejs.org/en/) with npm. You also need to have Bower installed globally.
+> **Note:** If you don't want to re-build the project, you may just clone this branch directly ```https://github.com/modularcode/modular-admin-html/tree/gh-pages```
-```
-npm install -g bower
-```
+### 1. [Download ZIP](https://github.com/modularcode/modular-admin-html/releases/latest) or Git Clone
-Clone repository to local `modular-admin` folder
```
-git clone git@github.com:modularcode/modular-admin-html.git modular-admin
+git clone https://github.com/modularcode/modular-admin-html.git
```
+### 2. Build the project
+
+The cloned/downloaded repository doesn't contain prebuilt version of the project and you need to build it. You need to have [NodeJs](https://nodejs.org/en/) (v8+) with npm (v3+) installed.
-Change to new folder
-```
-cd modular-admin
-```
Install npm dependencies
```
npm install
```
-Install front-end bower dependencies
-```
-bower install
-```
-
Build the project and start local web server
```
npm start
@@ -72,41 +49,66 @@ npm start
Open the project [http://localhost:4000](http://localhost:4000).
-> The project is built by Gulp. You can read more info in [#build-tasks](**Build Tasks**) section
+
+**Warning!** all changes made in ```dist/``` folder would be overwriten on application build.
+
+
+
+You can also [run the project in docker](#running-in-docker) thanks to @japrogramer
+
+
## Folder Structure
```
-├── bower_components/ # vendor libraries installed by bower
-├── build/ # app build tasks and tools
-├── node_modules/ # node dependencies
-├── public/ # compiled result
-├── src/ # source files
-│── bowere.json # bower configuration file
-└── package.json # npm configuration file
+├── build/ # app build tasks and tools
+├── config/ # build configs and paths definitions
+├── dist/ # compiled result
+├── node_modules/ # node dependencies
+├── src/ # source files
+└── package.json # npm configuration file
+```
+
+#### ```config/``` folder
+
+This folder contains application build configurations and paths definitions.
+For **adding/removing NPM dependencies** you need to **manually define the paths** in `config/index.js` file after the module installation.
+
+#### ```build/``` folder
+
+This folder contains files related to our application compilation. That can be styles preprocessing (LESS,SASS,PostCSS) and template engine compilation, script file concatenation and minification and other related tasks.
+
+```
+├── tasks/ # tasks folder
+| └── {different tasks} # each file represents a single build task
+├── utils/ # some utils
+└── gulpfile.js # main build file for gulp build system
+
```
+
#### ```src/``` folder
-In this folder are our application source files located.
-The folder structure represents app component structure.
+This folder contains our application source files.
+The folder structure reflects the app component structure.
+
Each non-underscored folder represents a single component module. Modules can be nested inside each other.
-There are also special folders which start with underscore.
-For example ```_common/``` folder contains common components that are used by other components at the same lavel.
+There are also special folders which start with an underscore.
+For example ```_common/``` folder contains common components that are used by other components at the same level.
-This file structuring makes our app file organization very semantic and scalable. Also It's very easy to work on separate components even if we're developing large-scale application.
+This file structuring makes our app file organization very semantic and scalable. Also It's very easy to work on separate components even if you're developing large-scale applications.
```
├── _assets/ # application assets
├── _common/ # common components
| ├── helpers/ # handlebars helpers
| └── styles/ # application common styles
-├── _themes/ # different theming versions
+├── _themes/ # different theme versions
├── app/ # app module (dashboard view)
│ ├── _common/ # app common components
-│ | ├── editor/ # whyiwyg editor files
+│ | ├── editor/ # wysiwyg editor files
│ | ├── footer/ # footer files
│ | ├── header/ # header files
│ | ├── modals/ # common modal dialogs (confirm, image library, etc)
@@ -126,28 +128,15 @@ This file structuring makes our app file organization very semantic and scalable
```
-#### ```build/``` folder
-
-In this folder are located files related to our application building. That can be stype preprocessors and template engine compilation, script files concatenation and minification and other related tasks.
-
-```
-├── paths/ # application file paths
-| ├── app.js # application file paths
-| └── vendor.js # 3-rd party plugins paths
-├── tasks/ # tasks folder
-| └── {different tasks} # each file represents a single build task
-├── utils/ # some utils
-├── config.js # build configs
-└── gulpfile.js # main build file for gulp build system
-```
-#### ```public/``` folder
+#### ```dist/``` folder
Compiled state of our app with processed styles, templates, scripts and assets.
**Warning! Never work inside this folder, because your changes would be overwritten on every build**
+
## File Types
@@ -157,7 +146,7 @@ Our app consists of different file types.
We use [SASS](http://sass-lang.com/) as CSS preprocessor language.
Main variables are defined in ```src/_variables.scss``` folder.
-For making life easier we broke down styles into components, and on build we're just merging all ```.scss``` files together and processing it to ```pubilc/css/app.css``` file. Style files are merged in following order
+For making life easier we broke down styles into components, and on build we're just merging all ```.scss``` files together and processing it to ```dist/css/app.css``` file. Style files are merged in the following order
```
{variables.scss}
@@ -165,30 +154,166 @@ For making life easier we broke down styles into components, and on build we're
{bootstrap mixins}
{rest style files}
```
-The rest style files are merged in alphabetical order depending on their deepth level.
+The remaining style files are merged in the alphabetical order.
-There are also different theme variations located in ```src/_themes/``` folder, where you can overwrite main variables and get different themes. There are few predefined themes built in. You can add new theme by adding new file in ```src/_themes/``` folder. The file name should end with ```-theme.scss```.
+There are also different theme variations located in ```src/_themes/ folder```, where you can change the main variables to get different themes. There are a few predefined themes built in. You can add new themes by adding a new file in ```src/_themes/``` folder. The file name must end with ```-theme.scss```.
#### Scripts (*.js)
-#### Layouts (*-layout.hbs)
+We separate application's scripts across its components. For simplicity we use ES5 in this version, and just wrap each component's script in jQuery ```$(function() { })```. JS configurations are defined in ```src/config.js``` file. On build, application script files are merged together and copied to ```dist/js/app.js``` folder. The script files are merged in the following order.
-#### Pages (*-page.hbs)
+```
+{config.js}
+{all .js files except main.js}
+{main.js}
+```
#### Templates (*.hbs)
-#### Contexts (_context.js)
+Templates are pieces of HTML files written in template engine language. We use [Handlebars](http://handlebarsjs.com/), which allows to have conditions in HTML, reuse partials in different pages (e.g. sidebars, footers), use loops, layouts etc.
+
+#### Pages (*-page.hbs)
+
+Templates themselves are just parts of the markup, and aren't compiled as separate files. What we really want in the final output is a ```.html``` page in the ```dist/``` folder. There are special handlebar templates for it, their filenames ending with ```-page.hbs```. Each ```{pagename}-page.hbs``` file would be compiled to ```dist/{pagename}.html``` page with a flatened file structure.
+
+Pages can consist of different templates (partials) which can be included thanks to handlebars partial including feature. Also each page has its context, which is a data passed into the template on rendering. That data is used in template expressions and variables. page contexts can be defined in two ways:
+
+**YAML** headers ([example](https://github.com/modularcode/modular-admin-html/blob/master/src/app/dashboard/index-page.hbs))
+
+```
+---
+foo: bar
+list:
+ - One
+ - Two
+ - Three
+---
+```
+and **_context.js** files.
+```
+module.exports = {
+ foo: 'bar',
+ foo2: function() {
+ // do some magic, return some string
+ },
+ list: [
+ 'One', 'Two', 'Three'
+ ]
+}
+```
+
+The final result of page context is a combination of both ways. Moreover, different depth level _context.js files are extending each other and then are extended with YAML headers data. For simplicity we use only **YAML** headers.
+
+#### Layouts (*-layout.hbs)
+
+If different pages have a lot of common components like sidebars, headers, footers, then it's a good idea to define a layout for those common pages, and define in page files only the content which is unique.
+
+Layout is a page content wrapper. If the page has a layout in output we'll get page's content inserted into the layout. Layouts should have ```{{{body}}}``` handlebars tag, which is entry point for the page content. ([example](https://github.com/modularcode/modular-admin-html/blob/master/src/app/app-layout.hbs))
+
+To define a page layout you need to specify page file context's ```layout``` variable. It can be done both with a YAML header or a _context.js file. ([example](https://github.com/modularcode/modular-admin-html/blob/master/src/app/forms/forms-page.hbs)).
+
+Layouts can also have contexts and parent layouts.
+
+```
+{_main-layout.hbs} # main layout with doctype, head, scripts declaration
+ {app/app-layout.hbs} # dashboard layout with sidebar, header and footer
+ {app/forms/forms-page.hbs} # any dashboard page
+```
+
+
+If you need more advanced layouting with multiple content blocks at the same time you can use [handlebar-layouts](https://www.npmjs.com/package/handlebars-layouts) helper approach, which is also available out of the box.
+
+
+
+## Running in Docker
+
+You can run the project in docker. To build the container, you need to install docker and docker-compose than launch the docker daemon. After launching the daemon run the following commands from the project folder:
+
+Build the image
+```
+docker-compose build
+```
+
+Launch the container
+```
+docker-compose up
+```
+
+
+## Support me!
+
+### [Support me on Patreon](https://www.patreon.com/modularcoder)
+
+Creating a good quality project takes a lot's of time, so any help is really appreciated!
+
+[https://www.patreon.com/modularcoder](https://www.patreon.com/modularcoder)
+
+### Contribute
+
+Be part of our team! Feel free to open new issues/pull-requests.
+
+### Get in touch
+
+You can get in touch with us in gitter chat [](https://gitter.im/modularcode/modular-admin?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) or in the [ModularCode Facebook Group](https://www.facebook.com/groups/710770032358423/).
+Feel free to contact us with any questions, sugestions, remarks and potential feature requests that you might have.
+
+* Gevorg Harutyunyan | [LinkedIn](https://www.linkedin.com/profile/view?id=AAMAAA7ne4gBF-IVNsoiBaeOeDTd5YGSTVN2eBs) | [Facebook](https://www.facebook.com/madextreme) | [Twitter](https://twitter.com/mad4extreme) | gevharut[at]gmail.com
+
+
+
+### Backers
+
+Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/modular-admin#backer)]
-## Build Tasks
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-## Get in touch
+## Sponsors
-Usually we're discussing stuff [ModularCode Facebook Group](https://www.facebook.com/groups/710770032358423/).
-Feel free to reach us for any questions, sugestions, remarks and potential feature requests.
+Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/modular-admin#sponsor)]
-Gevorg Harutyunyan | [LinkedIn](https://www.linkedin.com/profile/view?id=AAMAAA7ne4gBF-IVNsoiBaeOeDTd5YGSTVN2eBs) | [Facebook](https://www.facebook.com/madextreme) | [Twitter](https://twitter.com/mad4extreme) | [gevharut@gmail.com](mailto:gevharut@gmail.com)
+
+
+
+
+
+
+
+
+
+
-Aram Manukyan [LinkedIn](https://www.linkedin.com/profile/view?id=AAkAABCehqwBm7aTR7IohpOidW1sVIHMo33U46o)
+### Credits
-David Tigranyan [LinkedIn](https://www.linkedin.com/profile/view?id=AAkAAAk1QJIB86I-V65l3qtgpTvfrMozBNc4p_8)
+* Gevorg Harutyunyan | [LinkedIn](https://www.linkedin.com/profile/view?id=AAMAAA7ne4gBF-IVNsoiBaeOeDTd5YGSTVN2eBs) | [Facebook](https://www.facebook.com/madextreme) | [Twitter](https://twitter.com/mad4extreme) | gevharut[at]gmail.com
+* Aram Manukyan | [LinkedIn](https://www.linkedin.com/profile/view?id=AAkAABCehqwBm7aTR7IohpOidW1sVIHMo33U46o)
+* David Tigranyan | [LinkedIn](https://www.linkedin.com/profile/view?id=AAkAAAk1QJIB86I-V65l3qtgpTvfrMozBNc4p_8)
diff --git a/bower.json b/bower.json
deleted file mode 100644
index 6016a1a5..00000000
--- a/bower.json
+++ /dev/null
@@ -1,68 +0,0 @@
-{
- "name": "modularus",
- "version": "0.0.1",
- "devDependencies": {},
- "dependencies": {
- "animate.css": "~3.4.0",
- "bootstrap": "https://github.com/twbs/bootstrap.git#v4-dev",
- "font-awesome": "~4.3.0",
- "jquery": "~2.1.4",
- "jquery-flot": "~0.8.3",
- "flot.tooltip": "~0.8.5",
- "jquery-validation": "~1.14.0",
- "jquery.sparkline": "http://omnipotent.net/jquery.sparkline/2.1.2/jquery.sparkline.js",
- "jqvmap": "~1.4.0",
- "metisMenu": "~2.0.3",
- "morrisjs": "~0.5.1",
- "nprogress": "~0.2.0",
- "quill": "~0.20.1",
- "responsive-bootstrap-toolkit": "~2.5.0",
- "Sortable": "~1.4.2",
- "tether": "~1.1.1",
- "tinycolor": "~1.2.1",
- "Watch.JS": "watch#*"
- },
- "overrides": {
- "bootstrap": {
- "main": [
- "dist/css/bootstrap.css",
- "dist/css/bootstrap-theme.css",
- "dist/js/bootstrap.js"
- ]
- },
- "jquery-flot": {
- "main": [
- "jquery.flot.js",
- "jquery.flot.resize.js",
- "jquery.flot.pie.js",
- "jquery.flot.time.js"
- ]
- },
- "flot.tooltip": {
- "main": "js/jquery.flot.tooltip.js"
- },
- "jqvmap": {
- "main": [
- "dist/jqvmap.css",
- "dist/jquery.vmap.js",
- "dist/maps/jquery.vmap.world.js"
- ]
- },
- "animate.css": {
- "main": "animate.css"
- },
- "Sortable":{
- "main": [
- "Sortable.js",
- "jquery.binding.js"
- ]
- },
- "quill": {
- "main": [
- "dist/quill.js",
- "dist/quill.base.css",
- "dist/quill.snow.css"
- ]
- }
- }
-}
diff --git a/build/config.js b/build/config.js
deleted file mode 100644
index da96398e..00000000
--- a/build/config.js
+++ /dev/null
@@ -1,10 +0,0 @@
-var path = require('path');
-
-module.exports = {
- rootDir: "../", // Root dir
- srcDir: path.resolve("../src"), // Source files
- destDir: path.resolve("../dist"), // Build destination
- bowerDir: "../bower_components", // Bower dir
- npmDir: "../node_modules", // Npm dir
- port: 4000
-};
\ No newline at end of file
diff --git a/build/gulpfile.js b/build/gulpfile.js
index a3aedc61..066ce288 100644
--- a/build/gulpfile.js
+++ b/build/gulpfile.js
@@ -1,93 +1,88 @@
-var glob = require('glob');
-var path = require('path');
-var gulp = require('gulp');
+var gulp = require('gulp');
var plugins = require('gulp-load-plugins')();
-var utils = require('./utils/utils');
-
/********************************************
* Configs And Paths
*********************************************/
-var config = require('./config');
-
-var paths = {
- app: require('./paths/app'),
- vendor: require('./paths/vendor')
-};
-
+var config = require('../config/');
+var paths = config.paths;
/********************************************
* Load Build Tasks
*********************************************/
-var buildTasks = utils.loadTasks(gulp, plugins, paths);
+// Dynamic Tasks with Gulp 4
+// https://cobwwweb.com/dynamic-tasks-gulp-4
+// With Gulp 4, it's not so simple.
-gulp.task('build', buildTasks);
+//var buildTasks = utils.loadTasks(gulp, plugins, paths);
+//gulp.task('build', buildTasks);
+
+const app_assets = require('./tasks/app-assets').task(gulp, plugins, paths);
+const app_pages = require('./tasks/app-pages').task(gulp, plugins, paths);
+const app_scripts = require('./tasks/app-scripts').task(gulp, plugins, paths);
+const app_styles = require('./tasks/app-styles').task(gulp, plugins, paths);
+const app_themes = require('./tasks/app-themes').task(gulp, plugins, paths);
+
+const vendor_assets = require('./tasks/vendor-assets').task(gulp, plugins, paths);
+const vendor_scripts = require('./tasks/vendor-scripts').task(gulp, plugins, paths);
+const vendor_styles = require('./tasks/vendor-styles').task(gulp, plugins, paths);
+
+const clean = (done) => {
+ // Error: Cannot delete files/directories outside the current
+ // working directory. Can be overridden with the `force` option.
+ return require('del')([config.destDir], { force: true });
+};
+
+const build = gulp.parallel(
+ gulp.parallel(app_assets, app_scripts, app_pages, gulp.series(app_styles, app_themes)),
+ gulp.parallel(vendor_assets, vendor_scripts, vendor_styles)
+);
/*********************************************
* Other Tasks
**********************************************/
// Local server pointing on build folder
-gulp.task('connect', function() {
- plugins.connect.server({
+const connect = () => {
+ return plugins.connect.server({
root: config.destDir,
port: config.port || 3333,
livereload: true
});
-});
-
+};
-// Rerun the task when a file changes
-gulp.task('watch', function() {
+const watch = (done) => {
// When template changes recompile .html pages
- plugins.watch(paths.app.templates.src, function() {
- gulp.start('app-pages');
- });
-
+ gulp.watch(paths.app.templates, app_pages);
// When context file changes recompile .html pages
- plugins.watch(config.srcDir + "/**/.context.js", function() {
- gulp.start('app-pages');
- });
-
+ gulp.watch(config.srcDir + "/**/.context.js", app_pages);
// When script changes recompile scripts
- plugins.watch(paths.app.scripts.src, function() {
- gulp.start('app-scripts');
- });
-
+ gulp.watch(paths.app.scripts, app_scripts);
// When style changes recompile styles
- plugins.watch(paths.app.styles.src, function() {
- gulp.start('app-styles');
- });
-
+ gulp.watch(paths.app.styles, app_styles);
// When theme changes recompile themes
- plugins.watch(paths.app.themes.src, function() {
- gulp.start('app-themes');
- });
-});
+ gulp.watch(paths.app.themes, app_themes);
+
+ done();
+};
// Builds and deploys to github pages
-gulp.task('deploy', ['build'], function() {
- return gulp.src('../dist/**/*')
+const deploy = () => gulp.series(build, () =>
+ gulp.src('../dist/**/*')
.pipe(plugins.ghPages({
cacheDir: '../.deploy'
- }));
-});
-
+ }))
+);
+module.exports.deploy = deploy;
/********************************************
* Main Tasks
*********************************************/
-
-// // Run this task for development
-gulp.task('develop', [
- 'build',
- 'watch',
- 'connect'
-]);
-
-gulp.task('default', ['develop']);
\ No newline at end of file
+// Run this task for development
+module.exports.build = build;
+module.exports.default = gulp.series(clean, build, gulp.parallel(watch, connect));
diff --git a/build/paths/app.js b/build/paths/app.js
deleted file mode 100644
index 20f6d299..00000000
--- a/build/paths/app.js
+++ /dev/null
@@ -1,126 +0,0 @@
-var path = require('path');
-
-var config = require('../config');
-
-var rootDir = config.rootDir;
-var srcDir = config.srcDir;
-var destDir = config.destDir;
-
-/***********************************************
-* Application script files
-************************************************/
-
- /*
- Specifiing the source this way means:
-
- "take all .js files except /_main/main.js file
- and then take /_main/main.js file"
-
- This ensures that main.js file is loaded in the end.
- Ignore context.js files.
- */
-
- exports.scripts = {
- src: [
- srcDir + "/config.js",
- srcDir + "/**/!(_context|config|main|*-helper)*.js",
- srcDir + "/main.js",
- "!" + srcDir + "/_vendor/**"
- ],
- dest: destDir + "/js"
- };
-
-/***********************************************
-* Application style files
-************************************************/
-
- exports.styles = {
- src: [
- srcDir + "/_main.scss",
- srcDir + "/**/!(_main|_variables|*-theme)*.scss",
- ],
- dest: destDir + "/css/"
- };
-
-/***********************************************
-* Application theme files
-************************************************/
-
- exports.themes = {
- src: srcDir + "/**/*-theme.scss",
- dest: destDir + "/css/"
- };
-
-
-/***********************************************
-* Application page files
-************************************************/
-
- /*
- Each page file represents a page which will be rendered into .html page.
- Pages can extend layouts.
-
- */
-
- exports.pages = {
- src: srcDir + "/**/*-page.hbs",
- dest: destDir + "/"
- };
-
-
-/***********************************************
-* Application template files
-************************************************/
-
- /*
- All template files in application.
- Those should registered as handlebars partials
- in order to use feature like includes or layouts
- */
-
- exports.templates = {
- src: srcDir + "/**/*.hbs",
- dest: destDir + "/templates"
- };
-
-/***********************************************
-* Application handlebars helpers files
-************************************************/
-
- /*
- Handlebars helpers files
- Read more: http://handlebarsjs.com/block_helpers.html
- */
-
- exports.helpers = {
- src: [
- srcDir + "/**/*-helper.js",
- rootDir + '/node_modules/handlebars-layouts/index.js',
- ],
- dest: destDir + "/templates"
- };
-
-
-/***********************************************
-* Application layout files
-************************************************/
-
- /*
- Layouts are used for "wrapping" the content of individual pages with common elements,
- such as the and footer sections, which usually contain necessities
- such as and
+
+
+ {{{body}}}
+
+
+
+
+
+
+
+
+ {{!-- Google Analytics code if GOOGLE_ANALYTICS_ID id available --}}
+ {{#if GOOGLE_ANALYTICS_ID}}
+
+ {{/if}}
+
+
+
+