Project tutorial
Build a Spring Blog
Build Ironclad Gazette with Spring Boot 3, Thymeleaf, Bootstrap 5, Spring Security, JPA/Hibernate, MySQL, owned post CRUD, search, password recovery, and a Railway deployment.
How this project works
Ironclad Gazette is an original teaching blog in twelve complete snapshots. Clone once and run any numbered folder without rebuilding earlier stages.
The path starts with Spring Boot and routing, adds Thymeleaf and Bootstrap, then introduces isolated MySQL databases. Later parts add registration, form login, media, ownership, pagination, search, reset tokens, and Railway deploy notes.
Snapshots 4–12 seed [email protected] and [email protected] with password123.
Local MySQL runs through Docker Compose on host port 3308 with databases ironclad_01–ironclad_12.
Start with part 1 Open GitHub repo
Parts in order
Work through the parts in sequence. Each lesson explains the ideas in plain language, then points you to a complete runnable snapshot on GitHub for that stage.
- Part 1: Getting StartedCreate a minimal Spring Boot app on port 8080.
- Part 2: RoutingOrganize page routes with Spring MVC controllers.
- Part 3: Layout and UIRender Thymeleaf pages with Bootstrap 5.
- Part 4: Data LayerPersist authors and posts with JPA and MySQL.
- Part 5: Feed and DetailBuild a database-backed feed and post detail pages.
- Part 6: RegistrationValidate accounts and store bcrypt password hashes.
- Part 7: Login and SessionsAuthenticate with Spring Security form login.
- Part 8: Profiles and MediaShow author profiles and accept constrained avatar uploads.
- Part 9: Posts CRUD and OwnershipCreate, edit, and delete posts with owner authorization.
- Part 10: Pagination and SearchPaginate the feed and search post text.
- Part 11: Password ResetIssue expiring one-use password reset tokens.
- Part 12: DeployPrepare Ironclad Gazette for Railway and managed MySQL.