chore: initial commit - project structure with domain, application, infrastructure, bootstrap, and basic dependencies

This commit is contained in:
2025-08-25 21:13:43 +02:00
parent a3fc504015
commit 5215bf8779
25 changed files with 1001 additions and 0 deletions

20
domain/pom.xml Normal file
View File

@@ -0,0 +1,20 @@
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.pablotj</groupId>
<artifactId>portfolio-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>domain</artifactId>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,13 @@
package com.pablotj.portfolio.domain.project;
import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
public class Project {
private final ProjectId id;
private final String title;
private final String description;
private final String url;
}

View File

@@ -0,0 +1,7 @@
package com.pablotj.portfolio.domain.project;
public record ProjectId(Long value) {
public ProjectId {
if (value != null && value < 0) throw new IllegalArgumentException("ProjectId must be positive");
}
}

View File

@@ -0,0 +1,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();
}