감정 기록, 대화, 리포트, 타임캡슐 등 사용자 감정 경험을 다루는 Mooi 백엔드 서버입니다. Spring Boot 기반으로 REST API, 인증, 배치성 작업, WebSocket 연동, 데이터 마이그레이션 구성을 포함합니다.
- Java 17
- Spring Boot 3.4
- Spring Web
- Spring Data JPA
- Spring Security / OAuth2
- JWT
- MySQL
- PostgreSQL
- Redis
- Flyway
- Swagger(OpenAPI)
- WebSocket
- Gradle
- 소셜 로그인 및 인증 처리
- 감정 대화 및 분석
- 일간 리포트 및 캘린더 조회
- 타임캡슐 생성, 조회, 수정, 삭제
- 마이페이지, 알림, 출석 기능
src/main/java/com/example/emotion_storage
├── attendance
├── calendar
├── chat
├── global
├── home
├── mypage
├── notification
├── report
├── timecapsule
└── user
global: 공통 응답, 예외 처리, 보안, 필터, 설정, 유틸리티user: 로그인, 회원가입, 사용자 인증/인가chat: 감정 대화, 분석, WebSocket 연동report: 일간 리포트 관련 기능timecapsule: 타임캡슐 도메인 기능
- Java 17
- Docker / Docker Compose
.env파일
기본 프로필은 local입니다.
local: MySQL 기반 로컬 실행postgres-local: PostgreSQL 기반 로컬 실행
로컬 실행 시 예시 환경 변수:
MYSQL_ROOT_PASSWORD=
MYSQL_DATABASE=
MYSQL_USER=
MYSQL_PASSWORD=
POSTGRES_DB=
POSTGRES_USER=
POSTGRES_PASSWORD=
REDIS_PORT=6380
JWT_SECRET=
ACCESS_TOKEN_EXPIRATION_MINUTES=
REFRESH_TOKEN_EXPIRATION_DAYS=
GOOGLE_CLIENT_IDS=
AI_WEBSOCKET_URL=ws://localhost:8000/ws/chat
AI_SERVER_BASE_URL=http://localhost:8000
DISCORD_ERROR_WEBHOOK_URL=docker compose -f docker-compose.local.yml up -d- MySQL:
3308 - PostgreSQL:
5433 - Redis:
6380
./gradlew bootRunPostgreSQL 기준으로 로컬 실행하려면:
SPRING_PROFILES_ACTIVE=postgres-local ./gradlew bootRun./gradlew test애플리케이션 실행 후 Swagger UI에서 API를 확인할 수 있습니다.
/swagger-ui/index.html
Flyway가 활성화되어 있으며 마이그레이션 파일은 src/main/resources/db/migration 에 있습니다.
- 기본 활성 프로필은
local입니다. - 테스트는
Asia/Seoul타임존 기준으로 실행됩니다. - AI 서버 및 OAuth 관련 환경 변수가 없으면 일부 기능은 정상 동작하지 않을 수 있습니다.