refactor: replace Spring Boot with Jooby framework

- Remove Spring Boot dependencies and annotations.
- Implement Jooby MVC controllers and Guice dependency injection.
- Migrate persistence layer to Ebean ORM.
- Configure Flyway migrations and ApiErrorController.
- Update application configuration to HOCON format.
This commit was merged in pull request #1.
This commit is contained in:
2026-03-02 16:38:11 +01:00
parent 83070ccbda
commit eb51b221cf
76 changed files with 1162 additions and 943 deletions

View File

@@ -10,11 +10,14 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<version>1.18.36</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>3.0.2</version>
</dependency>
</dependencies>
</project>

View File

@@ -7,6 +7,7 @@ public record CertificationId(Long profileId, Long certificationId) {
}
public CertificationId {
if (certificationId != null && certificationId < 0) throw new IllegalArgumentException("CertificationId must be positive");
if (certificationId != null && certificationId < 0)
throw new IllegalArgumentException("CertificationId must be positive");
}
}

View File

@@ -1,6 +1,5 @@
package com.pablotj.portfolio.domain.experience;
import java.time.LocalDate;
import lombok.Builder;
import lombok.Getter;

View File

@@ -7,6 +7,7 @@ public record ExperienceId(Long profileId, Long experienceId) {
}
public ExperienceId {
if (experienceId != null && experienceId < 0) throw new IllegalArgumentException("ProfileSocialLinkId must be positive");
if (experienceId != null && experienceId < 0)
throw new IllegalArgumentException("ProfileSocialLinkId must be positive");
}
}

View File

@@ -2,12 +2,13 @@ package com.pablotj.portfolio.domain.project.port;
import com.pablotj.portfolio.domain.project.Project;
import com.pablotj.portfolio.domain.project.ProjectId;
import java.util.List;
import java.util.Optional;
public interface ProjectRepositoryPort {
Project save(Project p);
Optional<Project> findById(ProjectId id);
List<Project> findAll(Long profileId);
}