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 86b4ae0a4b Optimized images to decrease website loading time. 6 years ago
.idea Added a sitemap generator 6 years ago
admin Updated downloads to update downloads count in database 6 years ago
css Added documentation and fixed the nav bar. 6 years ago
downloads Added downloads to git repo 6 years ago
entries Optimized images to decrease website loading time. 6 years ago
img Optimized images to decrease website loading time. 6 years ago
includes Updated http to https 6 years ago
posts Started working on steam graph blog post. 6 years ago
sidebar Updated the color scheme of the sidebar and buttons 6 years ago
utils Prevented people from simply pointing their host names to my website and ripping off my content. 6 years ago
LICENSE Initial commit 6 years ago
README.md Optimized images to decrease website loading time. 6 years ago
blogSql.svg Created export of diagram file 6 years ago
generateSitemap Started working on site map generator 6 years ago
optimizeImages.sh Optimized images to decrease website loading time. 6 years ago
package.json Added a sitemap generator 6 years ago
robots.txt added meta stuff for google 6 years ago
run Created run script 6 years ago
server.js Prevented people from simply pointing their host names to my website and ripping off my content. 6 years ago
sitemap.txt Added a sitemap generator 6 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.

MYSQL Information

create database jrtechs_blog;

use jrtechs_blog;

create table users(
user_id mediumint unsigned not null AUTO_INCREMENT,
user_name varchar(60) not null,
password char(64) not null,
salt char(64) not null,
primary key(user_id)
);

create table categories(
category_id mediumint unsigned not null AUTO_INCREMENT,
name varchar(60) not null,
url varchar(60) not null,
primary key(category_id)
);

create table posts(
post_id mediumint unsigned not null AUTO_INCREMENT,
category_id mediumint unsigned not null,
picture_url varchar(100) not null,
published datetime not null,
name varchar(100) not null,
url varchar(100) not null,
primary key(post_id)
);


create table downloads(
download_id mediumint unsigned not null AUTO_INCREMENT,
file varchar(40) not null,
name varchar(40) not null,
download_count mediumint not null,
primary key(download_id)
);

create table popular_posts(
popular_post_id mediumint unsigned not null AUTO_INCREMENT,
post_id mediumint unsigned not null,
primary key(popular_post_id)
);

grant all on jrtechs_blog.* to blog_user@localhost identified by "password";

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

Color scheme

Adobe Color Wheel

Blue:

  • Primary: #3B536B
  • Secondary: #00BEB2

Purple:

  • Primary: #513E7D
  • Secondary: #D2C0FF

Stuff for automated image compression

apt-get install jpegoptim
jpegoptim --size=500k *.jpg
apt-get install optipng
optipng *.png