A simple blogging system implemented with Spring Boot/MVC/JPA + Hibernate + MySQL + Redis + Bootstrap + Jade.
Clone or download
Pull request Compare This branch is 93 commits ahead, 18 commits behind Raysmond:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
gradle/wrapper
releases implemented checking robots' user-agents by regexp. added yandex-metr… Nov 27, 2017
src/main disable signin from search engines Jul 6, 2018
.bowerrc fix counting tag posts Dec 1, 2015
.gitignore SpringBoot updated upto 1.4.9, added announcements for posts, Impleme… Dec 22, 2017
LICENSE implemented files upload and download by link Nov 9, 2017
README.md
bower.json fix logging error. docker compose deployment support Sep 8, 2016
build.gradle added some ads Jul 4, 2018
docker-compose.yml fix logging error. docker compose deployment support Sep 8, 2016
gradlew initial commit Sep 25, 2015
gradlew.bat initial commit Sep 25, 2015
settings.gradle Pygments, About and PostType Sep 26, 2015

README.md

SpringBlog

SpringBlog is a very simple and clean-design blog system implemented with Spring Boot. I had put it on production for my personal bvn13's blog since 2017-11-03.

SpringBlog is powered by many powerful frameworks and third-party projects:

  • Spring Boot and many of Spring familiy (e.g. Spring MVC, Spring JPA, Spring Secruity and etc)
  • Hibernate + PostgreSQL
  • HikariCP - A solid high-performance JDBC connection pool
  • Bootstrap - A very popular and responsive front-end framework
  • Pegdown - A pure-java markdown processor (deprecated)
  • ACE Editor - A high performance code editor which I use to write posts and code.
  • Pygments - A python library for highlighting code syntax (deprecated)
  • Flexmark - Java implementation of CommonMark 0.28 spec parser using the blocks first, inlines after Markdown parsing architecture
  • Jade4j - Jade is an elegant template language.
  • Webjars - A client-side web libraries packaged into JAR files. A easy way to manage JavaScript and CSS vendors in Gradle.
  • Redis - A very powerful in-memory data cache server.
  • Prism - syntax highlighter
  • HighCharts - charts JS-library
  • TelegramBots - telegram bot API for sending announcements of posts into Telegram Channel
  • Date Range Picker - A JavaScript component for choosing date ranges. Designed to work with the Bootstrap CSS framework.

Changelog

2018-04-19

  • Added subscription link into NavBar
  • Implemented http proxy using for telegram notifier

2018-01-29

  • Implemented live post content preview without saving

2017-12-25

2017-12-22 - SpringBlog version 2.8.0 is released

  • SpringBoot updated upto 1.4.9
  • Added announcements for posts
  • Implemented Telegram Bot aimed at sending posts announcements into Telegram Channel

2017-12-21

  • Added Visitors Statistics chart onto Admin Dashboard (powered with HighCharts)

2017-11-27

  • Improved checking robots' user-agents by comparison using RegExp

2017-11-23

  • Added OpenGraph fields into post page

2017-11-21

  • Implemented opening of images in modal form
  • Implemented Flexmark plugin - converter from regular link to embedded-frame for Youtube videos

2017-11-20

  • Implemented exclusion of search-robots from visit counting.

2017-11-15

  • Implemented visitors counting (depends on X-Real-IP header)
  • Implemented likes/dislikes (depends on X-Real-IP header)

2017-11-14

  • Added RememberMe checkbox into login form, increased RememberMe cookie timeout upto 7 days
  • Added Prism syntax highlighter instead of github-markdown-css

2017-11-13

  • Draft posts are hidden now by direct link
  • Prevented creating admin user from constants if email of admin was changed from the database

2017-11-11

  • Implemented /seo/sitemap.xml file containing information about all published posts

2017-11-09

  • Implemented files uploads/downloads

2017-11-08

2017-11-07

  • Added 'admin' button on the home page if admin is logged in
  • Added SEO meta-tags:
    1. list of keywords
    2. description
  • Updated html > head > title for posts pages

2017-11-03

Development

Before development, please install the following service software:

Edit the spring config profile src/main/resources/application.yml according to your settings.

And start MySQL and Redis first before running the application.

# If you're using Ubuntu server

# Install MySQL
apt-get install mysql-server
service mysql start
mysql -u root -p
>> create database spring_blog;


# Install Python pygments
apt-get install python-pip
pip install pygments
# If you want to enable redis cache
# Install redis server first, you can find instructions
# from https://www.digitalocean.com/community/tutorials/how-to-install-and-use-redis
service redis_6379 start

This is a Gradle project. Make sure Gradle is installed in your machine. Try gradle -v command. Otherwise install in from http://www.gradle.org/. I recommend you import the source code into Intellij IDE to edit the code.

# Start the web application
./gradlew bootRun

Development

How to import the project into Intellij IDEA and run from the IDE?

  1. Clone the project git clone https://github.com/Raysmond/SpringBlog.git
  2. Download all dependencies cd SpringBlog ./gradlew idea
  3. Open the project in Intellij IDEA.
  4. Run Application.java as Java application.
  5. Preview: http://localhost:8001 Admin: http://localhost:8001/admin , the default admin account is: admin@admin.com, password: admin

Lombok is required to run the project. You can install the plugin in Intellij IDEA. Reference: https://github.com/mplushnikov/lombok-intellij-plugin

Deployment

  • Build application jar ./gradlew build, then upload the distribution jar (e.g. build/libs/SpringBlog-0.1.jar) to your remote server.

  • Upload application-production.yml to your server and change it according to your server settings.

  • Run it (Java8 is a must)

    # assuming you have the jar and yml files under current dir
    java -jar SpringBlog-0.1.jar --spring.config.location=application-production.yml
    

License

Modified BSD license. Copyright (c) 2015 - Jiankun LEI (Raysmond), 2017 - Vyacheslav Boyko (bvn13).