diff --git a/tooling/generators/page-login/index.js b/tooling/generators/page-login/index.js
new file mode 100644
index 0000000000..8d361acd1d
--- /dev/null
+++ b/tooling/generators/page-login/index.js
@@ -0,0 +1,26 @@
+var fs = require('fs'),
+ Generator = module.exports,
+ Generate = require('../../generate'),
+ path = require('path'),
+ Q = require('q');
+/*
+ @options
+ name: Page name
+ appDirectory: App directory of where to save file
+*/
+Generator.run = function run(options) {
+ options.rootDirectory = options.rootDirectory || path.join('www', 'app');
+ var savePath = path.join(options.appDirectory, options.rootDirectory, options.fileAndClassName);
+
+ var templates = Generate.loadGeneratorTemplates(__dirname);
+
+ templates.forEach(function(template) {
+ var templatePath = path.join(__dirname, template.file);
+ options.templatePath = templatePath;
+ var renderedTemplate = Generate.renderTemplateFromFile(options);
+ var saveFilePath = path.join(savePath, [options.fileAndClassName, template.type].join(''));
+ // console.log('renderedTemplate', renderedTemplate, 'saving to', saveFilePath);
+ console.log('√ Create'.blue, path.relative(options.appDirectory, saveFilePath));
+ fs.writeFileSync(saveFilePath, renderedTemplate);
+ });
+};
diff --git a/tooling/generators/page-login/page-login.tmpl.html b/tooling/generators/page-login/page-login.tmpl.html
new file mode 100644
index 0000000000..1b65d2ed27
--- /dev/null
+++ b/tooling/generators/page-login/page-login.tmpl.html
@@ -0,0 +1,22 @@
+
+
+
+ <%= javascriptClassName %>
+
+
+
+
+
+
+
diff --git a/tooling/generators/page-login/page-login.tmpl.js b/tooling/generators/page-login/page-login.tmpl.js
new file mode 100644
index 0000000000..8c9f900e95
--- /dev/null
+++ b/tooling/generators/page-login/page-login.tmpl.js
@@ -0,0 +1,32 @@
+import {FormBuilder, Validators} from 'angular2/angular2';
+import {Log} from 'ionic/util'
+import {Page, NavController} from 'ionic/ionic'
+
+@Page({
+ templateUrl: 'app/<%= fileAndClassName %>/<%= fileAndClassName %>.html'
+})
+class <%= javascriptClassName %> {
+ constructor(nav: NavController ) {
+
+ this.nav = nav
+ Log.log('LOGIN PAGE', this)
+
+ var fb = new FormBuilder()
+
+ this.loginForm = fb.group({
+ email: ['', Validators.required],
+ password: ['', Validators.required],
+ });
+
+ }
+
+ doLogin(event) {
+ Log.log('Doing login')
+ event.preventDefault();
+ console.log(this.loginForm.value);
+ }
+
+ doSignup(event) {
+ this.nav.push(SignupPage)
+ }
+}
diff --git a/tooling/generators/page-signup/index.js b/tooling/generators/page-signup/index.js
new file mode 100644
index 0000000000..70cddd3626
--- /dev/null
+++ b/tooling/generators/page-signup/index.js
@@ -0,0 +1,27 @@
+var fs = require('fs'),
+ Generator = module.exports,
+ Generate = require('../../generate'),
+ path = require('path'),
+ Q = require('q');
+/*
+ @options
+ name: Page name
+ appDirectory: App directory of where to save file
+*/
+Generator.run = function run(options) {
+
+ options.rootDirectory = options.rootDirectory || path.join('www', 'app');
+ var savePath = path.join(options.appDirectory, options.rootDirectory, options.fileAndClassName);
+
+ var templates = Generate.loadGeneratorTemplates(__dirname);
+
+ templates.forEach(function(template) {
+ var templatePath = path.join(__dirname, template.file);
+ options.templatePath = templatePath;
+ var renderedTemplate = Generate.renderTemplateFromFile(options);
+ var saveFilePath = path.join(savePath, [options.fileAndClassName, template.type].join(''));
+ // console.log('renderedTemplate', renderedTemplate, 'saving to', saveFilePath);
+ console.log('√ Create'.blue, path.relative(options.appDirectory, saveFilePath));
+ fs.writeFileSync(saveFilePath, renderedTemplate);
+ });
+};
diff --git a/tooling/generators/page-signup/page-signup.tmpl.html b/tooling/generators/page-signup/page-signup.tmpl.html
new file mode 100644
index 0000000000..a6def7e870
--- /dev/null
+++ b/tooling/generators/page-signup/page-signup.tmpl.html
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/tooling/generators/page-signup/page-signup.tmpl.js b/tooling/generators/page-signup/page-signup.tmpl.js
new file mode 100644
index 0000000000..39cb3bbe86
--- /dev/null
+++ b/tooling/generators/page-signup/page-signup.tmpl.js
@@ -0,0 +1,34 @@
+import {FormBuilder, Validators} from 'angular2/angular2';
+import {Log} from 'ionic/util'
+import {Page, NavController} from 'ionic/ionic'
+
+
+@Page({
+ templateUrl: 'app/<%= fileAndClassName %>/<%= fileAndClassName %>.html'
+})
+export class <%= javascriptClassName %> {
+ constructor(nav: NavController) {
+ this.nav = nav
+
+ Log.log('SIGNUP PAGE')
+
+ var fb = new FormBuilder()
+
+ this.signupForm = fb.group({
+ name: ['', Validators.required],
+ email: ['', Validators.required],
+ password: ['', Validators.required],
+ });
+ }
+
+ doLogin(event) {
+ this.nav.pop()
+ }
+ doSignup(event) {
+ Log.log('Doing signup')
+ event.preventDefault();
+ console.log(this.signupForm.value);
+
+ this.nav.push(AppPage)
+ }
+}