In this post I talk about a Spring Boot React Maven Starter project set up to basically get agile developers going as fast as possible. What does as fast as possible mean? Also, what’s an agile developer? In other words what overarching principles apply here?
To answer the first question, as fast as possible means you can run it all up on your local with 3 commands:
$ git clone https://github.com/nicodewet/spring-boot-react-maven-starter.git && cd spring-boot-react-maven-starter/ $ mvn clean install $ java -jar server/target/server-0.0.1-SNAPSHOT.jar
There is no Docker (yet - it will come later) and after the third step you can open http://localhost:8080 in your browser and see the app.
To answer the second question, agile developer means that working software in production at the end of the first sprint is not negotiable. It also means we accept that our user interface and interpretation of requirements expressed in software is a mere hypothesis, so we want to do everything we can to test the hypothesis as quickly as possible. Infinite scalability when we have 0 users is not a primary concern for example.
With the context of the cited sample project, to facilitate rapid development the following has been done:
- The entire stack gets served from a single Spring Boot application so that we can build a simple Docker based pipeline to production.
- The entire app is in a single repo with clearly marked client and server directories.
- A single Maven command packages the app.
- Multi-module Maven build.
So, if the above sounds good to you, and perhaps you are stronger when it comes to Spring Boot than React, I’d recommend doing the following:
- Read through Matt Raible’s Bootiful Development with Spring Boot and React
- Checkout the repo I created and satisfy yourself that it works as advertised.
- Delete the React components and create them from scratch (follow Matt Raible’s tutorial but without TypeScript).