You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
server/src/main/java/moment/
├── auth/ # 인증 (JWT, OAuth)
├── moment/ # 모멘트 (핵심 도메인)
├── comment/ # 에코 (댓글)
├── group/ # 그룹 관리
├── like/ # 좋아요
├── notification/ # 알림 (SSE + FCM)
├── report/ # 신고
├── storage/ # 파일 저장 (S3)
├── user/ # 사용자
├── admin/ # 관리자
└── global/ # 공통 인프라
각 모듈은 domain → service → infrastructure → presentation 계층으로 구성
Frontend - Feature-Based Architecture
client/src/
├── app/ # 라우트, API 설정, QueryClient
├── features/ # 기능 모듈 (auth, moment, comment, group ...)
├── pages/ # 페이지 컴포넌트
├── shared/ # 공통 (design-system, hooks, store, styles)
└── widgets/ # 재사용 위젯
시작하기
사전 요구사항
Node.js 20.x
pnpm 9
Java 21
Docker (MySQL 실행용)
Backend
cd server
# MySQL 실행
docker-compose up -d moment-dev-mysql
# 서버 실행
./gradlew bootRun
Web Frontend
cd client
pnpm install
pnpm dev
Admin Panel
cd admin
pnpm install
pnpm dev
Mobile App
cd app
pnpm install
pnpm start
주요 스크립트
Client
pnpm dev # 개발 서버
pnpm build # 프로덕션 빌드
pnpm test# Jest 테스트
pnpm cypress:open # E2E 테스트
pnpm lint # ESLint
pnpm format # Prettier
pnpm storybook # Storybook (port 6006)
Server
./gradlew bootRun # 개발 서버
./gradlew test# 전체 테스트
./gradlew fastTest # 빠른 테스트 (E2E 제외)
./gradlew e2eTest # E2E 테스트