초보 운전자를 위한 맞춤형 연습 장소 및 코스 탐색 서비스의 백엔드. 위치기반(geospatial) 탐색이 핵심입니다.
| 분류 | 기술 |
|---|---|
| 언어/빌드 | Java 21, Gradle |
| 프레임워크 | Spring Boot 3.5 |
| 영속성 | Spring Data JPA + Hibernate Spatial, PostgreSQL/PostGIS, Flyway |
| 인증 | OAuth2 Client + JWT |
| API 문서 | SpringDoc OpenAPI (Swagger UI) |
| 품질 | Spotless, SonarCloud, JaCoCo, CodeRabbit |
| 인프라 | Docker Compose, GitHub Actions, GHCR · 운영: AWS Lightsail, Caddy · 개발: Raspberry Pi, Tailscale, Cloudflare Tunnel |
사전 요구: Docker Desktop, JDK 21
cp .env.example .env # 로컬 DB 값 확인/수정
./gradlew bootRun # spring-boot-docker-compose가 DB 자동 기동·연결- API 문서(Swagger): http://localhost:8080/swagger-ui.html
- 헬스체크: http://localhost:8080/actuator/health
./gradlew build # 컴파일 + 테스트(Testcontainers) + Spotless + JaCoCo
./gradlew spotlessApply # 포맷 자동 정리DDD + package-by-feature로 시작, 도메인이 복잡해지면 feature 단위로 점진적 헥사고날 전환. 핵심 원칙: ① 로직은 service ② repository는 인터페이스 ③ 규칙은 entity.
- 데이터 모델: docs/erd.md
- 아키텍처 결정: docs/adr/
- 기능 스펙: docs/specs/
- 개발 가이드: CLAUDE.md
- 기능 개발:
feat/#이슈번호-기능→developPR → 리뷰·CI 통과 후 머지 - 개발 서버:
develop머지 시 ARM64 이미지 빌드 → GHCR → Raspberry Pi(pi2) 자동 배포 (Tailscale OIDC + SSH, 실패 시 자동 롤백) - 릴리즈:
develop→mainPR → 머지 시 GitHub Actions가 이미지 빌드 → GHCR → Lightsail 자동 배포 - 서버 주소: 운영
https://api.stillstar.store· 개발https://dev-api.stillstar.store - 인프라 구성도·접근 제어·설정값: docs/infra.md
- 배포 인프라 결정: ADR 0005(운영) · ADR 0017(개발 서버)