This website
A Spring Boot blog and portfolio with a Markdown editor, tagging, RSS, and an admin panel behind Spring Security.
The site you're reading. Server-rendered Spring Boot, with everything editable from a browser rather than a config file.
Features
- Markdown blog posts with tags, search, drafts, and reading-time estimates
- Project portfolio with status tracking and a featured section
- An About page whose content lives in the database, not the templates
- RSS feed and sitemap generated from the published content
- Admin panel protected by Spring Security with BCrypt password hashing
What was interesting
Slug collisions. Two posts called "Week 1" can't both live at
/blog/week-1. The service appends -2, -3 until the slug is free,
and skips the post's own row so editing doesn't rename it.
Markdown safety. Raw HTML in a post body is escaped rather than rendered. Only I can write posts today, but that stops being true the moment I add comments or import content from somewhere else.
Portable text columns. @Lob on a String maps to a Postgres large
object, which is awkward to query. @JdbcTypeCode(SqlTypes.LONGVARCHAR)
gives a CLOB on H2 and a TEXT on Postgres, so moving databases is a
config change rather than a migration.