1
0
mirror of https://github.com/microsoft/TypeScript-Node-Starter.git synced 2026-02-04 05:43:02 +00:00

initial commit

This commit is contained in:
Bowden Kelly
2017-05-09 13:28:09 -07:00
parent 352392a682
commit 6625b87b19
171 changed files with 21929 additions and 246 deletions

15
views/account/forgot.pug Normal file
View File

@@ -0,0 +1,15 @@
extends ../layout
block content
.col-sm-8.col-sm-offset-2
form(method='POST')
legend Forgot Password
input(type='hidden', name='_csrf', value=_csrf)
.form-group
p Enter your email address below and we will send you password reset instructions.
label.control-label(for='email') Email
input.form-control(type='email', name='email', id='email', placeholder='Email', autofocus, required)
.form-group
button.btn.btn-primary(type='submit')
i.fa.fa-key
| Reset Password

29
views/account/login.pug Normal file
View File

@@ -0,0 +1,29 @@
extends ../layout
block content
.page-header
h3 Sign in
form.form-horizontal(method='POST')
input(type='hidden', name='_csrf', value=_csrf)
.form-group
label.col-sm-3.control-label(for='email') Email
.col-sm-7
input.form-control(type='email', name='email', id='email', placeholder='Email', autofocus, required)
.form-group
label.col-sm-3.control-label(for='password') Password
.col-sm-7
input.form-control(type='password', name='password', id='password', placeholder='Password', required)
.form-group
.col-sm-offset-3.col-sm-7
button.col-sm-3.btn.btn-primary(type='submit')
i.fa.fa-user
| Login
a.btn.btn-link(href='/forgot') Forgot your password?
.form-group
.col-sm-offset-3.col-sm-7
hr
.form-group
.col-sm-offset-3.col-sm-7
a.btn.btn-block.btn-facebook.btn-social(href='/auth/facebook')
i.fa.fa-facebook
| Sign in with Facebook

87
views/account/profile.pug Normal file
View File

@@ -0,0 +1,87 @@
extends ../layout
block content
.page-header
h3 Profile Information
form.form-horizontal(action='/account/profile', method='POST')
input(type='hidden', name='_csrf', value=_csrf)
.form-group
label.col-sm-3.control-label(for='email') Email
.col-sm-7
input.form-control(type='email', name='email', id='email', value=user.email)
.form-group
label.col-sm-3.control-label(for='name') Name
.col-sm-7
input.form-control(type='text', name='name', id='name', value=user.profile.name)
.form-group
label.col-sm-3.control-label Gender
.col-sm-6
label.radio.col-sm-3
input(type='radio', checked=user.profile.gender=='male', name='gender', value='male', data-toggle='radio')
span Male
label.radio.col-sm-3
input(type='radio', checked=user.profile.gender=='female', name='gender', value='female', data-toggle='radio')
span Female
label.radio.col-sm-3
input(type='radio', checked=user.profile.gender=='other', name='gender', value='other', data-toggle='radio')
span Other
.form-group
label.col-sm-3.control-label(for='location') Location
.col-sm-7
input.form-control(type='text', name='location', id='location', value=user.profile.location)
.form-group
label.col-sm-3.control-label(for='website') Website
.col-sm-7
input.form-control(type='text', name='website', id='website', value=user.profile.website)
.form-group
label.col-sm-3.control-label Gravatar
.col-sm-4
img(src=user.gravatar(), class='profile', width='100', height='100')
.form-group
.col-sm-offset-3.col-sm-4
button.btn.btn.btn-primary(type='submit')
i.fa.fa-pencil
| Update Profile
.page-header
h3 Change Password
form.form-horizontal(action='/account/password', method='POST')
input(type='hidden', name='_csrf', value=_csrf)
.form-group
label.col-sm-3.control-label(for='password') New Password
.col-sm-7
input.form-control(type='password', name='password', id='password')
.form-group
label.col-sm-3.control-label(for='confirmPassword') Confirm Password
.col-sm-7
input.form-control(type='password', name='confirmPassword', id='confirmPassword')
.form-group
.col-sm-offset-3.col-sm-4
button.btn.btn-primary(type='submit')
i.fa.fa-lock
| Change Password
.page-header
h3 Delete Account
form.form-horizontal(action='/account/delete', method='POST')
.form-group
p.col-sm-offset-3.col-sm-4 You can delete your account, but keep in mind this action is irreversible.
input(type='hidden', name='_csrf', value=_csrf)
.col-sm-offset-3.col-sm-4
button.btn.btn-danger(type='submit')
i.fa.fa-trash
| Delete my account
.page-header
h3 Linked Accounts
.form-horizontal
.form-group
.col-sm-offset-3.col-sm-4
if user.facebook
p: a.text-danger(href='/account/unlink/facebook') Unlink your Facebook account
else
p: a(href='/auth/facebook') Link your Facebook account

