Series "Developing My Own Blog Website" is generated by ChatGPT.

Welcome to the first post in my blog series where I'll document my journey of building a dynamic blog website from scratch. As a software engineer with a background in Java and Spring, I want to leverage my existing skills while exploring new technologies and frameworks to create a blog site.

Tech Stack Decisions

After some consideration, I’ve decided on the following tech stack for my project:

Backend:

  • Java & Spring Boot: I’m already familiar with Java and Spring, so Spring Boot is the natural choice for building a production-ready RESTful web service quickly.
  • SQLite: Since this is a small-scale project with no advanced database requirements for now, SQLite is an ideal lightweight and file-based database option. It's simple, easy to set up, and integrates well with Spring Data JPA.

Frontend:

  • Thymeleaf: I chose Thymeleaf for server-side rendering of HTML content. It’s tightly integrated with Spring Boot, easy to use, and allows embedding dynamic content into templates.
  • HTML/CSS/JavaScript: For styling and layout, I’ll stick with the basics, using CSS and JavaScript for a responsive and interactive design.

Security:

  • Spring Security: To secure the application, Spring Security will be used for handling authentication and role-based access. Initially, I’ll set up simple login/logout functionality and ensure the content creation, update, and deletion processes are protected.

Rendering Rich Content in Blog Posts

One of the challenges I identified early on was the need to support rich text formatting (like headers, lists, and code snippets) in blog posts. To enable this, I decided to use Markdown as the format for creating blog content. Markdown is simple, developer-friendly, and allows writing with minimal effort while supporting a wide range of formatting features.

To achieve this:

  • I plan to write my blog posts in Markdown, which provides a clean way to include formatting.
  • On the server side, Markdown content will be converted to HTML before being rendered in the frontend. This way, I can enjoy the flexibility of writing in Markdown while ensuring the blog content looks well-structured and formatted.

Next Steps

This post marks the beginning of the development journey. In the next part, I’ll start implementing the core features of the blog, such as:

  • Post creation and editing (secured by user authentication).
  • Dynamic content rendering using Thymeleaf templates.
  • Securing the blog application with Spring Security.

Stay tuned for more updates as I dive deeper into building the core functionalities of this blog site.