세상에서 가장 쉬운 운동기록 앱 GymNote
나만의 운동 루틴을 설정해 진행한 운동을 기록해보세요.
지역별 운동 커뮤니티 게시판에서 서로 소통할 수 있는 운동 루틴 기록 및 커뮤니티 앱입니다.
lgm1007 | Chiloli |
---|---|
![]() |
![]() |
- Spring Boot 2.7.18
- Java 17
- PostgreSQL
- Docker
- GitHub Action
# 사전에 Docker Desktop 설치 필요
# docker-compose로 구성된 컨테이너 빌드 및 실행
gymnote-BE > docker compose up -d
# Docker 이미지 빌드 및 실행
gymnote-BE > docker build -t gymnote .
gymnote-BE > docker run -p 8080:8080 -e JAVA_OPTS=-Dspring.profiles.active=local gymnote
프로젝트 구조는 계층형, 개발 방법론은 DDD 따름
gymnote-BE
├── routine
│ ├── application
│ │ ├── RoutineService.java
│ │ └── dto
│ │ ├── CreateRoutineRequest.java
│ │ └── RoutineResponse.java
│ ├── domain
│ │ ├── Routine.java
│ │ ├── Exercise.java
│ │ └── RoutineRepository.java ⬅️ 인터페이스
│ ├── infrastructure
│ │ └── RoutineRepositoryImpl.java ⬅️ 구현체
│ └── presentation
│ └── RoutineController.java
└── shared
└── BaseEntity.java
- 나만의 운동 루틴을 추가 및 편집한다.
- 오늘 일자로 선택한 루틴에 해당하는 운동을 기록한다.
- 운동 기록이 완료된 일자는 오늘의 운동 완료한 날로 기록된다.
- 그동안 수행해 온 운동 기록의 운동 볼륨을 차트로 확인할 수 있다.
- 운동 커뮤니티의 게시글을 조회할 수 있다. (v2)
- 운동 커뮤니티에 게시글을 작성할 수 있다. (v2)
- 내가 작성한 운동 커뮤니티의 게시글을 수정 및 삭제할 수 있다. (v2)
erDiagram
Member {
varchar(100) email PK "이메일"
varchar(255) name "이름"
varchar(20) oauthProvider UK "OAUTH 제공자"
varchar(100) oauthId UK "OAUTH 고유ID"
timestamp createdDate "최초가입일자"
timestamp lastLoginDate "최근로그인일자"
}
Routine {
bigint routineId PK "루틴ID"
varchar(255) routineName "루틴이름"
varchar(100) email FK "회원이메일"
}
Exercise {
bigint exerciseId PK "운동ID"
bigint routineId FK "루틴ID"
varchar(50) exerciseName "운동이름"
varchar(30) exerciseTarget "운동부위"
int repetitions "운동횟수"
int weight "중량"
varchar(10) weightUnit "중량단위"
int sets "세트수"
}
Record {
bigint recordId PK "운동기록ID"
varchar(100) email FK "회원이메일"
varchar(255) routineName "루틴이름"
timestamp startDate "운동시작일시"
timestamp recordDate "운동완료일시"
}
RecordExercise {
bigint recordId FK "운동기록ID"
varchar(50) exerciseName "운동이름"
varchar(30) exerciseTarget "운동부위"
int volumn "운동볼륨"
}
MemberGoals {
bigint statusId PK "회원상태ID"
varchar(100) email FK "회원이메일"
varchar(30) goals "운동목표"
}
Member ||--o{ Routine : 1n
Routine ||--o{ Exercise : 1n
Member ||--|{ Record : 1n
Record ||--o{ RecordExercise : 1n
Member ||--|| MemberGoals : 11
erDiagram
Member {
varchar(100) email PK "이메일"
varchar(255) name "이름"
varchar(20) oauthProvider UK "OAUTH 제공자"
varchar(100) oauthId UK "OAUTH 고유ID"
timestamp createdDate "최초가입일자"
timestamp lastLoginDate "최근로그인일자"
}
Board {
bigint boardId PK "게시글ID"
varchar(100) email FK "회원이메일"
text content "게시글내용"
int hits "조회수"
timestamp createdDate "최초등록일자"
timestamp lastModifiedDate "최근수정일자"
}
BoardImage {
bigint imageId PK "게시글이미지ID"
bigint boardId FK "게시글ID"
text imagePath "이미지저장경로"
}
Member ||--o{ Board : 1n
Board ||--|{ BoardImage : 1n