17
views/account/reset.pug Normal file
View File

@@ -0,0 +1,17 @@
extends ../layout
block content
.col-sm-8.col-sm-offset-2
form(method='POST')
legend Reset Password
input(type='hidden', name='_csrf', value=_csrf)
.form-group
label(for='password') New Password
input.form-control(type='password', name='password', id='password', placeholder='New password', autofocus, required)
.form-group
label(for='confirm') Confirm Password
input.form-control(type='password', name='confirm', id='confirm', placeholder='Confirm password', required)
.form-group
button.btn.btn-primary.btn-reset(type='submit')
i.fa.fa-keyboard-o
| Change Password

24
views/account/signup.pug Normal file
View File

@@ -0,0 +1,24 @@
extends ../layout
block content
.page-header
h3 Sign up
form.form-horizontal(id='signup-form', method='POST')
input(type='hidden', name='_csrf', value=_csrf)
.form-group
label.col-sm-3.control-label(for='email') Email
.col-sm-7
input.form-control(type='email', name='email', id='email', placeholder='Email', autofocus, required)
.form-group
label.col-sm-3.control-label(for='password') Password
.col-sm-7
input.form-control(type='password', name='password', id='password', placeholder='Password', required)
.form-group
label.col-sm-3.control-label(for='confirmPassword') Confirm Password
.col-sm-7
input.form-control(type='password', name='confirmPassword', id='confirmPassword', placeholder='Confirm Password', required)
.form-group
.col-sm-offset-3.col-sm-7
button.btn.btn-success(type='submit')
i.fa.fa-user-plus
| Signup

31
views/api/facebook.pug Normal file
View File

@@ -0,0 +1,31 @@
extends ../layout
block content
.page-header
h2
i.fa.fa-facebook-square(style='color: #335397')
| Facebook API
.btn-group.btn-group-justified
a.btn.btn-primary(href='https://developers.facebook.com/docs/graph-api/quickstart/', target='_blank')
i.fa.fa-check-square-o
| Quickstart
a.btn.btn-primary(href='https://developers.facebook.com/tools/explorer', target='_blank')
i.fa.fa-facebook
| Graph API Explorer
a.btn.btn-primary(href='https://developers.facebook.com/docs/graph-api/reference/', target='_blank')
i.fa.fa-code-fork
| API Reference
h3
i.fa.fa-user
| My Profile
img.thumbnail(src=`https://graph.facebook.com/${profile.id}/picture?type=large`, width='90', height='90')
h4= profile.name
h6 First Name: #{profile.first_name}
h6 Last Name: #{profile.last_name}
h6 Gender: #{profile.gender}
h6 Username: #{profile.username}
h6 Link: #{profile.link}
h6 Email: #{profile.email}
h6 Locale: #{profile.locale}
h6 Timezone: #{profile.timezone}

13
views/api/index.pug Normal file
View File

@@ -0,0 +1,13 @@
extends ../layout
block content
h2 API Examples
hr
.row
.col-sm-4
a(href='/api/facebook', style='color: #fff')
.panel.panel-default(style='background-color: #3b5998')
.panel-body
img(src='http://i.imgur.com/jiztYCH.png', height=40)
| Facebook

25
views/contact.pug Normal file
View File

@@ -0,0 +1,25 @@
extends layout
block content
.page-header
h3 Contact Form
form.form-horizontal(method='POST')
input(type='hidden', name='_csrf', value=_csrf)
.form-group
label(class='col-sm-2 control-label', for='name') Name
.col-sm-8
input.form-control(type='text', name='name', id='name', autofocus=true)
.form-group
label(class='col-sm-2 control-label', for='email') Email
.col-sm-8
input.form-control(type='text', name='email', id='email')
.form-group
label(class='col-sm-2 control-label', for='message') Body
.col-sm-8
textarea.form-control(name='message', id='message', rows='7')
.form-group
.col-sm-offset-2.col-sm-8
button.btn.btn-primary(type='submit')
i.fa.fa-envelope
| Send

