- νΈλ μ΄λμ μκ° λ§μμ§λ©΄μ, νΈλ μ΄λλ§λ€ μ€λ ₯μ νΈμ°¨κ° ν¬κ³ , κ·Έμ λ°λ₯Έ νμλ€μ λΆλ§λ μ¦κ°νκ³ μμ΅λλ€.
- νΉν μΌλΆ νΈλ μ΄λλ νμμ λͺΈ μνλ 체νμ λΆκ· ν λ±μ κ³ λ €νμ§ μκ³ λμΌν λ°©μμ μ΄λμ μ μ©ν΄, λΆμμ΄λ 체ν λΆκ· ν μ νμ κ°μ λΆμ μ μΈ κ²°κ³Όλ₯Ό μ΄λν©λλ€.
- μ΄λ¬ν λ¬Έμ λ μμ λ―Έλμ΄μμλ μ½κ² νμΈν μ μμΌλ©°, νμ μ μ₯μμλ μ΄λ€ νΈλ μ΄λμκ² PTλ₯Ό λ°μμΌ ν μ§ νλ¨νκΈ° μ΄λ €μ΄ μν©μ λλ€.
- κ²°κ³Όμ μΌλ‘, μμ κ³Ό λ§μ§ μλ νΈλ μ΄λλ₯Ό μ ννκ² λ κ²½μ° μκ°, λ, κ±΄κ° λͺ¨λμμ μν΄λ₯Ό λ³Ό κ°λ₯μ±μ΄ λμ΅λλ€.
- νμλ€μ΄ PTλ₯Ό λ°μ ν, νΈλ μ΄λμ λν 리뷰λ₯Ό λ¨κΈΈ μ μλ μμ€ν μ λμ ν΄ κ°μ μ μΌλ‘ νΈλ μ΄λμ μ€νμΌ, μ λ¬Έμ±, μν΅ λ°©μ λ±μ νμΈν μ μλλ‘ ν©λλ€.
- νμλ€μ νΈλ μ΄λμ μ€μ μ€νμΌκ³Ό μ λ¬Έμ±μ μ¬μ μ νμ ν μ μμ΄, μμ μκ² λ§λ νΈλ μ΄λλ₯Ό μ νν νλ₯ μ΄ λμμ§λλ€.
- κ°κ΄μ μ΄κ³ μ λ’°λ λμ νκ° μμ€ν μ ν΅ν΄ νΈλ μ΄λλ€ κ°μ 건μ ν κ²½μμ΄ μ λλλ©°, μμ°μ€λ½κ² μ€λ ₯ μκ³ μ± μκ° μλ νΈλ μ΄λλ€μ΄ λ보μ΄κ² λ©λλ€.
- κ²°κ³Όμ μΌλ‘ νΌμ€λ νΈλ μ΄λ μμ₯ μ λ°μ μλΉμ€ νμ§μ΄ ν₯μλκ³ , νμλ€μ λ§μ‘±λμ μ¬λ±λ‘λ₯ λ ν¨κ» μ¦κ°ν κ²μΌλ‘ κΈ°λλ©λλ€.
- Backend : Spring Boot, Spring Data JPA, Spring Security
- Database : MySQL, Redis
- Test : JUnit
- Infra : AWS(EC2, RDS)
- CI/CD : Docker, GitHub Actions
- μ¬μ©μλ μ΄λ©μΌ, λΉλ°λ²νΈ, μ£Όμ λ±μ μ΄μ©ν΄ νμκ°μ ν μ μμ΅λλ€.
- μ¬μ©μλ κ°μ μ μ¬μ©ν μ΄λ©μΌ, λΉλ°λ²νΈλ₯Ό μ΄μ©ν΄ λ‘κ·ΈμΈν μ μμ΅λλ€.
- μ¬μ©μλ λ§μ΄νμ΄μ§λ₯Ό ν΅ν΄ κ°μΈ μ 보λ₯Ό μ‘°νν μ μμ΅λλ€.
- μ¬μ©μλ κ°μΈ μ 보λ₯Ό μμ ν μ μμ΅λλ€.
- μ¬μ©μλ νμμ νν΄ν μ μμ΅λλ€.
- μ¬μ©μλ μ£Όλ³ ν¬μ€μ₯μ μ‘°νν μ μμ΅λλ€.
- μ¬μ©μλ νΉμ ν¬μ€μ₯μ κ²μνμ¬ μ‘°νν μ μμ΅λλ€.
- μ¬μ©μλ ν¬μ€μ₯ λ³ νΈλ μ΄λλ₯Ό μ‘°νν μ μμ΅λλ€.
- μΌλ° νμμ νΈλ μ΄λμ λν 리뷰λ₯Ό μμ±ν μ μμ΅λλ€.
- μΌλ° νμμ μμ μ΄ μ΄ λ¦¬λ·°λ₯Ό μ‘°νν μ μμ΅λλ€.
- μΌλ° νμμ μμ μ΄ μ΄ λ¦¬λ·°λ₯Ό μμ ν μ μμ΅λλ€.
- μΌλ° νμμ μμ μ΄ μ΄ λ¦¬λ·°λ₯Ό μμ ν μ μμ΅λλ€.
- νΈλ μ΄λλ μμ μκ² λ¬λ¦° 리뷰λ₯Ό μ‘°νν μ μμ΅λλ€.
- νΈλ μ΄λλ μμ μκ² λ¬λ¦° 리뷰μ λ΅κΈμ λ¬ μ μμ΅λλ€.
| κΈ°λ₯ | URL | HTTP Method | μΈμ¦ μ¬λΆ |
|---|---|---|---|
| λ‘κ·ΈμΈ | /api/members/login | POST | X |
| λ‘κ·Έμμ | /api/members/logout | POST | O |
| νμ νν΄ | /api/members/{id} | DELETE | O |
| κΈ°λ₯ | URL | HTTP Method | μΈμ¦ μ¬λΆ |
|---|---|---|---|
| νμκ°μ | /api/normembers | POST | X |
| λ§μ΄νμ΄μ§ | /api/normembers/{id} | GET | O |
| νμ μ 보 μμ | /api/normembers/{id} | PATCH | O |
| λΉλ°λ²νΈ λ³κ²½ | /api/normembers/{id}/password | PATCH | O |
| λ΄κ° μ΄ λ¦¬λ·° μ‘°ν | /api/normembers/{id}/reviews | GET | O |
| κΈ°λ₯ | URL | HTTP Method | μΈμ¦ μ¬λΆ |
|---|---|---|---|
| νμκ°μ | /api/trainers | POST | X |
| λ§μ΄νμ΄μ§ | /api/trainers/{id} | GET | O |
| νμ μ 보 μμ | /api/trainers/{id} | PATCH | O |
| λΉλ°λ²νΈ λ³κ²½ | /api/trainers/{id}/password | PATCH | O |
| λ΄κ² λ¬λ¦° 리뷰 μ‘°ν | /api/trainers/{id}/reviews | GET | O |
| κΈ°λ₯ | URL | HTTP Method | μΈμ¦ μ¬λΆ |
|---|---|---|---|
| ν¬μ€μ₯ λ³ νΈλ μ΄λ μ‘°ν | /api/gymtrainers/{gymId}/trainers | GET | X |
| κΈ°λ₯ | URL | HTTP Method | μΈμ¦ μ¬λΆ |
|---|---|---|---|
| 리뷰 μμ± | /api/reviews | POST | O |
| 리뷰 μμ | /api/reviews/{id} | PATCH | O |
| 리뷰 μμ | /api/reviews/{id} | DELETE | O |
| νΈλ μ΄λ λ³ λ¦¬λ·° μ‘°ν | /api/reviews/{trainerId} | GET | X |
src
ββββmain
β ββββjava
β β ββββproject
β β ββββgymnawa
β β β GymnawaApplication.java
β β β
β β ββββauth
β β β ββββcookie
β β β β ββββutil
β β β β CookieUtil.java
β β β β
β β β ββββdomain
β β β β SecurityWhiteListProperties.java
β β β β
β β β ββββfilter
β β β β CustomLoginFilter.java
β β β β CustomLogoutFilter.java
β β β β JwtAuthenticationFilter.java
β β β β JwtExceptionHandleFilter.java
β β β β
β β β ββββjwt
β β β β ββββcontroller
β β β β β ReissueController.java
β β β β β
β β β β ββββdto
β β β β β JwtInfoDto.java
β β β β β
β β β β ββββerror
β β β β β CustomAuthException.java
β β β β β
β β β β ββββservice
β β β β β ReissueService.java
β β β β β ReissueServiceImpl.java
β β β β β
β β β β ββββutil
β β β β JwtUtil.java
β β β β
β β β ββββoauth
β β β ββββdomain
β β β β CustomOAuth2UserDetails.java
β β β β GoogleUserInfo.java
β β β β KakaoUserInfo.java
β β β β OAuth2UserInfo.java
β β β β
β β β ββββhandler
β β β β CustomSuccessHandler.java
β β β β
β β β ββββservice
β β β CustomOauth2UserService.java
β β β CustomUserDetailsService.java
β β β
β β ββββconfig
β β β EmailConfig.java
β β β EncodeConfig.java
β β β JpaAuditingConfig.java
β β β RedisConfig.java
β β β RestTemplateConfig.java
β β β SecurityConfig.java
β β β
β β ββββdomain
β β β ββββcommon
β β β β ββββapi
β β β β β ApiResponse.java
β β β β β
β β β β ββββerror
β β β β β ββββdto
β β β β β β ErrorCode.java
β β β β β β ErrorResponse.java
β β β β β β
β β β β β ββββexception
β β β β β β CustomException.java
β β β β β β
β β β β β ββββhandler
β β β β β GlobalExceptionHandler.java
β β β β β
β β β β ββββetcfield
β β β β Address.java
β β β β BaseTime.java
β β β β ContractStatus.java
β β β β
β β β ββββemail
β β β β ββββcontroller
β β β β β EmailApiController.java
β β β β β
β β β β ββββdto
β β β β β EmailDto.java
β β β β β
β β β β ββββservice
β β β β EmailService.java
β β β β RedisService.java
β β β β
β β β ββββgym
β β β β ββββcontroller
β β β β β GymApiController.java
β β β β β
β β β β ββββdto
β β β β β GymDto.java
β β β β β
β β β β ββββentity
β β β β β Gym.java
β β β β β
β β β β ββββrepository
β β β β β GymRepository.java
β β β β β
β β β β ββββservice
β β β β GymService.java
β β β β
β β β ββββgymtrainer
β β β β ββββcontroller
β β β β β GymTrainerApiController.java
β β β β β
β β β β ββββdto
β β β β β GymTrainerRequestDto.java
β β β β β GymTrainerResponseDto.java
β β β β β GymTrainerViewDto.java
β β β β β
β β β β ββββentity
β β β β β GymTrainer.java
β β β β β
β β β β ββββrepository
β β β β β GymTrainerRepository.java
β β β β β
β β β β ββββservice
β β β β GymTrainerService.java
β β β β
β β β ββββkakao
β β β β ββββdto
β β β β β KakaoApiResponse.java
β β β β β MetaData.java
β β β β β
β β β β ββββservice
β β β β KakaoService.java
β β β β
β β β ββββmember
β β β β ββββcontroller
β β β β β MemberApiController.java
β β β β β
β β β β ββββdto
β β β β β MemberHomeInfoDto.java
β β β β β MemberLoginDto.java
β β β β β MemberOauthInfoDto.java
β β β β β MemberSessionDto.java
β β β β β PasswordDto.java
β β β β β UpdatePasswordDto.java
β β β β β
β β β β ββββentity
β β β β β β Member.java
β β β β β β
β β β β β ββββetcfield
β β β β β Gender.java
β β β β β Role.java
β β β β β
β β β β ββββrepository
β β β β β MemberRepository.java
β β β β β
β β β β ββββservice
β β β β MemberService.java
β β β β
β β β ββββnormember
β β β β ββββcontroller
β β β β β NorMemberApiController.java
β β β β β
β β β β ββββdto
β β β β β MemberEditDto.java
β β β β β MemberSaveDto.java
β β β β β MemberViewDto.java
β β β β β
β β β β ββββentity
β β β β β NorMember.java
β β β β β
β β β β ββββrepository
β β β β β NorMemberRepository.java
β β β β β
β β β β ββββservice
β β β β NorMemberService.java
β β β β
β β β ββββptmembership
β β β β ββββcontroller
β β β β β PtMembershipApiController.java
β β β β β
β β β β ββββdto
β β β β β PtMembershipSaveDto.java
β β β β β PtMembershipViewDto.java
β β β β β
β β β β ββββentity
β β β β β PtMembership.java
β β β β β
β β β β ββββrepository
β β β β β PtMembershipRepository.java
β β β β β
β β β β ββββservice
β β β β PtMembershipService.java
β β β β
β β β ββββreview
β β β β ββββcontroller
β β β β β ReviewApiController.java
β β β β β
β β β β ββββdto
β β β β β ReviewEditDto.java
β β β β β ReviewSaveDto.java
β β β β β ReviewViewDto.java
β β β β β
β β β β ββββentity
β β β β β Review.java
β β β β β
β β β β ββββrepository
β β β β β ReviewRepository.java
β β β β β
β β β β ββββservice
β β β β ReviewService.java
β β β β
β β β ββββtrainer
β β β ββββcontroller
β β β β TrainerApiController.java
β β β β
β β β ββββdto
β β β β TrainerEditDto.java
β β β β TrainerSaveDto.java
β β β β TrainerViewDto.java
β β β β
β β β ββββentity
β β β β Trainer.java
β β β β
β β β ββββrepository
β β β β TrainerRepository.java
β β β β
β β β ββββservice
β β β TrainerService.java
β β β
β β ββββtestdata
β β TestData.java
β β
β ββββresources
β β application.yml
β β
β ββββstatic
β ββββtemplates
ββββtest
ββββjava
β ββββproject
β ββββgymnawa
β ββββauth
β β ββββfilter
β β β CustomLoginFilterTest.java
β β β CustomLogoutFilterTest.java
β β β JwtAuthenticationFilterTest.java
β β β
β β ββββjwt
β β β ββββservice
β β β ReissueServiceImplTest.java
β β β
β β ββββoauth
β β ββββservice
β β CustomUserDetailsServiceTest.java
β β
β ββββconfig
β β SecurityTestConfig.java
β β
β ββββdomain
β ββββemail
β β ββββservice
β β EmailServiceTest.java
β β
β ββββgymtrainer
β β ββββservice
β β GymTrainerServiceTest.java
β β
β ββββmember
β β ββββcontroller
β β β MemberApiControllerTest.java
β β β
β β ββββservice
β β MemberServiceTest.java
β β
β ββββnormember
β β ββββcontroller
β β β NorMemberApiControllerTest.java
β β β
β β ββββservice
β β NorMemberServiceTest.java
β β
β ββββreview
β β ββββcontroller
β β β ReviewApiControllerTest.java
β β β
β β ββββservice
β β ReviewServiceTest.java
β β
β ββββtrainer
β ββββcontroller
β β TrainerApiControllerTest.java
β β
β ββββrepository
β β TrainerRepositoryTest.java
β β
β ββββservice
β TrainerServiceTest.java
β
ββββresources
application.yml