Most Spring Boot tutorials teach you to build a CRUD app and call it a day. But that's not really what the job looks like day to day, so I put together a project that mimics what you'd actually work on as a backend dev at a company with real infrastructure. 🔗 Repo: springboot-learning-kit I've added the following 12 tasks that you'd need to complete: Project setup: spin up Postgres + messaging brokers, verify everything's healthy Kicking off development: request validators, custom exceptions, a new order status API Debug a critical bug: chase down a duplicate-insert caused by misusing EntityManager.persist() vs save() ActiveMQ + Apache Camel: configure routes, consume from a queue, handle dead letter queues, publish to a Virtual Topic RabbitMQ: set up exchanges/bindings, fix an infinite redelivery bug, publish to a topic exchange DB schema migration: add a table with Liquibase, write rollback SQL, fix an N+1 write Testing: unit tests with Mockito, snapshot tests, integration tests with TestContainers Code style: enforce formatting automatically with Spotless + Palantir Java Format Prometheus metrics: expose app metrics via Actuator, configure scraping Grafana: connect to Prometheus, build dashboards, add @Timed annotations Load testing: run JMeter tests, interpret throughput, watch the impact in Grafana Global exception handling: swap per-controller try-catch for @ControllerAdvice + RFC 7807 Problem Details Everything runs locally via Docker Compose, and there's a Bruno collection included so you can hit the APIs without writing your own Postman setup. It's completely free and open source, so fork it, work through the tasks in order, and you'll come out the other side with a much better feel for what the job actually involves beyond "make endpoint, save to DB." Would love feedback from people!

Most Spring Boot tutorials teach you to build a CRUD app and call it a day. But that's not really what the job looks like day to day, so I put together a project that mimics what you'd actually work on as a backend dev at a company with real infrastructure.

🔗 Repo: springboot-learning-kit

I've added the following 12 tasks that you'd need to complete:

  1. Project setup: spin up Postgres + messaging brokers, verify everything's healthy
  2. Kicking off development: request validators, custom exceptions, a new order status API
  3. Debug a critical bug: chase down a duplicate-insert caused by misusing EntityManager.persist() vs save()
  4. ActiveMQ + Apache Camel: configure routes, consume from a queue, handle dead letter queues, publish to a Virtual Topic
  5. RabbitMQ: set up exchanges/bindings, fix an infinite redelivery bug, publish to a topic exchange
  6. DB schema migration: add a table with Liquibase, write rollback SQL, fix an N+1 write
  7. Testing: unit tests with Mockito, snapshot tests, integration tests with TestContainers
  8. Code style: enforce formatting automatically with Spotless + Palantir Java Format
  9. Prometheus metrics: expose app metrics via Actuator, configure scraping
  10. Grafana: connect to Prometheus, build dashboards, add @Timed annotations
  11. Load testing: run JMeter tests, interpret throughput, watch the impact in Grafana
  12. Global exception handling: swap per-controller try-catch for @ControllerAdvice + RFC 7807 Problem Details

Everything runs locally via Docker Compose, and there's a Bruno collection included so you can hit the APIs without writing your own Postman setup.

It's completely free and open source, so fork it, work through the tasks in order, and you'll come out the other side with a much better feel for what the job actually involves beyond "make endpoint, save to DB."

Would love feedback from people!