Personal blog written from scratch using Node.js, Bootstrap, and MySQL. https://jrtechs.net
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
jrtechs 42c3b2c6f3 Created new blog posts on profile images 4 years ago
.github/ISSUE_TEMPLATE Created a template for creating blog post issues on git repository. 5 years ago
.idea Added a sitemap generator 6 years ago
admin Got the category pages to work under the routes system. 5 years ago
blog Fixed versioning issue with newer version of pandoc. 4 years ago
blogContent Created new blog posts on profile images 4 years ago
docs Finished writing blog post on multi threaded file io performance. 5 years ago
includes Upgraded version of the visjs timeline which fixed date inconsitencies at different scales. 4 years ago
photography Worked on implementing photo post pages. 5 years ago
routes RSS feed fix. 4 years ago
sites Got the project sites working and fixed bug with pagination bar. 5 years ago
templates Updated timeline so that the blog post will render once you click on it in the time line. 4 years ago
utils RSS feed fix. 4 years ago
.gitignore Added git ignore to project. 5 years ago
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 5 years ago
LICENSE Updated License 6 years ago
README.md Updated admin section of website to use template engine for the login screen and started it for the downloads page. 5 years ago
config.json Started working on rss feed 4 years ago
docker-compose.yml Created docker script to run mysql db for local development. 4 years ago
jrtechs.service Created systemd script to run blog. 5 years ago
optimizeImages.sh Created admin server and fixed code highlighting. 6 years ago
package.json Started working on rss feed 4 years ago
previewer.js Got the photos post to have their write up display above the photos. 5 years ago
robots.txt added meta stuff for google 6 years ago
run Finished vim configuration post. 5 years ago
server.js Got the project sites working and fixed bug with pagination bar. 5 years ago
sitemap.txt Started working on rss feed 4 years ago

README.md

NodeJSBlog

This is a project I did to recreate my word press blog using plane node js. If I were to do this again, I would use PHP. NodeJS is great, however, it was a pain to deal with all the asynchronous calls when trying to create a web page in a linear fashion.

If you want to run this project, it requires Mysql, npm, and node to be installed. For deployment I used a Nginx proxy to expose the node application running on port 8000 to port 80. This proxy is necessary because you can't run a node application as port 80 unless you are root, which would be a security vulnerability.

Unless otherwise stated, everything in this repository can be assumed to fall under these two licenses depending on what type of file it is.

Code, scripts

All code, scripts, or other technical / programmatic items in this repo are assumed fall under the Mozilla Public License 2.0 unless otherwise stated.

Guides, articles, posts, misc. content

Creative Commons Attribution-ShareAlike 4.0 International License

All guides, scripts, posts, or otherwise non-programmatic content in this repo is assumed to fall under the Creative Commons Attribution-ShareAlike 4.0 International unless otherwise stated.

Node Dependencies

npm install express
npm install express-session
npm install mysql
npm install sanitizer
npm install promise
npm install highlight
npm install crypto
npm install remarkable
npm install markdown
npm install highlight.js
npm install compression
npm install memory-cache --save
npm install request
npm install nodemailer
npm install nodemailer-smtp-transport
npm install whiskers

npm install node-pandoc

Color scheme

The color scheme has been changing a lot recently.

Adobe Color Wheel

current: top 2C3E50 secondary 498FBE highlight:00F0E1, 88BAFF

Image Optimization

Stuff for automated image compression

apt-get install jpegoptim
apt-get install optipng

./optimizeImages.sh

NGINX Configuration

#jrtechs.net.conf
server 
{
    listen 80;
    server_name www.jrtechs.net jrtechs.net;

    # redirect http requests to https
    return 301 https://jrtechs.net$request_uri;
}

server 
{
    listen 443 ssl http2;

    server_name jrtechs.net;

    ssl_certificate /etc/letsencrypt/live/jrtechs.net/cert.pem;
    ssl_certificate_key /etc/letsencrypt/live/jrtechs.net/privkey.pem;

    location / {
        proxy_pass http://localhost:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Projects Sites

As I develop more projects I would like an easy way to add and host them on my website without having to create another sub-domain and generate more ssl certs. I simply want the project site to be accessible under https://jrtechs.net/project_name.

State Diagram of Plan

diagram