홈페이지를 서버와 프론트로 나눈 이유
처음 홈페이지는 Spring Boot 하나가 "안녕하세요" 문자열을 돌려주는 앱이었습니다. 기술블로그를 붙이면서 서버와 프론트를 나눴습니다.
구조
브라우저 → web (SvelteKit SSR) → api (Spring Boot). 나중에 Tauri 관리자 앱도 같은 api 를 씁니다
| 저장소 | 기술 | 역할 |
|---|---|---|
claudharmony-api |
Java 25 LTS, Spring Boot 4.1 | 글 조회 API, OpenAPI 문서 |
claudharmony-web |
SvelteKit (TypeScript), pnpm 모노레포 | 홈페이지 + 기술블로그 (SSR) |
왜 SvelteKit + Tauri인가
- 같은 SvelteKit 코드를 웹에서는 SSR로, 앱에서는 정적 빌드로 Tauri에 넣을 수 있습니다.
- 내부 관리자 페이지는 공개 URL 없이 데스크톱 앱(Tauri)으로 만들 계획입니다. 인터넷에 노출되지 않고, 로컬 도구(kubectl, terraform)와 연동하기도 쉽습니다.
API 서버 계층
interfaces → application → domain ← infrastructure 순서로 의존합니다 (위 그림 오른쪽). 글은 지금 markdown 파일로 관리합니다. Repository 인터페이스는 domain에 두고 구현은 infrastructure에 둡니다. 그래서 DB를 도입할 때 구현체 하나만 바꾸면 됩니다.