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:
- list of keywords
- 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?
- Clone the project
git clone https://github.com/Raysmond/SpringBlog.git
- Download all dependencies
cd SpringBlog
./gradlew idea
- Open the project in Intellij IDEA.
- Run
Application.java
as Java application.
- 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
License
Modified BSD license.
Copyright (c)
2015 - Jiankun LEI (Raysmond),
2017 - Vyacheslav Boyko (bvn13).