compassMap is a Spring Boot backend that runs a self-assessment for a customer (questions & answers per dimension), computes a resulting
CustomerProfileand recommends learningRoadMaps.
- Java 21
- Spring Boot 4 (Web MVC, Data JPA, Thymeleaf, DevTools)
- H2 database (file-based) + H2 console
- Lombok, JavaFaker (data population)
- Maven (wrapper included)
| Folder | Content |
|---|---|
compassMap/ |
Spring Boot project (pom.xml, src/) |
db/ |
H2 database files |
docs/ |
master docs, diagrams, mockups, appends |
| Entity | Role |
|---|---|
Customer |
person taking the assessment |
Question |
question catalogue (per Dimension) |
Answer |
a boolean answer value |
QuestionAndAnswer |
question + answer + score contribution |
CustomerProfile |
resulting profile (CodeProfile) linked to recommended RoadMaps |
RoadMap |
learning path |
AssessmentView |
one assessment run: customer, Q&A list, resulting profile |
See docs/compassMap_v2.md for details and diagrams.
| Resource | Base path |
|---|---|
| Customers | /api/v1/customers |
| Questions | /api/v1/questions |
| Question & Answers | /api/v1/questionAndAnswers |
| Customer profiles | /api/v1/customerProfiles |
| Roadmaps | /api/v1/roadmaps |
| Assessments | /api/v1/assessments |
- JDK 21 (check with
java -version) - Git
- An IDE: IntelliJ IDEA (recommended), VS Code (with Extension Pack for Java + Spring Boot Extension Pack) or Eclipse/STS
- Lombok support enabled in your IDE (IntelliJ: Settings > Build > Compiler > Annotation Processors > Enable annotation processing)
- Maven is not required: the project ships with the Maven wrapper (
mvnw)
git clone https://github.com/AlbertProfe/compassMap.git
cd compassMap- IntelliJ IDEA: File > Open and select the inner
compassMap/compassMap/pom.xml(choose Open as Project). Wait for Maven to import dependencies. - VS Code: File > Open Folder and select
compassMap/compassMap. - Set the project SDK to Java 21 if the IDE asks.
Edit compassMap/src/main/resources/application.properties and point spring.datasource.url to a path on your machine, for example:
# file-based (data persists between runs)
spring.datasource.url=jdbc:h2:./db/compassmapdb
# or in-memory (data lost on shutdown)
#spring.datasource.url=jdbc:h2:mem:testdbCredentials are defined in the same file (spring.datasource.username / spring.datasource.password).
From the IDE: run DemoApplication (com.example.demo.DemoApplication).
From the terminal:
cd compassMap
./mvnw clean install # build + run tests
./mvnw spring-boot:run # start the appOn Windows use mvnw.cmd instead of ./mvnw.
- App: http://localhost:8080
- H2 console: http://localhost:8080/h2-console (use the same JDBC URL, user and password as in
application.properties) - REST API, e.g.:
curl http://localhost:8080/api/v1/customerscd compassMap
./mvnw test