T-1: initialize monorepo structure with backend and frontend scaffolds
Backend: Spring Boot 3.5.11 on Java 25, Maven with wrapper, hexagonal architecture package layout (domain/application/adapter/config), health endpoint with integration test. Originally planned for Spring Boot 4.0 but pivoted due to massive package reorganization in 4.0 (see addenda in research and plan docs). Frontend: Vue 3 scaffolded via create-vue with TypeScript, Vue Router, Vitest, ESLint, Prettier. Pivoted from Svelte due to ecosystem maturity concerns (broken router ecosystem for Svelte 5). Also: extended .gitignore for Java/Maven and Node/Vue artifacts, updated CLAUDE.md with tech stack, build commands, agent documentation sections, and document integrity rule. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
12
backend/src/main/java/de/fete/FeteApplication.java
Normal file
12
backend/src/main/java/de/fete/FeteApplication.java
Normal file
@@ -0,0 +1,12 @@
|
||||
package de.fete;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
@SpringBootApplication
|
||||
public class FeteApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(FeteApplication.class, args);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package de.fete.adapter.in.web;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
public class HealthController {
|
||||
|
||||
@GetMapping("/health")
|
||||
public Map<String, String> health() {
|
||||
return Map.of("status", "ok");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Inbound web adapter: REST controllers, DTOs, and request/response mappers.
|
||||
*
|
||||
* <p>May depend on application and domain layers.
|
||||
*/
|
||||
package de.fete.adapter.in.web;
|
||||
@@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Outbound persistence adapter: JPA entities, Spring Data repositories, and mappers.
|
||||
*
|
||||
* <p>May depend on application and domain layers.
|
||||
*/
|
||||
package de.fete.adapter.out.persistence;
|
||||
@@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Application services: use case implementations.
|
||||
*
|
||||
* <p>May depend on domain only. Uses {@code @Service} for component scanning.
|
||||
*/
|
||||
package de.fete.application.service;
|
||||
6
backend/src/main/java/de/fete/config/package-info.java
Normal file
6
backend/src/main/java/de/fete/config/package-info.java
Normal file
@@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Configuration: Spring {@code @Configuration} and {@code @Bean} definitions.
|
||||
*
|
||||
* <p>Wiring layer — may depend on all other packages.
|
||||
*/
|
||||
package de.fete.config;
|
||||
@@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Domain model: entities and value objects.
|
||||
*
|
||||
* <p>Plain Java — no framework annotations allowed.
|
||||
* This package has no dependencies on other packages.
|
||||
*/
|
||||
package de.fete.domain.model;
|
||||
@@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Driving ports: use case interfaces that the application layer implements.
|
||||
*
|
||||
* <p>Plain Java interfaces — no framework annotations allowed.
|
||||
*/
|
||||
package de.fete.domain.port.in;
|
||||
@@ -0,0 +1,6 @@
|
||||
/**
|
||||
* Driven ports: repository and external service interfaces.
|
||||
*
|
||||
* <p>Plain Java interfaces — no framework annotations allowed.
|
||||
*/
|
||||
package de.fete.domain.port.out;
|
||||
1
backend/src/main/resources/application.properties
Normal file
1
backend/src/main/resources/application.properties
Normal file
@@ -0,0 +1 @@
|
||||
spring.application.name=fete
|
||||
Reference in New Issue
Block a user