Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3abd5818dd | ||
|
|
736089533b | ||
|
|
7ee7150a90 | ||
|
|
34baa913ad | ||
|
|
ea9208a2a4 | ||
|
|
8a6ebc9f63 | ||
|
|
578a00de15 | ||
|
|
37d87e1a09 | ||
|
|
97d89e4ed0 | ||
|
|
d33d0a2177 | ||
|
|
82690199bb | ||
|
|
d5ae2eee06 | ||
|
|
269c694555 | ||
|
|
ba7a7ca2b5 | ||
|
|
9023e1ed6a |
3
.bowerrc
3
.bowerrc
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"directory": "components",
|
||||
"json": "bower.json"
|
||||
"json": "bower.json",
|
||||
"allow_root": true
|
||||
}
|
||||
|
||||
5
.dockerignore
Normal file
5
.dockerignore
Normal file
@@ -0,0 +1,5 @@
|
||||
node_modules
|
||||
public
|
||||
db.json
|
||||
components
|
||||
js/bowr.js
|
||||
13
Dockerfile
Normal file
13
Dockerfile
Normal file
@@ -0,0 +1,13 @@
|
||||
FROM node:8 as build
|
||||
WORKDIR /build
|
||||
COPY package.json ./
|
||||
RUN npm install
|
||||
COPY .bowerrc bower.json ./
|
||||
RUN npm run bower install
|
||||
COPY . .
|
||||
RUN npm run pub
|
||||
|
||||
FROM nginx:mainline as runtime
|
||||
COPY --from=build /build /usr/share/nginx/html
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
||||
COPY default.conf /etc/nginx/conf.d/default.conf
|
||||
1
css/.gitignore
vendored
Normal file
1
css/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
bundle.css
|
||||
File diff suppressed because one or more lines are too long
545
css/styles.css
Normal file
545
css/styles.css
Normal file
@@ -0,0 +1,545 @@
|
||||
/*
|
||||
* Template Name: Developer - Responsive Website Template for Developers
|
||||
* Version: 1.5
|
||||
* Author: Xiaoying Riley
|
||||
* Twitter: @3rdwave_themes
|
||||
* License: Creative Commons Attribution 3.0 License
|
||||
* Website: http://themes.3rdwavemedia.com/
|
||||
*/
|
||||
/* ======= Base ======= */
|
||||
body {
|
||||
font-family: 'Lato', arial, sans-serif;
|
||||
color: #434343;
|
||||
background: #DAE3E7;
|
||||
font-size: 16px;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: 'Montserrat', sans-serif;
|
||||
font-weight: 700;
|
||||
color: #778492;
|
||||
}
|
||||
a {
|
||||
color: #3AAA64;
|
||||
-webkit-transition: all 0.4s ease-in-out;
|
||||
-moz-transition: all 0.4s ease-in-out;
|
||||
-ms-transition: all 0.4s ease-in-out;
|
||||
-o-transition: all 0.4s ease-in-out;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
color: #5f6b77;
|
||||
color: #2d844e;
|
||||
}
|
||||
a:focus {
|
||||
text-decoration: none;
|
||||
}
|
||||
.btn,
|
||||
a.btn {
|
||||
-webkit-transition: all 0.4s ease-in-out;
|
||||
-moz-transition: all 0.4s ease-in-out;
|
||||
-ms-transition: all 0.4s ease-in-out;
|
||||
-o-transition: all 0.4s ease-in-out;
|
||||
font-family: 'Montserrat', arial, sans-serif;
|
||||
padding: 8px 16px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.btn .fa,
|
||||
a.btn .fa {
|
||||
margin-right: 5px;
|
||||
}
|
||||
.btn:focus,
|
||||
a.btn:focus {
|
||||
color: #fff;
|
||||
}
|
||||
a.btn-cta-primary,
|
||||
.btn-cta-primary {
|
||||
background: #54ba4e;
|
||||
border: 1px solid #54ba4e;
|
||||
color: #fff;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
a.btn-cta-primary:hover,
|
||||
.btn-cta-primary:hover {
|
||||
background: #49ac43;
|
||||
border: 1px solid #49ac43;
|
||||
color: #fff;
|
||||
}
|
||||
a.btn-cta-secondary,
|
||||
.btn-cta-secondary {
|
||||
background: #479FC8;
|
||||
border: 1px solid #479FC8;
|
||||
color: #fff;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
a.btn-cta-secondary:hover,
|
||||
.btn-cta-secondary:hover {
|
||||
background: #3893bd;
|
||||
border: 1px solid #3893bd;
|
||||
color: #fff;
|
||||
}
|
||||
.text-highlight {
|
||||
color: #32383e;
|
||||
}
|
||||
.label-theme {
|
||||
background: #3AAA64;
|
||||
font-size: 12px;
|
||||
}
|
||||
a.dotted-link {
|
||||
border-bottom: 1px dotted #778492;
|
||||
color: #778492;
|
||||
}
|
||||
a.dotted-link:hover {
|
||||
text-decoration: none;
|
||||
color: #49515a;
|
||||
}
|
||||
/*
|
||||
iframe {
|
||||
|
||||
.header {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.iframe-wrapper {
|
||||
overflow: auto;
|
||||
-webkit-overflow-scrolling:touch;
|
||||
}
|
||||
*/
|
||||
/* ======= Header ======= */
|
||||
.header {
|
||||
padding: 30px 0;
|
||||
background: #f5f5f5;
|
||||
border-top: 10px solid #778492;
|
||||
}
|
||||
.header .btn {
|
||||
margin-top: 60px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.header .profile-image {
|
||||
margin-right: 30px;
|
||||
}
|
||||
.header .profile-content .name {
|
||||
color: #49515a;
|
||||
font-size: 38px;
|
||||
margin-bottom: 5px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
.header .profile-content .desc {
|
||||
color: #778492;
|
||||
font-family: "Lato", arial, sans-serif;
|
||||
font-weight: 400;
|
||||
font-size: 24px;
|
||||
margin-top: 0;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.header .profile-content .social a {
|
||||
background: #b0b7bf;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
display: inline-block;
|
||||
-webkit-border-radius: 50%;
|
||||
-moz-border-radius: 50%;
|
||||
-ms-border-radius: 50%;
|
||||
-o-border-radius: 50%;
|
||||
border-radius: 50%;
|
||||
-moz-background-clip: padding;
|
||||
-webkit-background-clip: padding-box;
|
||||
background-clip: padding-box;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
.header .profile-content .social a:hover {
|
||||
background: #778492;
|
||||
}
|
||||
.header .profile-content .social a .fa {
|
||||
font-size: 20px;
|
||||
padding-top: 8px;
|
||||
}
|
||||
/* ======= Sections======= */
|
||||
.sections-wrapper {
|
||||
padding-top: 60px;
|
||||
padding-bottom: 60px;
|
||||
}
|
||||
.section {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.section .section-inner {
|
||||
background: #fff;
|
||||
padding: 30px;
|
||||
}
|
||||
.section .heading {
|
||||
margin-top: 0;
|
||||
margin-bottom: 30px;
|
||||
color: #545e69;
|
||||
font-size: 24px;
|
||||
}
|
||||
.section .content .more-link .fa {
|
||||
margin-right: 5px;
|
||||
font-size: 14px;
|
||||
}
|
||||
/* About Section */
|
||||
/* Latest Section */
|
||||
.latest .item {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.latest .item .title {
|
||||
font-size: 18px;
|
||||
margin-top: 0;
|
||||
}
|
||||
.latest .item .title .label {
|
||||
margin-left: 5px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.latest .item .title a {
|
||||
color: #778492;
|
||||
}
|
||||
.latest .item .title a:hover {
|
||||
color: #5f6b77;
|
||||
}
|
||||
.latest .item .project-image:hover {
|
||||
-webkit-opacity: 0.8;
|
||||
-moz-opacity: 0.8;
|
||||
opacity: 0.8;
|
||||
}
|
||||
.latest .divider {
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
.latest .featured {
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
.latest .featured .title {
|
||||
margin-bottom: 5px;
|
||||
font-size: 20px;
|
||||
}
|
||||
.latest .featured .summary {
|
||||
margin-bottom: 30px;
|
||||
color: #778492;
|
||||
}
|
||||
.latest .featured img {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.latest .featured .desc {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.latest .featured-image {
|
||||
position: relative;
|
||||
}
|
||||
.latest .featured-image .text {
|
||||
background: #3AAA64;
|
||||
color: #fff;
|
||||
}
|
||||
.latest .featured-image .ribbon {
|
||||
position: absolute;
|
||||
top: -4px;
|
||||
right: -4px;
|
||||
width: 110px;
|
||||
height: 110px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.latest .featured-image .ribbon .text {
|
||||
font-family: 'Montserrat', sans-serif;
|
||||
position: relative;
|
||||
left: -8px;
|
||||
top: 18px;
|
||||
width: 158px;
|
||||
padding: 10px 10px;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
color: #fff;
|
||||
background-color: #479FC8;
|
||||
-webkit-transform: rotate(45deg) translate3d(0, 0, 0);
|
||||
-moz-transform: rotate(45deg) translate3d(0, 0, 0);
|
||||
-ms-transform: rotate(45deg) translate3d(0, 0, 0);
|
||||
-o-transform: rotate(45deg) translate3d(0, 0, 0);
|
||||
}
|
||||
.latest .featured-image .ribbon .text:before,
|
||||
.latest .featured-image .ribbon .text:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: -5px;
|
||||
border-top: 5px solid #276582;
|
||||
border-left: 5px solid transparent;
|
||||
border-right: 5px solid transparent;
|
||||
}
|
||||
.latest .featured-image .ribbon .text:before {
|
||||
left: 0;
|
||||
}
|
||||
.latest .featured-image .ribbon .text:after {
|
||||
right: 0;
|
||||
}
|
||||
/* Projects Section */
|
||||
.projects .item {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.projects .item .title {
|
||||
font-size: 16px;
|
||||
margin-top: 0;
|
||||
margin-bottom: 5px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.projects .item .title a {
|
||||
color: #778492;
|
||||
}
|
||||
.projects .item .title a:hover {
|
||||
color: #5f6b77;
|
||||
}
|
||||
/* Work Section */
|
||||
.experience .item {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.experience .item .title {
|
||||
font-size: 16px;
|
||||
margin-top: 0;
|
||||
margin-bottom: 5px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.experience .item .title .place {
|
||||
color: #999;
|
||||
font-weight: normal;
|
||||
}
|
||||
.experience .item .title .place a {
|
||||
color: #999;
|
||||
}
|
||||
.experience .item .title .place a:hover {
|
||||
color: #666666;
|
||||
}
|
||||
.experience .item .title .year {
|
||||
color: #999;
|
||||
font-weight: normal;
|
||||
}
|
||||
/* Git section */
|
||||
.github-graph {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.github-graph .js-calendar-graph-svg {
|
||||
max-width: 100%;
|
||||
}
|
||||
.ghfeed {
|
||||
height: 600px;
|
||||
}
|
||||
.ghfeed,
|
||||
.ghfeed *,
|
||||
.ghfeed *:before,
|
||||
.ghfeed *:after {
|
||||
-webkit-box-sizing: content-box;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
/* Info Section */
|
||||
.info .fa {
|
||||
margin-right: 15px;
|
||||
color: #ccd1d6;
|
||||
}
|
||||
.info .fa.fa-envelope-o {
|
||||
font-size: 14px;
|
||||
}
|
||||
.info ul {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.info li {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.info li:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
/* Skills Section */
|
||||
.skills .intro {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.skills .skillset .item {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.skills .skillset .level-title {
|
||||
font-size: 16px;
|
||||
position: relative;
|
||||
margin-top: 0;
|
||||
margin-bottom: 10;
|
||||
}
|
||||
.skills .skillset .level-title .level-label {
|
||||
color: #ccd1d6;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
font-family: "Lato", arial, sans-serif;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
.skills .skillset .level-bar {
|
||||
height: 15px;
|
||||
background: #e8e8e8;
|
||||
}
|
||||
.skills .skillset .level-bar-inner {
|
||||
height: 15px;
|
||||
background: #66cb8c;
|
||||
}
|
||||
/* Testimonials section */
|
||||
.testimonials .item {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.testimonials .item:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.testimonials .item .quote {
|
||||
color: #666;
|
||||
font-size: 16px;
|
||||
border-left-color: #9fdeb7;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.testimonials .item .quote .fa {
|
||||
color: #79d19a;
|
||||
margin-right: 15px;
|
||||
}
|
||||
.testimonials .item .source {
|
||||
font-size: 14px;
|
||||
padding-left: 30px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.testimonials .item .source .name {
|
||||
color: #939ea9;
|
||||
font-weight: 600;
|
||||
}
|
||||
.testimonials .item .source .title {
|
||||
color: #999;
|
||||
}
|
||||
/* Education section */
|
||||
.education .item {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.education .item:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.education .item .title {
|
||||
font-size: 16px;
|
||||
margin-top: 0;
|
||||
}
|
||||
.education .item .university {
|
||||
font-family: "Lato", arial, sans-serif;
|
||||
font-size: 13px;
|
||||
color: #999;
|
||||
font-weight: 600;
|
||||
padding-left: 25px;
|
||||
}
|
||||
.education .item .university .year {
|
||||
color: #b0b7bf;
|
||||
font-weight: 500;
|
||||
}
|
||||
/* Language Section */
|
||||
.languages .item {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.languages .item .title {
|
||||
color: #778492;
|
||||
}
|
||||
.languages .item .level {
|
||||
color: #999;
|
||||
}
|
||||
.languages .item:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.languages .item .fa {
|
||||
color: #79d19a;
|
||||
}
|
||||
/* Blog Section */
|
||||
.blog .item {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.blog .item .title {
|
||||
font-size: 18px;
|
||||
line-height: 1.3;
|
||||
}
|
||||
.blog .item .title a {
|
||||
color: #778492;
|
||||
}
|
||||
.blog .item .title a:hover {
|
||||
color: #5f6b77;
|
||||
}
|
||||
.blog .item:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
/* List section */
|
||||
.list ul li {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.list ul li .fa {
|
||||
margin-right: 5px;
|
||||
}
|
||||
.list ul li a {
|
||||
color: #778492;
|
||||
}
|
||||
.list ul li a:hover {
|
||||
color: #49515a;
|
||||
}
|
||||
/* Credits */
|
||||
.credits ul li {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.credits ul li .fa {
|
||||
margin-right: 5px;
|
||||
}
|
||||
.credits ul li a {
|
||||
color: #778492;
|
||||
}
|
||||
.credits ul li a:hover {
|
||||
color: #49515a;
|
||||
}
|
||||
.credits .btn {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
/* ======= Footer ======= */
|
||||
.footer {
|
||||
background: #32383e;
|
||||
color: #fff;
|
||||
padding: 10px 0;
|
||||
}
|
||||
.footer .copyright {
|
||||
line-height: 1.6;
|
||||
color: #a1aab4;
|
||||
font-size: 14px;
|
||||
}
|
||||
.footer a {
|
||||
color: #fff;
|
||||
}
|
||||
.footer .fa-heart {
|
||||
color: #fb866a;
|
||||
}
|
||||
/* Extra small devices (phones, less than 768px) */
|
||||
@media (max-width: 767px) {
|
||||
.header {
|
||||
text-align: center;
|
||||
}
|
||||
.header .profile-image {
|
||||
float: none !important;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.header .profile-content {
|
||||
float: none !important;
|
||||
text-align: center;
|
||||
}
|
||||
.header .btn {
|
||||
margin-top: 30px;
|
||||
float: none !important;
|
||||
}
|
||||
.project-image {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
}
|
||||
/* Small devices (tablets, 768px and up) */
|
||||
/* Medium devices (desktops, 992px and up) */
|
||||
/* Large devices (large desktops, 1200px and up) */
|
||||
/* Ex-Large devices (large desktops, 1200px and up) */
|
||||
@media (min-width: 1400px) {
|
||||
.container {
|
||||
width: 1360px;
|
||||
}
|
||||
}
|
||||
1
css/styles.min.css
vendored
1
css/styles.min.css
vendored
File diff suppressed because one or more lines are too long
19
default.conf
Normal file
19
default.conf
Normal file
@@ -0,0 +1,19 @@
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
|
||||
location / {
|
||||
root /usr/share/nginx/html;
|
||||
index index.html index.htm;
|
||||
rewrite ^(/tags/)(.*) https://$host/tag/$2/ permanent;
|
||||
rewrite ^(/rss) /rss.xml break;
|
||||
absolute_redirect off;
|
||||
real_ip_header X-Forwarded-For;
|
||||
real_ip_recursive on;
|
||||
|
||||
}
|
||||
|
||||
error_page 500 502 503 504 /500/;
|
||||
error_page 404 /404/;
|
||||
|
||||
}
|
||||
@@ -109,8 +109,7 @@ IF EXIST "%DEPLOYMENT_TARGET%\package.json" (
|
||||
IF EXIST "%DEPLOYMENT_TARGET%\bower.json" (
|
||||
pushd "%DEPLOYMENT_TARGET%"
|
||||
IF EXIST ".\components" (call rmdir .\components /S /Q)
|
||||
call :ExecuteCmd !NPM_CMD! install bower
|
||||
call .\node_modules\.bin\bower install
|
||||
call :ExecuteCmd !NPM_CMD! run bower install
|
||||
IF !ERRORLEVEL! NEQ 0 goto error
|
||||
popd
|
||||
)
|
||||
@@ -119,9 +118,7 @@ IF EXIST "%DEPLOYMENT_TARGET%\bower.json" (
|
||||
:: 4. Install gulp
|
||||
IF EXIST "%DEPLOYMENT_TARGET%\gulpfile.js" (
|
||||
pushd "%DEPLOYMENT_TARGET%"
|
||||
call :ExecuteCmd !NPM_CMD! install gulp gulp-cache-bust gulp-concat-css gulp-uglify html-minifier gulp-concat gulp-rimraf
|
||||
call .\node_modules\.bin\gulp clean
|
||||
call .\node_modules\.bin\gulp publish
|
||||
call :ExecuteCmd !NPM_CMD! run gulp publish
|
||||
IF !ERRORLEVEL! NEQ 0 goto error
|
||||
popd
|
||||
)
|
||||
|
||||
6
docker-compose.yml
Normal file
6
docker-compose.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
version: '3'
|
||||
services:
|
||||
webapp:
|
||||
build: ./
|
||||
ports:
|
||||
- "8080:80"
|
||||
@@ -14,9 +14,9 @@ var gulp = require('gulp'),
|
||||
|
||||
|
||||
|
||||
gulp.task('watch', function() {
|
||||
gulp.watch('./css/*.less', ['less']);
|
||||
gulp.watch('./css/*.css');
|
||||
gulp.task('watch', ['default'], function() {
|
||||
gulp.watch(['./css/*.css', '!./css/bundle.css'], ['combineCss']);
|
||||
gulp.watch(['./js/*.js', '!./js/bowr.js'], ['combineJs']);
|
||||
});
|
||||
|
||||
gulp.task('clean', function(){
|
||||
@@ -78,7 +78,7 @@ gulp.task('combineJs',['clean'], function() {
|
||||
});
|
||||
|
||||
|
||||
gulp.task('cachebust', function(){
|
||||
gulp.task('cachebust', ['clean'], function(){
|
||||
return gulp.src('index.html')
|
||||
.pipe(cachebust({
|
||||
type: 'timestamp'
|
||||
|
||||
File diff suppressed because one or more lines are too long
1
js/.gitignore
vendored
Normal file
1
js/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
bowr.js
|
||||
File diff suppressed because one or more lines are too long
74
keybase.txt
Normal file
74
keybase.txt
Normal file
@@ -0,0 +1,74 @@
|
||||
==================================================================
|
||||
https://keybase.io/terribledev
|
||||
--------------------------------------------------------------------
|
||||
|
||||
I hereby claim:
|
||||
|
||||
* I am an admin of https://about.terribledev.io
|
||||
* I am terribledev (https://keybase.io/terribledev) on keybase.
|
||||
* I have a public key with fingerprint 0038 46D2 1D97 8194 BF5E D616 1ECB 05E5 739F 3C98
|
||||
|
||||
To do so, I am signing this object:
|
||||
|
||||
{
|
||||
"body": {
|
||||
"key": {
|
||||
"eldest_kid": "010169b5f69aca723593668e275e67b2d6304110766f3cfa98c4ca8db7c4b9f4f6d10a",
|
||||
"fingerprint": "003846d21d978194bf5ed6161ecb05e5739f3c98",
|
||||
"host": "keybase.io",
|
||||
"key_id": "1ecb05e5739f3c98",
|
||||
"kid": "010169b5f69aca723593668e275e67b2d6304110766f3cfa98c4ca8db7c4b9f4f6d10a",
|
||||
"uid": "ffcade3f3fbf6c5c54c09310e7b43719",
|
||||
"username": "terribledev"
|
||||
},
|
||||
"service": {
|
||||
"hostname": "about.terribledev.io",
|
||||
"protocol": "https:"
|
||||
},
|
||||
"type": "web_service_binding",
|
||||
"version": 1
|
||||
},
|
||||
"ctime": 1472730864,
|
||||
"expire_in": 157680000,
|
||||
"prev": "da28b2e12eb2e938fe098f4ff8ec59c0aa9f624b735cfddce0ae128abbb36623",
|
||||
"seqno": 7,
|
||||
"tag": "signature"
|
||||
}
|
||||
|
||||
which yields the signature:
|
||||
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
Version: Keybase OpenPGP v2.0.56
|
||||
Comment: https://keybase.io/crypto
|
||||
|
||||
yMNGAnicrZJtUFRVHMZ3EWjYRKA0GFhMb9pkIdz3l5XaCaGENqqZFZGo7b6ci1dw
|
||||
77J7dwmZTSx8S0UksRYZkZfGyLXAGIQiFYYspKnISQeQpBR1WiiM0RQku5dspg99
|
||||
7Hw4Z845v+c5z/8/pyd8js6gX9gXMuqqTX5P39dV79at+eqhiRKIk4ViyFQC5YPZ
|
||||
BRQIwKXY8iUBMkEwAiMkwxEiybA8S6EYwWAkSQOUIgBJcahAYjCOIDBFkiLGiyxD
|
||||
8zjP0gJH8TjHiLhICgjMQgmQKNnzgNPhlOyKZgtjNE4KKCIwFI0wOCcSQCAREgE8
|
||||
BxOAoDBGtWNoVbhOdmkKNRzHukCiJKtn6sY2G+8/+P85t3vWThR5VgCYiImcSPIE
|
||||
T+A8zGAIDCgOxyiE0UAXcNrZDUClFeB0SlwBEIAH8iZA6oVH4oHWW62YexDLyW4l
|
||||
8V/o36U5nLIi83KBSqxTFIfLpDkoxQ5NUgQ42z0zGyfZBbWlqsIDnC5JtkMmRCV5
|
||||
RdLcEZxCKQymSTwBAq87JCewSRpBUCQNq0N7Rw1nggQWpTkUIChQZwajRQAztFq+
|
||||
SAOeYHiYZRmRRHGOwgheFAQewKwK0yzHcWo/UQzSyiu0y5CJUmOyeaqlS8qzs4rb
|
||||
CSBvd1dusE5v0IWGBGlfTWcIi/znA357MOJu1rKic6No/RtNdLzVerXnVO9la9jk
|
||||
1Vsl7PrIG37/9oadAZ95j7c4pmwZ+UBW3n12amZwMfkMee3S2kE26KPYsbDDH55f
|
||||
Pvj8itNVWSc2MVPk+CZ//JlAufKDc3++Y+/Q5qL+E5ERk9mLVn+XNLJvZGrrC9lJ
|
||||
q49c3GK4hR0nvjC+WTHvWDNhiE1pb70x7RruuBuTbXjft94sj7sXoFG1NRWx6eKP
|
||||
5f7Kpp+Dfl2ZM3oqr26P0VyRMe/MXuUt44bkjMR3op69SXS+PNUdKLKY2yxT/aHv
|
||||
XvCVNfqYNGzywcW7TT5zTi/THZ5Shfq50dRmwrc7eEFwzxIdlDl2BYr4ZMvX+BPf
|
||||
Y3eiW6r3H8m80tlVejjaUpb6S7C3+cvhuojKXSML59x5LPmV6SfXtF94NdHiGUtd
|
||||
crJs3O1xLy2qWj6zs280VX/UdE26nLn5tz+ZbVs/6NgnYivbdqR3tis7sMjjb5cM
|
||||
yU3W/saIQ7mtyPxPLScbdcfOmifi4m8ab4vhektW6fmB2gPGg6VyTfzjY5mZLWm5
|
||||
Jbe7ekMvpj7at/G6bttcr9SbttbaNv+bo6/VJXWeDvn4p4SCQOGhKNGj/D4QVx13
|
||||
blF6wyNDS/WVVOL0xKoBX9LwZ82F1Q/PZDz30sYDHTbz0y0v7mo12gOrclICK2Lq
|
||||
r4v3R3/eUO6Pyvhj7iWB9NacfeoveB3Dtg==
|
||||
=N78Z
|
||||
-----END PGP MESSAGE-----
|
||||
|
||||
And finally, I am proving ownership of this host by posting or
|
||||
appending to this document.
|
||||
|
||||
View my publicly-auditable identity here: https://keybase.io/terribledev
|
||||
|
||||
==================================================================
|
||||
32
nginx.conf
Normal file
32
nginx.conf
Normal file
@@ -0,0 +1,32 @@
|
||||
user nginx;
|
||||
worker_processes 1;
|
||||
|
||||
error_log /var/log/nginx/error.log warn;
|
||||
pid /var/run/nginx.pid;
|
||||
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||
'$status $body_bytes_sent "$http_referer" '
|
||||
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||
|
||||
access_log /var/log/nginx/access.log main;
|
||||
|
||||
sendfile on;
|
||||
#tcp_nopush on;
|
||||
|
||||
keepalive_timeout 65;
|
||||
|
||||
gzip on;
|
||||
gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
|
||||
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
}
|
||||
6121
package-lock.json
generated
Normal file
6121
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -3,9 +3,12 @@
|
||||
"version": "0.0.1",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": ""
|
||||
"gulp": "gulp",
|
||||
"bower": "bower",
|
||||
"pub": "gulp publish"
|
||||
},
|
||||
"dependencies": {
|
||||
"bower": "^1.8.4",
|
||||
"html-minifier": "^0.7.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
Reference in New Issue
Block a user