콘텐츠로 이동

프로젝트 개요 · 기술 스택

개요

FillMap — 사용자가 방문한 장소를 짧은 영상(자유 길이, 최대 30초)으로 기록하고, 지도 위 약 100×100m 격자를 수집(개인 점령)하는 서비스. 확장 순서: Web → Android → iOS. 본 저장소는 백엔드(Spring Boot + PostgreSQL/PostGIS).

핵심 도메인 개념은 .claude/rules/glossary.md 참조 (격자 · 개인 점령 · 전역 격자 등록 · 도감 · 방문 등).

기술 스택

영역 사용 기술
언어 Java 21 (toolchain)
프레임워크 Spring Boot 4.1.0 (Web MVC, Data JPA, Validation, Security)
DB PostgreSQL 16 + PostGIS 3.4
공간 Hibernate Spatial
마이그레이션 Flyway (db/migration)
인증 Spring Security + JJWT 0.13.0 + OAuth2 Resource Server (OIDC ID Token 검증)
빌드 Gradle (wrapper)
로컬 인프라 Docker Compose (postgis 컨테이너)

빌드 · 실행

./gradlew build              # 빌드 (git hook 자동 설치 포함)
./gradlew build -x test      # 테스트 제외 빌드
./gradlew test               # 전체 테스트 (JUnit 5 + AssertJ)
./gradlew bootRun            # 앱 실행 (Flyway 자동 마이그레이션)

로컬 실행 절차:

docker compose up -d         # PostGIS 컨테이너 기동 (fillmap DB)
./gradlew bootRun            # http://localhost:8080
  • 앱 포트: 8080
  • 활성 프로파일: local (기본, application.yml)
  • 패키지 구조 · 오너십 · 로컬 DB 상세: .claude/docs/infrastructure.md

설정 · 시크릿

프로파일별 설정은 src/main/resources/application*.yml.

local 운영(prod)
DB 접속 application-local.yml (Docker) RDS + 환경변수
jwt.secret application-local.yml JWT_SECRET 환경변수
카카오 client-id application-local.yml KAKAO_CLIENT_ID 환경변수
  • jwt.access-token-ttl: PT1H (공통)
  • spring.jpa.hibernate.ddl-auto: validate (스키마는 Flyway가 소유)

커밋 · 브랜치 규칙

  • 커밋: MSG-{번호} {타입}: {요약} (git hook 강제, core.hooksPath=.githooks)
  • 브랜치: feature|fix|refactor|chore/MSG-{번호}/{설명}
  • 상세 컨벤션: .claude/rules/project-conventions.md

배포

환경 분리(local/dev/prod) 및 AWS 아키텍처 로드맵: .claude/docs/deploy.md