jrtechs e8c27d6f6c | 6 years ago | |
---|---|---|
.idea | 6 years ago | |
admin | 6 years ago | |
css | 6 years ago | |
downloads | 6 years ago | |
entries | 6 years ago | |
img | 6 years ago | |
includes | 6 years ago | |
js | 6 years ago | |
posts | 6 years ago | |
sidebar | 6 years ago | |
utils | 6 years ago | |
LICENSE | 6 years ago | |
README.md | 6 years ago | |
blogSql.svg | 6 years ago | |
generateSitemap | 6 years ago | |
optimizeImages.sh | 6 years ago | |
package.json | 6 years ago | |
robots.txt | 6 years ago | |
run | 6 years ago | |
server.js | 6 years ago | |
sitemap.txt | 6 years ago |
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.
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";
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 memory-cache --save
Blue:
Purple:
Stuff for automated image compression
apt-get install jpegoptim
jpegoptim --size=500k *.jpg
apt-get install optipng
optipng *.png