Documentation
An overview of the admin template
An overview of the admin template

Thank you for purchasing. Feel free to contact me if you have any questions.
Also, email me if you have any feature requests or advices, I'll be glad to know.
Rate it if you like it, it helps for more updates, thank you so much!
Material is a fully responsive admin web app template built with Bootstrap & AngularJS. It uses Sass CSS which makes it easy to customize.
Within the download you'll find the following file structure and contents
Once downloaded, unzip the compressed folder and you'll see something like this:
Material/ ├── Material/ ───> Contains the develop version of Material Admin Template. │ ├── client/ └──> All front end files are in this folder. │ │ ├── app/ └──> All the custom JS scripts and HTML markup │ │ ├── fonts/ └──> Contains icon fonts. │ │ ├── i18n/ └──> Data files for i18n (Internationalization) │ │ ├── images/ │ │ ├── styles/ └──> All the custom stylesheets (Scss files) │ │ ├── favicon.ico │ │ └── index.html │ ├── .bowerrc │ ├── .editorconfig │ ├── .gitattributes │ ├── .jshintrc │ ├── .travis.yml │ ├── bower.json │ ├── CHANGELOG.md ───> The change log │ ├── gulp.config.js │ ├── gulpfile.js │ └── package.json ├── dist/ ───> The distribution (production) version of Material Admin ├── documentation/ ───> Where the help documentation is. └── landing/ ───> The landing page template
Introduction to some important files:
Bower is a front-end package manager for the web by Twitter.
Material use Bower to manage all the front end dependencies, make things clean, tidy and simple. However if you are not familiar with command line tool, it may be a bit scary for you, but don't worry, it's simple.
If you haven't try Bower before, then give it a shot, it makes life easier, you'll fall in love with it.
Inside the bower.json file of Bower, you'll see the list dependencies (package name and version):
If you want to know more about the packages, you can click here. Search the package and click the link to know more.
"dependencies": {
"jquery": "~2.1.4",
"angular": "~1.4.0",
"angular-route": "~1.4.0",
"angular-animate": "~1.4.0",
"angular-aria": "~1.4.0",
"angular-messages": "~1.4.0",
"angular-material": "~1.0.0-rc2",
"angular-ui-router": "~0.2.14",
"angular-bootstrap": "~0.14.0",
"angular-translate": "~2.8.0",
"angular-translate-loader-static-files": "~2.8.0",
"material-design-iconic-font": "~2.1.0",
"font-awesome": "~4.4.0",
"textAngular": "~1.4.0",
"toastr": "~2.1.0",
"jquery.easy-pie-chart": "~2.1.6",
"jquery.slimscroll": "~1.3.3",
"jquery-steps": "~1.1.0",
"angular-ui-tree": "~2.10.0",
"ngmap": "~1.13.0",
"flot": "~0.8.3",
"flot.tooltip": "~0.8.5",
"jvectormap": "~2.0.0",
"flot.curvedlines": "~0.6.4",
"angular-scroll": "~0.7.0",
"Chart.js": "~1.0.1",
"angular-chart.js": "~0.8.0",
"angular-validation-match": "~1.6.0"
}Gulp is a JavaScript task runner (Automation), save yourself from repetitive tasks.
It's probably a bit complex to you if it's your first time using Gulp. However, you'll fail in love with it once you get up and running, it saves you from repetitive tasks. Project like jQuery, Bootstrap and many more use and love task automation tools.
By the way, be sure to check out this Getting Started guide, it will help you get up and running.
Inside package.json file, you'll see all the Gulp plugins that help to automate the tasks.
And all the plugins are configured in gulpfile.js file.
If you want to know more about the plugins, you can click here.
"devDependencies": {
"browser-sync": "~2.9.0",
"del": "~2.0.0",
"gulp": "~3.9.0",
"gulp-angular-filesort": "~1.1.1",
"gulp-angular-templatecache": "~1.8.0",
"gulp-autoprefixer": "~3.1.0",
"gulp-csso": "~1.0.0",
"gulp-filter": "~3.0.0",
"gulp-if": "~2.0.0",
"gulp-imagemin": "~2.4.0",
"gulp-inject": "~3.0.0",
"gulp-jade": "~1.1.0",
"gulp-jscs": "~3.0.0",
"gulp-jshint": "~1.12.0",
"gulp-less": "~3.0.3",
"gulp-load-plugins": "~1.0.0",
"gulp-ng-annotate": "~1.1.0",
"gulp-open": "~1.0.0",
"gulp-plumber": "~1.0.0",
"gulp-print": "~2.0.0",
"gulp-rev": "~6.0.0",
"gulp-rev-replace": "~0.4.0",
"gulp-ruby-sass": "~2.0.0",
"gulp-sass": "~2.1.0",
"gulp-sourcemaps": "~1.6.0",
"gulp-task-listing": "~1.0.0",
"gulp-uglify": "~1.4.0",
"gulp-useref": "~1.3.0",
"gulp-util": "~3.0.4",
"jshint-stylish": "~2.0.0",
"wiredep": "~2.2.0",
"yargs": "~3.29.0"
}You'll need to put the files on a server to run it.
So you can upload the "dist" folder to your server to run it. Or you can build a server locally.
Then how to build a server locally?
You can build a locally server using WAMP or MAMP (if you uses PHP). Also it's pretty easy to build one with Python or Ruby (if you prefer Python or Ruby). And here we'll build a local server with NodeJS
Preparation:
You'll need to install Node.js (NPM comes along with it) and node-static (an NPM package)
Steps:
It's easy if you are familiar with Node. Download Node.js here then install it, and install node-static with one command line
$ npm install -g node-static
The usage of node-static is simple. Just enter the "dist" directory with command line
$ cd dist/
and type:
$ static
It'll return something like this:
serving "." at http://127.0.0.1:8080
Then you can view the template on http://127.0.0.1:8080 with your browser
In order to do development with it, first you'll need have the following tools installed:
And you'll need to know how some basis about them, click the links to learn more if you not familiar with these yet. If it's your first time using these tools, it's probably too complex or even overwhelming for you. You'd better find someone to help you.
By the way, just a tip here, after you installed NodeJS (NPM comes along with it), you can use one command line to install Yeoman, Bower and Gulp instead of installing them one by one
$ npm install -g yo bower gulp
If you already know how to use them, then just do a few things to start developing:
1. Enter "Material" folder with your command line tool.
2. Install all the NPM packages (for development) with NPM:
$ npm install
3. Install all the front end packages with Twitter Bower:
$ bower install
4. Then type gulp serve and you are ready to go.
$ gulp serve
By the way, if you want to build a distribution (production) version, simply run
$ gulp serve-dist
All the files for development are under ./Material/client/ folder.
The basic structure of template (index.html) is quiet simple. It contains 3 parts: The header, which load all the stylesheets. The body, which contains the content of App. The footer, which load all the scripts.
The Header
<!doctype html>
<!--[if lt IE 8]> <html class="no-js lt-ie8"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
<title>Web Application</title>
<meta name="description" content="Responsive Admin Web App with Bootstrap and AngularJS">
<meta name="keywords" content="angularjs admin, admin templates, admin themes, bootstrap admin">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<!-- Needs images, font... therefore can not be part of main.css -->
<link href='http://fonts.googleapis.com/css?family=Roboto:400,100,500,300,300italic,500italic|Roboto+Condensed:400,300' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="bower_components/weather-icons/css/weather-icons.min.css">
<!-- end Needs images -->
<!-- build:css({.tmp,client}) styles/main.css -->
<link rel="stylesheet" href="styles/bootstrap.css">
<link rel="stylesheet" href="styles/ui.css">
<link rel="stylesheet" href="styles/main.css">
<!-- endbuild -->
</head>The Body
<body data-ng-app="app"
id="app"
class="app"
data-custom-page
data-off-canvas-nav
data-ng-controller="AppCtrl"
data-ng-class=" { 'layout-boxed': admin.layout === 'boxed',
'nav-collapsed-min': admin.menu === 'collapsed'
} ">
<!--[if lt IE 9]>
<div class="lt-ie9-bg">
<p class="browsehappy">You are using an <strong>outdated</strong> browser.</p>
<p>Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
</div>
<![endif]-->
<header data-ng-include=" 'views/header.html' "
id="header"
class="header-container "
data-ng-class="{ 'header-fixed': admin.fixedHeader,
'bg-white': ['11','12','13','14','15','16','21'].indexOf(admin.skin) >= 0,
'bg-dark': admin.skin === '31',
'bg-primary': ['22','32'].indexOf(admin.skin) >= 0,
'bg-success': ['23','33'].indexOf(admin.skin) >= 0,
'bg-info-alt': ['24','34'].indexOf(admin.skin) >= 0,
'bg-warning': ['25','35'].indexOf(admin.skin) >= 0,
'bg-danger': ['26','36'].indexOf(admin.skin) >= 0
}"></header>
<div class="main-container"
data-ng-class="{ 'app-nav-horizontal': admin.menu === 'horizontal' }">
<aside data-ng-include=" 'views/sidebar.html' "
id="nav-container"
class="nav-container"
data-ng-class="{ 'nav-fixed': admin.fixedSidebar,
'nav-horizontal': admin.menu === 'horizontal',
'nav-vertical': admin.menu === 'vertical',
'bg-white': ['31','32','33','34','35','36'].indexOf(admin.skin) >= 0,
'bg-dark': ['31','32','33','34','35','36'].indexOf(admin.skin) < 0
}">
</aside>
<div id="content" class="content-container">
<section data-ui-view
class="view-container {{admin.pageTransition.class}}"></section>
</div>
</div>The Footer
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<!-- build:js scripts/vendor.js -->
<script src="bower_components/jquery/dist/jquery.min.js"></script>
<script src="bower_components/angular/angular.min.js"></script>
<script src="bower_components/angular-animate/angular-animate.min.js"></script>
<script src="bower_components/angular-ui-router/release/angular-ui-router.min.js"></script>
<!-- endbuild -->
<!-- build:js scripts/ui.js -->
<script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js"></script>
<script src="bower_components/jquery-steps/build/jquery.steps.min.js"></script>
<script src="bower_components/toastr/toastr.min.js"></script>
<script src="bower_components/bootstrap-file-input/bootstrap.file-input.js"></script>
<script src="bower_components/jquery.slimscroll/jquery.slimscroll.min.js"></script>
<script src="scripts/vendors/jquery.sparkline.min.js"></script>
<script src="bower_components/flot/jquery.flot.js"></script>
<script src="bower_components/flot/jquery.flot.resize.js"></script>
<script src="bower_components/flot/jquery.flot.pie.js"></script>
<script src="scripts/vendors/jquery.flot.orderBars.js"></script>
<script src="bower_components/flot/jquery.flot.stack.js"></script>
<script src="bower_components/flot.curvedlines/curvedLines.js"></script>
<script src="bower_components/flot.tooltip/js/jquery.flot.tooltip.min.js"></script>
<script src="bower_components/flot/jquery.flot.time.js"></script>
<script src="bower_components/jquery.easy-pie-chart/dist/angular.easypiechart.min.js"></script>
<script src="bower_components/angular-ui-tree/dist/angular-ui-tree.min.js"></script>
<script src="bower_components/ngmap/build/scripts/ng-map.min.js"></script>
<script src="bower_components/ng-tags-input/ng-tags-input.min.js"></script>
<script src="scripts/vendors/jquery-jvectormap-1.2.2.min.js"></script>
<script src="scripts/vendors/jquery-jvectormap-world-mill-en.js"></script>
<script src="bower_components/angular-loading-bar/build/loading-bar.min.js"></script>
<script src="bower_components/angular-scroll/angular-scroll.min.js"></script>
<script src="bower_components/textAngular/dist/textAngular-rangy.min.js"></script>
<script src="bower_components/textAngular/dist/textAngular.min.js"></script>
<script src="bower_components/textAngular/dist/textAngular-sanitize.min.js"></script>
<script src="bower_components/angular-translate/angular-translate.min.js"></script>
<script src="bower_components/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js"></script>
<script src="bower_components/Chart.js/Chart.min.js"></script>
<script src="bower_components/angular-chart.js/dist/angular-chart.min.js"></script>
<!-- endbuild -->
<!-- build:js scripts/app.js -->
<script src="scripts/app.module.js"></script>
<script src="scripts/core/config.route.js"></script>
<script src="scripts/core/app.controller.js"></script>
<script src="scripts/core/i18n.js"></script>
<script src="scripts/chart/chart.module.js"></script>
<script src="scripts/chart/chart.controller.js"></script>
<script src="scripts/chart/chart.directive.js"></script>
<script src="scripts/form/form.module.js"></script>
<script src="scripts/form/form.controller.js"></script>
<script src="scripts/form/form.directive.js"></script>
<script src="scripts/form/formValidation.module.js"></script>
<script src="scripts/form/formValidation.controller.js"></script>
<script src="scripts/form/formValidation.directive.js"></script>
<script src="scripts/layout/nav.module.js"></script>
<script src="scripts/layout/nav.directive.js"></script>
<script src="scripts/page/page.module.js"></script>
<script src="scripts/page/page.controller.js"></script>
<script src="scripts/page/page.directive.js"></script>
<script src="scripts/table/table.module.js"></script>
<script src="scripts/table/table.controller.js"></script>
<script src="scripts/ui/ui.module.js"></script>
<script src="scripts/ui/ui.controller.js"></script>
<script src="scripts/ui/ui.directive.js"></script>
<script src="scripts/ui/ui.service.js"></script>
<script src="scripts/ui/map.module.js"></script>
<script src="scripts/ui/map.controller.js"></script>
<script src="scripts/ui/map.directive.js"></script>
<!-- endbuild -->
</body>
</html>You can simply update a few variables to change the default settings.
Open "./client/app/core/app.config.js" file, you'll find following code. You can change the value to update default settings.
$scope.main = {
brand: 'Material',
name: 'Lisa',
year: year,
layout: 'wide', // 'boxed', 'wide'
menu: 'vertical', // 'horizontal', 'vertical', 'collapsed'
fixedHeader: true, // true, false
fixedSidebar: true, // true, false
pageTransition: pageTransitionOpts[0], // 0, 1, 2, 3... and build your own
skin: '12' // 11,12,13,14,15,16; 21,22,23,24,25,26; 31,32,33,34,35,36
}; For example you want to set "boxed" layout as default, then you can update code like so:
$scope.admin = {
brand: 'Material',
name: 'Lisa',
year: year,
layout: 'boxed', // 'boxed', 'wide'
menu: 'vertical', // 'horizontal', 'vertical', 'collapsed'
fixedHeader: true, // true, false
fixedSidebar: true, // true, false
pageTransition: pageTransitionOpts[0], // 0, 1, 2, 3... and build your own
skin: '12' // 11,12,13,14,15,16; 21,22,23,24,25,26; 31,32,33,34,35,36
}; Done and enjoy :)