Creating a Blogging Platform in Java: Part 1

DZone 's Guide to

Creating a Blogging Platform in Java: Part 1

In the first part of his series on creating a blogging platform in Java, Grzegorz Ziemonski shares his mindset on the genesis of his project and preparation.

· Java Zone ·
Free Resource

It's been some time since I started blogging and I see a lot of room for improvement. I decided to create something open source that will produce real value and act as an example in my posts. Here it comes: Yet another blogging platform!


I want something as simple as possible. Here are a few key ideas:

  • Small amount of code with least dependencies (yes, I know that these two seem contradictory; I'll have to find the right balance).
  • Blog contents are stored in Git, preferably in a separate repo than the blog server—people can review my posts and suggest improvements via Pull Requests (they can even propose their own posts!).
  • Blog posts are written in markdown or something as easy.
  • Modifying the looks is super-simple.
  • I have an option to run my blog locally with a live preview.
  • RSS feed is generated.
  • Comments are available via disqus.


I'm currently thinking about using the following tools to create the project:

  • Java 8. An obvious choice for a Java related blog, though I might experiment a bit with Java 9 later.
  • Gradle as a build tool, probably the newest version. I'm not good at it, but I hate pom.xml's, so it's time to learn something else.
  • Spock for all kinds of tests. It will give the project some groove.
  • IntelliJ IDEA with default formatting settings. It's my favorite IDE and I don't want to bother contributors with stupid rules.
  • GitHub repository.

Anything else that joins the toolkit is yet to be decided.

Small Design Upfront

Before I actually start coding anything, I want to share with you my general design idea, that might (or not) be implemented later. I have two possible sources of contents—filesystem or a git repository, used in local and hosted mode respectively. I scan through the contents and generate HTML for each post. Over the content source, I set a "watch," checking for changes regularly (e.g. every second). If a change occurs, it triggers re-generating the post's HTML. For the views, I currently need just an index with headers and a single post view. HTTP routes can be resolved dynamically by adding "/" to index and everything else as a possible post.

I didn't spend a lot of time preparing it. I just wanted to have a clue what I'll be building, but not necessarily a complete picture.

Final Words

You are more than welcome to share your thoughts on the project in comments and contribute on GitHub.

genesis, how-to, http, java, preparation

Published at DZone with permission of Grzegorz Ziemoński , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}