This commit is contained in:
2019-06-21 17:01:34 -05:00
commit 487f0c4eeb
56 changed files with 5037 additions and 0 deletions

111
app/views/auth/dash.pug Normal file
View File

@@ -0,0 +1,111 @@
html
head
title Dashboard | Flitter
style(type="text/css").
@import url(https://fonts.googleapis.com/css?family=Roboto:300);
.login-page {
width: 360px;
padding: 8% 0 0;
margin: auto;
}
.form {
position: relative;
z-index: 1;
background: #FFFFFF;
max-width: 360px;
margin: 0 auto 100px;
padding: 45px;
text-align: center;
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
}
.form input {
font-family: "Roboto", sans-serif;
outline: 0;
background: #f2f2f2;
width: 100%;
border: 0;
margin: 0 0 15px;
padding: 15px;
box-sizing: border-box;
font-size: 14px;
color: #006a81;
}
.form button {
font-family: "Roboto", sans-serif;
text-transform: uppercase;
outline: 0;
background: #006a81;
width: 100%;
border: 0;
padding: 15px;
color: #FFFFFF;
font-size: 16px;
-webkit-transition: background 0.6s;
-moz-transition: background 0.6s;
-ms-transition: background 0.6s;
-o-transition: background 0.6s;
transition: background 0.6s;
cursor: pointer;
}
.form button:hover, .form button:active, .form button:focus {
background: #00b3da;
}
.form .message {
margin: 15px 0 0;
color: #b3b3b3;
font-size: 12px;
}
.form .message a {
color: #006a81;
text-decoration: none;
}
.container .info h1 {
margin: 0 0 15px;
padding: 0;
font-size: 36px;
font-weight: 300;
color: #1a1a1a;
}
.container .info span {
color: #4d4d4d;
font-size: 12px;
}
.container .info span a {
color: #000000;
text-decoration: none;
}
body {
background: #c7dbdf;
font-family: "Roboto", sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.flitter-logo {
height: 100px;
margin-bottom: 15px;
}
.form-title {
font-family: "Roboto", sans-serif;
font-size: 16pt;
color: #006a81;
}
body
.login-page
.form
img.flitter-logo(src="/assets/flitter.png")
p.form-title Welcome, #{ user.username }!
form.login-form(method="GET" action="/auth/logout" enctype="multipart/form-data")
button Logout

View File

@@ -0,0 +1,111 @@
html
head
title Good-bye! | Flitter
style(type="text/css").
@import url(https://fonts.googleapis.com/css?family=Roboto:300);
.login-page {
width: 360px;
padding: 8% 0 0;
margin: auto;
}
.form {
position: relative;
z-index: 1;
background: #FFFFFF;
max-width: 360px;
margin: 0 auto 100px;
padding: 45px;
text-align: center;
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
}
.form input {
font-family: "Roboto", sans-serif;
outline: 0;
background: #f2f2f2;
width: 100%;
border: 0;
margin: 0 0 15px;
padding: 15px;
box-sizing: border-box;
font-size: 14px;
color: #006a81;
}
.form button {
font-family: "Roboto", sans-serif;
text-transform: uppercase;
outline: 0;
background: #006a81;
width: 100%;
border: 0;
padding: 15px;
color: #FFFFFF;
font-size: 16px;
-webkit-transition: background 0.6s;
-moz-transition: background 0.6s;
-ms-transition: background 0.6s;
-o-transition: background 0.6s;
transition: background 0.6s;
cursor: pointer;
}
.form button:hover, .form button:active, .form button:focus {
background: #00b3da;
}
.form .message {
margin: 15px 0 0;
color: #b3b3b3;
font-size: 12px;
}
.form .message a {
color: #006a81;
text-decoration: none;
}
.container .info h1 {
margin: 0 0 15px;
padding: 0;
font-size: 36px;
font-weight: 300;
color: #1a1a1a;
}
.container .info span {
color: #4d4d4d;
font-size: 12px;
}
.container .info span a {
color: #000000;
text-decoration: none;
}
body {
background: #c7dbdf;
font-family: "Roboto", sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.flitter-logo {
height: 100px;
margin-bottom: 15px;
}
.form-title {
font-family: "Roboto", sans-serif;
font-size: 16pt;
color: #006a81;
}
body
.login-page
.form
img.flitter-logo(src="/assets/flitter.png")
p.form-title You have been signed out.
form.login-form(method="GET" action="/" enctype="multipart/form-data")
button Click to Continue

128
app/views/auth/login.pug Normal file
View File

@@ -0,0 +1,128 @@
html
head
title Sign-In | Flitter
style(type="text/css").
@import url(https://fonts.googleapis.com/css?family=Roboto:300);
.login-page {
width: 360px;
padding: 8% 0 0;
margin: auto;
}
.form {
position: relative;
z-index: 1;
background: #FFFFFF;
max-width: 360px;
margin: 0 auto 100px;
padding: 45px;
text-align: center;
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
}
.form input {
font-family: "Roboto", sans-serif;
outline: 0;
background: #f2f2f2;
width: 100%;
border: 0;
margin: 0 0 15px;
padding: 15px;
box-sizing: border-box;
font-size: 14px;
color: #006a81;
}
.form button {
font-family: "Roboto", sans-serif;
text-transform: uppercase;
outline: 0;
background: #006a81;
width: 100%;
border: 0;
padding: 15px;
color: #FFFFFF;
font-size: 16px;
-webkit-transition: background 0.6s;
-moz-transition: background 0.6s;
-ms-transition: background 0.6s;
-o-transition: background 0.6s;
transition: background 0.6s;
cursor: pointer;
}
.form button:hover, .form button:active, .form button:focus {
background: #00b3da;
}
.form .message {
margin: 15px 0 0;
color: #b3b3b3;
font-size: 12px;
}
.form .message a {
color: #006a81;
text-decoration: none;
}
.container .info h1 {
margin: 0 0 15px;
padding: 0;
font-size: 36px;
font-weight: 300;
color: #1a1a1a;
}
.container .info span {
color: #4d4d4d;
font-size: 12px;
}
.container .info span a {
color: #000000;
text-decoration: none;
}
body {
background: #c7dbdf;
font-family: "Roboto", sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.flitter-logo {
height: 100px;
margin-bottom: 15px;
}
.form-title {
font-family: "Roboto", sans-serif;
font-size: 16pt;
color: #006a81;
}
.form-error {
font-family: "Roboto", sans-serif;
font-size: 12pt;
color: darkred;
}
body
.login-page
.form
img.flitter-logo(src="/assets/flitter.png")
p.form-title Sign-in to continue.
if submission_data && submission_data.error
each error in submission_data.errors
p.form-error #{error}
form.login-form(method="POST" action="/auth/login" enctype="multipart/form-data")
if submission_data.data.username
input(type='text' name='username' placeholder='username' value=submission_data.data.username required autofocus)
else
input(type='text' name='username' placeholder='username' required autofocus)
input(type='password' name='password' placeholder='password' required)
button login
p.message
| No account?
a(href='/auth/register') Register instead

129
app/views/auth/register.pug Normal file
View File

@@ -0,0 +1,129 @@
html
head
title Register | Flitter
style(type="text/css").
@import url(https://fonts.googleapis.com/css?family=Roboto:300);
.login-page {
width: 360px;
padding: 8% 0 0;
margin: auto;
}
.form {
position: relative;
z-index: 1;
background: #FFFFFF;
max-width: 360px;
margin: 0 auto 100px;
padding: 45px;
text-align: center;
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
}
.form input {
font-family: "Roboto", sans-serif;
outline: 0;
background: #f2f2f2;
width: 100%;
border: 0;
margin: 0 0 15px;
padding: 15px;
box-sizing: border-box;
font-size: 14px;
color: #006a81;
}
.form button {
font-family: "Roboto", sans-serif;
text-transform: uppercase;
outline: 0;
background: #006a81;
width: 100%;
border: 0;
padding: 15px;
color: #FFFFFF;
font-size: 16px;
-webkit-transition: background 0.6s;
-moz-transition: background 0.6s;
-ms-transition: background 0.6s;
-o-transition: background 0.6s;
transition: background 0.6s;
cursor: pointer;
}
.form button:hover, .form button:active, .form button:focus {
background: #00b3da;
}
.form .message {
margin: 15px 0 0;
color: #b3b3b3;
font-size: 12px;
}
.form .message a {
color: #006a81;
text-decoration: none;
}
.container .info h1 {
margin: 0 0 15px;
padding: 0;
font-size: 36px;
font-weight: 300;
color: #1a1a1a;
}
.container .info span {
color: #4d4d4d;
font-size: 12px;
}
.container .info span a {
color: #000000;
text-decoration: none;
}
body {
background: #c7dbdf;
font-family: "Roboto", sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.flitter-logo {
height: 100px;
margin-bottom: 15px;
}
.form-title {
font-family: "Roboto", sans-serif;
font-size: 16pt;
color: #006a81;
}
.form-error {
font-family: "Roboto", sans-serif;
font-size: 12pt;
color: darkred;
}
body
.login-page
.form
img.flitter-logo(src="/assets/flitter.png")
p.form-title Register to continue.
if submission_data && submission_data.error
each error in submission_data.errors
p.form-error #{error}
form.login-form(method="POST" action="/auth/register" enctype="multipart/form-data")
if submission_data.data.username
input(type='text' name='username' placeholder='username' value=submission_data.data.username required autofocus)
else
input(type='text' name='username' placeholder='username' required autofocus)
input(type='password' name='password' placeholder='password' required)
input(type='password' name='password_verify' placeholder='confirm password' required)
button login
p.message
| Already registered?
a(href='/auth/login') Sign-in instead

View File

@@ -0,0 +1,111 @@
html
head
title Register | Flitter
style(type="text/css").
@import url(https://fonts.googleapis.com/css?family=Roboto:300);
.login-page {
width: 360px;
padding: 8% 0 0;
margin: auto;
}
.form {
position: relative;
z-index: 1;
background: #FFFFFF;
max-width: 360px;
margin: 0 auto 100px;
padding: 45px;
text-align: center;
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
}
.form input {
font-family: "Roboto", sans-serif;
outline: 0;
background: #f2f2f2;
width: 100%;
border: 0;
margin: 0 0 15px;
padding: 15px;
box-sizing: border-box;
font-size: 14px;
color: #006a81;
}
.form button {
font-family: "Roboto", sans-serif;
text-transform: uppercase;
outline: 0;
background: #006a81;
width: 100%;
border: 0;
padding: 15px;
color: #FFFFFF;
font-size: 16px;
-webkit-transition: background 0.6s;
-moz-transition: background 0.6s;
-ms-transition: background 0.6s;
-o-transition: background 0.6s;
transition: background 0.6s;
cursor: pointer;
}
.form button:hover, .form button:active, .form button:focus {
background: #00b3da;
}
.form .message {
margin: 15px 0 0;
color: #b3b3b3;
font-size: 12px;
}
.form .message a {
color: #006a81;
text-decoration: none;
}
.container .info h1 {
margin: 0 0 15px;
padding: 0;
font-size: 36px;
font-weight: 300;
color: #1a1a1a;
}
.container .info span {
color: #4d4d4d;
font-size: 12px;
}
.container .info span a {
color: #000000;
text-decoration: none;
}
body {
background: #c7dbdf;
font-family: "Roboto", sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.flitter-logo {
height: 100px;
margin-bottom: 15px;
}
.form-title {
font-family: "Roboto", sans-serif;
font-size: 16pt;
color: #006a81;
}
body
.login-page
.form
img.flitter-logo(src="/assets/flitter.png")
p.form-title Registration successful!
form.login-form(method="GET" action="/" enctype="multipart/form-data")
button Click to Continue

View File

@@ -0,0 +1,111 @@
html
head
title Register | Flitter
style(type="text/css").
@import url(https://fonts.googleapis.com/css?family=Roboto:300);
.login-page {
width: 360px;
padding: 8% 0 0;
margin: auto;
}
.form {
position: relative;
z-index: 1;
background: #FFFFFF;
max-width: 360px;
margin: 0 auto 100px;
padding: 45px;
text-align: center;
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
}
.form input {
font-family: "Roboto", sans-serif;
outline: 0;
background: #f2f2f2;
width: 100%;
border: 0;
margin: 0 0 15px;
padding: 15px;
box-sizing: border-box;
font-size: 14px;
color: #006a81;
}
.form button {
font-family: "Roboto", sans-serif;
text-transform: uppercase;
outline: 0;
background: #006a81;
width: 100%;
border: 0;
padding: 15px;
color: #FFFFFF;
font-size: 16px;
-webkit-transition: background 0.6s;
-moz-transition: background 0.6s;
-ms-transition: background 0.6s;
-o-transition: background 0.6s;
transition: background 0.6s;
cursor: pointer;
}
.form button:hover, .form button:active, .form button:focus {
background: #00b3da;
}
.form .message {
margin: 15px 0 0;
color: #b3b3b3;
font-size: 12px;
}
.form .message a {
color: #006a81;
text-decoration: none;
}
.container .info h1 {
margin: 0 0 15px;
padding: 0;
font-size: 36px;
font-weight: 300;
color: #1a1a1a;
}
.container .info span {
color: #4d4d4d;
font-size: 12px;
}
.container .info span a {
color: #000000;
text-decoration: none;
}
body {
background: #c7dbdf;
font-family: "Roboto", sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.flitter-logo {
height: 100px;
margin-bottom: 15px;
}
.form-title {
font-family: "Roboto", sans-serif;
font-size: 16pt;
color: #006a81;
}
body
.login-page
.form
img.flitter-logo(src="/assets/flitter.png")
p.form-title Registration successful!
form.login-form(method="GET" action="/" enctype="multipart/form-data")
button Click to Continue

View File

@@ -0,0 +1,26 @@
html
head
title DevBug Dashboard
link(rel='stylesheet' href='/assets/dash_v1.css')
body
h1 DevBug Dashboard
ul(style='list-style-type: none; display: inline; margin: 0; padding: 0; padding-right: 15px;')
li
a(href='/auth/logout') Logout
h3 My Projects
ul(style='list-style-type: none;')
li
a(href='/dash/v1/project/new') Create New Project
table
thead
tr
th(scope='col' style='min-width: 250px') Name
th(scope='col') Actions
tbody
each project in projects
tr
td #{project.name}
td
ul(style='list-style-type: none; margin: 0; padding: 0;')
li
a.action(href='/dash/v1/project/view/'+project.id) View

10
app/views/dash_v1/out.pug Normal file
View File

@@ -0,0 +1,10 @@
html
head
title #{out.brief}
body
h2 #{out.brief}
div
a(href='javascript:window.history.back()') Back
pre
code
div #{prettyd}

View File

@@ -0,0 +1,14 @@
html
head
title #{(update ? 'Update Project' : 'Create New Project')} | DevBug
body
h2 #{(update ? 'Update Project' : 'Create New Project')}
if errors
each error in errors
p(style='color: red; font-weight: bold;') #{error}
form(method='post', enctype='multipart/form-data')
label(for='project_name') Project Name:
input#project_name(type='text', name='name' required autofocus)
br
br
button(type='submit') Create Project

View File

@@ -0,0 +1,27 @@
html
head
title View: #{project.name} | Devbug
link(rel='stylesheet' href='/assets/dash_v1.css')
body
h2 View: #{project.name}
h4 API Key: #{ project.uuid }
ul(style='list-style-type: none; display: inline; margin: 0; padding: 0; padding-right: 15px;')
li
a(href='/dash/v1') Dashboard
li
a(href='/auth/logout') Logout
table
thead
tr
th(scope='col' style='min-width: 250px') Brief
th(scope='col' style='min-width: 250px') Created On
th(scope='col') Actions
tbody
each out in outs
tr
td #{out.brief}
td #{ out.created.toLocaleString({timeZone: 'America/Chicago'}) }
td
ul(style='list-style-type: none; margin: 0; padding: 0;')
li
a.action(href='/dash/v1/out/view/'+out.id) View

33
app/views/errors/404.pug Normal file
View File

@@ -0,0 +1,33 @@
html
head
title Not Found | Flitter
style(type="text/css").
@import url('https://fonts.googleapis.com/css?family=Rajdhani');
html,
body {
height: 100%;
overflow-y: hidden;
background-color: #c7dbdf;
}
.flitter-container {
height: 60%;
display: flex;
align-items: center;
justify-content: center;
}
.flitter-image {
height: 150px;
}
.flitter-name {
font-family: "Rajdhani";
font-size: 50pt;
margin-left: 35px;
color: #00323d;
}
body
.flitter-container
img.flitter-image(src="/assets/flitter.png")
p.flitter-name 404: Page Not Found

33
app/views/errors/500.pug Normal file
View File

@@ -0,0 +1,33 @@
html
head
title Server Error | Flitter
style(type="text/css").
@import url('https://fonts.googleapis.com/css?family=Rajdhani');
html,
body {
height: 100%;
overflow-y: hidden;
background-color: #c7dbdf;
}
.flitter-container {
height: 60%;
display: flex;
align-items: center;
justify-content: center;
}
.flitter-image {
height: 150px;
}
.flitter-name {
font-family: "Rajdhani";
font-size: 50pt;
margin-left: 35px;
color: #00323d;
}
body
.flitter-container
img.flitter-image(src="/assets/flitter.png")
p.flitter-name 500: Internal Server Error

View File

@@ -0,0 +1,39 @@
html
head
title Uh-Oh! | Flitter
style(type="text/css").
@import url('https://fonts.googleapis.com/css?family=Rajdhani');
@import url('https://fonts.googleapis.com/css?family=Oxygen+Mono');
html,
body {
background-color: #c7dbdf;
font-family: "Rajdhani";
padding-left: 2%;
padding-top: 2%;
}
p {
font-family: "Oxygen Mono";
font-size: 14pt;
}
body
h1 Error: #{error.message}
h3 Status: #{error.status}
h4#errmsg
p !{error.stack.replace(/\n/g, '<br>')}
script.
const errors = [
'Insert your Windows installation disc and restart your computer.',
'I am a teapot.',
'Printing not supported on this printer.',
'Keyboard not found. Press F1 to continue.',
'Bailing out. You\'re on your own. Good luck.',
'A team of highly trained monkeys is on its way.',
'Well.... something happened.',
'Beats the hell out of me, but something went wrong.',
'Yeaaaaah... if you could, like, not, that\'d be great.',
'I\'m fine. Everything is fine.',
'Blocked by Windows Parental Controls.'
]
document.getElementById('errmsg').innerHTML = errors[Math.floor(Math.random()*errors.length)]

View File

@@ -0,0 +1,111 @@
html
head
title Uh, oh! | Flitter
style(type="text/css").
@import url(https://fonts.googleapis.com/css?family=Roboto:300);
.login-page {
width: 360px;
padding: 8% 0 0;
margin: auto;
}
.form {
position: relative;
z-index: 1;
background: #FFFFFF;
max-width: 360px;
margin: 0 auto 100px;
padding: 45px;
text-align: center;
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
}
.form input {
font-family: "Roboto", sans-serif;
outline: 0;
background: #f2f2f2;
width: 100%;
border: 0;
margin: 0 0 15px;
padding: 15px;
box-sizing: border-box;
font-size: 14px;
color: #006a81;
}
.form button {
font-family: "Roboto", sans-serif;
text-transform: uppercase;
outline: 0;
background: #006a81;
width: 100%;
border: 0;
padding: 15px;
color: #FFFFFF;
font-size: 16px;
-webkit-transition: background 0.6s;
-moz-transition: background 0.6s;
-ms-transition: background 0.6s;
-o-transition: background 0.6s;
transition: background 0.6s;
cursor: pointer;
}
.form button:hover, .form button:active, .form button:focus {
background: #00b3da;
}
.form .message {
margin: 15px 0 0;
color: #b3b3b3;
font-size: 12px;
}
.form .message a {
color: #006a81;
text-decoration: none;
}
.container .info h1 {
margin: 0 0 15px;
padding: 0;
font-size: 36px;
font-weight: 300;
color: #1a1a1a;
}
.container .info span {
color: #4d4d4d;
font-size: 12px;
}
.container .info span a {
color: #000000;
text-decoration: none;
}
body {
background: #c7dbdf;
font-family: "Roboto", sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.flitter-logo {
height: 100px;
margin-bottom: 15px;
}
.form-title {
font-family: "Roboto", sans-serif;
font-size: 16pt;
color: #006a81;
}
body
.login-page
.form
img.flitter-logo(src="/assets/flitter.png")
p.form-title This area is off limits.
form.login-form(method="GET" action="/" enctype="multipart/form-data")
button Click to Continue

40
app/views/welcome.pug Normal file
View File

@@ -0,0 +1,40 @@
html
head
title Flitter
style(type="text/css").
@import url('https://fonts.googleapis.com/css?family=Rajdhani');
html,
body {
height: 100%;
overflow-y: hidden;
background-color: #c7dbdf;
}
.flitter-container {
height: 60%;
display: flex;
align-items: center;
justify-content: center;
}
.flitter-container-slim {
height: 10%;
display: flex;
align-items: center;
justify-content: center;
}
.flitter-image {
height: 150px;
}
.flitter-name {
font-family: "Rajdhani";
font-size: 50pt;
margin-left: 35px;
color: #00323d;
}
body
.flitter-container
img.flitter-image(src="/assets/flitter.png")
p.flitter-name powered by flitter