27
views/home.pug Normal file
View File

@@ -0,0 +1,27 @@
extends layout
block content
h1 Hackathon Starter
p.lead A boilerplate for Node.js web applications.
hr
.row
.col-sm-6
h2 Heading
p Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
p
a.btn.btn-default(href='#', role='button') View details »
.col-sm-6
h2 Heading
p Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
p
a.btn.btn-default(href='#', role='button') View details »
.col-sm-6
h2 Heading
p Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
p
a.btn.btn-default(href='#', role='button') View details »
.col-sm-6
h2 Heading
p Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui.
p
a.btn.btn-default(href='#', role='button') View details »

33
views/layout.pug Normal file
View File

@@ -0,0 +1,33 @@
doctype html
html
head
meta(charset='utf-8')
meta(http-equiv='X-UA-Compatible', content='IE=edge')
meta(name='viewport', content='width=device-width, initial-scale=1.0')
meta(name='theme-color' content='#4DA5F4')
meta(name='csrf-token', content=_csrf)
title #{title} - Hackathon Starter
link(rel='shortcut icon', href='/images/favicon.png')
link(rel='stylesheet', href='/css/main.css')
body
include partials/header
.container
include partials/flash
block content
include partials/footer
script(src='/js/lib/jquery-3.1.1.min.js')
script(src='/js/lib/bootstrap.min.js')
script(src='/js/main.js')
// Google Analytics: change UA-XXXXX-X to be your site's ID
script.
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXX-X', 'auto');
ga('send', 'pageview');

18
views/partials/flash.pug Normal file
View File

@@ -0,0 +1,18 @@
if messages.errors
.alert.alert-danger.fade.in
button.close(type='button', data-dismiss='alert')
i.fa.fa-times-circle-o
for error in messages.errors
div= error.msg
if messages.info
.alert.alert-info.fade.in
button.close(type='button', data-dismiss='alert')
i.fa.fa-times-circle-o
for info in messages.info
div= info.msg
if messages.success
.alert.alert-success.fade.in
button.close(type='button', data-dismiss='alert')
i.fa.fa-times-circle-o
for success in messages.success
div= success.msg

View File

@@ -0,0 +1,5 @@
footer
.container.text-center
p.pull-left © 2016 Company, Inc. All Rights Reserved
iframe.pull-right(src="https://ghbtns.com/github-btn.html?user=bowdenk7&repo=express-typescript-starter&type=star&count=true" frameborder="0" scrolling="0" width="90px" height="20px" style="margin-top:15px")

40
views/partials/header.pug Normal file
View File

@@ -0,0 +1,40 @@
.navbar.navbar-default.navbar-fixed-top
.container
.navbar-header
button.navbar-toggle(type='button', data-toggle='collapse', data-target='.navbar-collapse')
span.sr-only Toggle navigation
span.icon-bar
span.icon-bar
span.icon-bar
a.navbar-brand(href='/')
i.fa.fa-cube
| Project name
.collapse.navbar-collapse
ul.nav.navbar-nav
li(class=(title == 'Home') ? 'active' : undefined)
a(href='/') Home
li(class=(title == 'API Examples') ? 'active' : undefined)
a(href='/api') API Examples
li(class=(title == 'Contact') ? 'active' : undefined)
a(href='/contact') Contact
ul.nav.navbar-nav.navbar-right
if !user
li(class=(title == 'Login') ? 'active' : undefined)
a(href='/login') Login
li(class=(title == 'Create Account') ? 'active' : undefined)
a(href='/signup') Create Account
else
li.dropdown(class=(title == 'Account Management') ? 'active' : undefined)
a.dropdown-toggle(href='#', data-toggle='dropdown')
if user.profile.picture
img(src=user.profile.picture)
else
img(src=user.gravatar(60))
span= user.profile.name || user.email || user.id
i.caret
ul.dropdown-menu
li
a(href='/account') My Account
li.divider
li
a(href='/logout') Logout