chore: initialize project structure with hexagonal architecture and H2 database for development

This commit is contained in:
2025-09-10 18:45:26 +02:00
parent bd229bbb6b
commit 4053c6fa46
9 changed files with 728 additions and 0 deletions

71
bootstrap/pom.xml Normal file
View File

@@ -0,0 +1,71 @@
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.pablotj.restemailbridge</groupId>
<artifactId>restemailbridge</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>bootstrap</artifactId>
<dependencies>
<dependency>
<groupId>com.pablotj.restemailbridge</groupId>
<artifactId>infrastructure</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- Drivers DB -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Swagger/OpenAPI -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>${springdoc.version}</version>
</dependency>
<!-- Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>restemailbridge</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,16 @@
package com.pablotj.restemailbridge.bootstrap;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@SpringBootApplication(scanBasePackages = "com.pablotj.restemailbridge")
@EnableJpaRepositories(basePackages = {"com.pablotj.restemailbridge.infrastructure"})
@EntityScan(basePackages = {"com.pablotj.restemailbridge.infrastructure"})
public class RestEmailBridgeApplication {
public static void main(String[] args) {
SpringApplication.run(RestEmailBridgeApplication.class, args);
}
}

View File

@@ -0,0 +1,71 @@
info:
app:
version: @project.version@
spring:
application:
name: restemailbridge
web:
resources:
add-mappings: false
jpa:
hibernate:
ddl-auto: update
properties:
hibernate.transaction.jta.platform: org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform
hibernate:
format_sql: true
show-sql: true
jackson:
serialization:
INDENT_OUTPUT: true
springdoc:
api-docs:
path: /v3/api-docs
swagger-ui:
path: /swagger-ui
server:
port: 8080
servlet:
context-path: /api
forward-headers-strategy: framework
---
spring:
config:
activate:
on-profile: default
datasource:
url: jdbc:h2:file:./restemailbridge-db
driver-class-name: org.h2.Driver
username: sa
password:
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.H2Dialect
h2:
console:
enabled: true
path: /h2-console
---
spring:
config:
activate:
on-profile: prod
datasource:
url: jdbc:postgresql://${DB_HOST:localhost}:${DB_PORT:5432}/${DB_NAME:portfolio}
username: ${DB_USER:postgres}
password: ${DB_PASSWORD:postgres}
driver-class-name: org.postgresql.Driver
jpa:
hibernate:
ddl-auto: update