Pill-Buddy는 사용자의 매일 복용해야 할 약이나 영양제를 쉽게 관리하고, 복용 시간에 맞춰 알림을 받을 수 있도록 돕는 서비스입니다. 약을 잊지 않고 제때 복용하도록 알림을 제공하며, 필요에 따라 보호자에게 복용 여부 확인까지 지원합니다.
“약 복용을 잊지 않고, 내 건강을 Pill-Buddy와 함께 지키세요!”
사용자는 자신이 복용하는 약에 대해 복용 메세지 알림을 받을 수 있습니다. 15분이 지나도 사용자가 약을 복용하지 않은 경우, 보호자에게 약 복용 확인 알림 메세지가 전송됩니다.
e약은요 공공 API를 통해 약 이름, 회사명, 품목 기준 코드로 원하는 약 정보를 검색할 수 있습니다. 약의 주요 정보와 안전한 복용법을 언제든지 쉽게 확인할 수 있어, 자신이 복용하는 약에 대한 신뢰를 높여줍니다.
보호자 추가 기능을 통해 사용자의 약 복용 여부를 확인하고 관리할 수 있습니다. 가족이나 보호자와 함께 복용 정보를 공유함으로써 건강 관리가 보다 체계적으로 이루어질 수 있습니다.
프로젝트 구조 보기(눌러서 보기)
├── main
│ ├── kotlin
│ │ └── medinine
│ │ └── pill_buddy
│ │ ├── PillBuddyApplication.kt
│ │ │
│ │ ├── domain
│ │ │ ├── medicationApi
│ │ │ │ ├── config
│ │ │ │ │ ├── EntityToDtoMapper.kt
│ │ │ │ │ └── RestTemplateConfig.kt
│ │ │ │ ├── controller
│ │ │ │ │ ├── MedicationApiController.kt
│ │ │ │ │ └── MedicationWebController.kt
│ │ │ │ ├── dto
│ │ │ │ │ ├── JsonForm.kt
│ │ │ │ │ ├── MedicationDTO.kt
│ │ │ │ │ ├── MedicationForm.kt
│ │ │ │ │ └── MyPageImpl.kt
│ │ │ │ ├── entity
│ │ │ │ │ └── Medication.kt
│ │ │ │ ├── repository
│ │ │ │ │ └── MedicationApiRepository.kt
│ │ │ │ └── service
│ │ │ │ └── MedicationApiService.kt
│ │ │ │
│ │ │ ├── notification
│ │ │ │ ├── controller
│ │ │ │ │ ├── NotificationController.kt
│ │ │ │ │ └── NotificationWebController.kt
│ │ │ │ ├── dto
│ │ │ │ │ ├── NotificationDTO.kt
│ │ │ │ │ └── UpdateNotificationDTO.kt
│ │ │ │ ├── entity
│ │ │ │ │ └── Notification.kt
│ │ │ │ ├── provider
│ │ │ │ │ └── SmsProvider.kt
│ │ │ │ ├── repository
│ │ │ │ │ └── NotificationRepository.kt
│ │ │ │ └── service
│ │ │ │ └── NotificationService.kt
│ │ │ │
│ │ │ ├── record
│ │ │ │ ├── dto
│ │ │ │ │ └── RecordDTO.kt
│ │ │ │ ├── entity
│ │ │ │ │ ├── Record.kt
│ │ │ │ │ └── Taken.kt
│ │ │ │ ├── repository
│ │ │ │ │ └── RecordRepository.kt
│ │ │ │ └── service
│ │ │ │ ├── RecordService.kt
│ │ │ │ └── RecordServiceImpl.kt
│ │ │ │
│ │ │ ├── user
│ │ │ │ ├── caregiver
│ │ │ │ │ ├── controller
│ │ │ │ │ │ └── CaregiverController.kt
│ │ │ │ │ ├── entity
│ │ │ │ │ │ └── Caregiver.kt
│ │ │ │ │ ├── repository
│ │ │ │ │ │ └── CaregiverRepository.kt
│ │ │ │ │ └── service
│ │ │ │ │ └── CaregiverService.kt
│ │ │ │ │
│ │ │ │ ├── caretaker
│ │ │ │ │ ├── controller
│ │ │ │ │ │ └── CaretakerController.kt
│ │ │ │ │ ├── dto
│ │ │ │ │ │ └── CaretakerCaregiverDTO.kt
│ │ │ │ │ ├── entity
│ │ │ │ │ │ ├── Caretaker.kt
│ │ │ │ │ │ └── CaretakerCaregiver.kt
│ │ │ │ │ ├── repository
│ │ │ │ │ │ ├── CaretakerCaregiverRepository.kt
│ │ │ │ │ │ └── CaretakerRepository.kt
│ │ │ │ │ └── service
│ │ │ │ │ ├── CaretakerService.kt
│ │ │ │ │ └── CaretakerServiceImpl.kt
│ │ │ │ │
│ │ │ │ ├── controller
│ │ │ │ │ ├── AuthController.kt
│ │ │ │ │ └── UserController.kt
│ │ │ │ ├── dto
│ │ │ │ │ ├── JoinDto.kt
│ │ │ │ │ ├── LoginDto.kt
│ │ │ │ │ ├── UserDto.kt
│ │ │ │ │ ├── UserPasswordUpdateDto.kt
│ │ │ │ │ ├── UserType.kt
│ │ │ │ │ └── UserUpdateDto.kt
│ │ │ │ ├── entity
│ │ │ │ │ ├── Role.kt
│ │ │ │ │ └── User.kt
│ │ │ │ │── service
│ │ │ │ │ ├── AuthService.kt
│ │ │ │ │ ├── CustomUserDetails.kt
│ │ │ │ │ ├── MyUserDetailService.kt
│ │ │ │ │ └── UserService.kt
│ │ │ │ │
│ │ │ │ ├── oauth
│ │ │ │ │ ├── constant
│ │ │ │ │ │ ├── KakaoProperty.kt
│ │ │ │ │ │ └── NaverProperty.kt
│ │ │ │ │ ├── controller
│ │ │ │ │ │ └── OAuthController.kt
│ │ │ │ │ ├── dto
│ │ │ │ │ │ ├── KakaoUserResponse.kt
│ │ │ │ │ │ ├── NaverUserResponse.kt
│ │ │ │ │ │ ├── OAuthProfile.kt
│ │ │ │ │ │ └── OAuthTokenResponse.kt
│ │ │ │ │ └── service
│ │ │ │ │ ├── OAuthClient.kt
│ │ │ │ │ ├── SocialLoginService.kt
│ │ │ │ │ ├── UserReader.kt
│ │ │ │ │ ├── kakao
│ │ │ │ │ │ ├── KakaoAuthClient.kt
│ │ │ │ │ │ ├── KakaoClient.kt
│ │ │ │ │ │ └── KakaoProfileClient.kt
│ │ │ │ │ └── naver
│ │ │ │ │ ├── NaverAuthClient.kt
│ │ │ │ │ ├── NaverClient.kt
│ │ │ │ │ └── NaverProfileClient.kt
│ │ │ │ │
│ │ │ │ └── profile
│ │ │ │ ├── controller
│ │ │ │ │ └── ProfileController.kt
│ │ │ │ ├── dto
│ │ │ │ │ └── ProfileUploadDto.kt
│ │ │ │ ├── entity
│ │ │ │ │ └── Image.kt
│ │ │ │ ├── repository
│ │ │ │ │ └── ImageRepository.kt
│ │ │ │ └── service
│ │ │ │ ├── ProfileService.kt
│ │ │ │ └── uploader
│ │ │ │ ├── CaregiverProfileUploader.kt
│ │ │ │ ├── CaretakerProfileUploader.kt
│ │ │ │ └── ProfileUploader.kt
│ │ │ │ │
│ │ │ │ │
│ │ │ └── userMedication
│ │ │ ├── controller
│ │ │ │ └── UserMedicationController.kt
│ │ │ ├── dto
│ │ │ │ └── UserMedicationDTO.kt
│ │ │ ├── entity
│ │ │ │ ├── Frequency.kt
│ │ │ │ ├── MedicationType.kt
│ │ │ │ └── UserMedication.kt
│ │ │ ├── repository
│ │ │ │ └── UserMedicationRepository.kt
│ │ │ └── service
│ │ │ ├── UserMedicationService.kt
│ │ │ └── UserMedicationServiceImpl.kt
│ │ └── global
│ │ ├── advice
│ │ │ └── GlobalExceptionHandler.kt
│ │ ├── config
│ │ │ ├── FeignConfig.kt
│ │ │ ├── RedisCacheConfig.kt
│ │ │ ├── RedisConfig.kt
│ │ │ ├── SecurityConfig.kt
│ │ │ └── SwaggerConfig.kt
│ │ ├── entity
│ │ │ └── BaseTimeEntity.kt
│ │ ├── exception
│ │ │ ├── ErrorCode.kt
│ │ │ ├── ErrorResponse.kt
│ │ │ └── PillBuddyCustomException.kt
│ │ ├── jwt
│ │ │ ├── JwtAccessDeniedHandler.kt
│ │ │ ├── JwtAuthenticationEntryPoint.kt
│ │ │ ├── JwtAuthenticationFilter.kt
│ │ │ ├── JwtToken.kt
│ │ │ └── JwtTokenProvider.kt
│ │ ├── redis
│ │ │ └── RedisUtils.kt
│ │ └── util
│ │ └── UploadUtils.kt
│ │
│ └── resources
│ ├── application-db.yml
│ ├── application.yml
│ ├── static
│ │ ├── LoginForm.html
│ │ ├── afterLogin.html
│ │ ├── css
│ │ │ └── styles.css
│ │ ├── index.html
│ │ └── js
│ │ └── scripts.js
│ └── templates
│ ├── create_notification.html
│ ├── medication
│ │ ├── medication.html
│ │ ├── medicationList.html
│ │ └── search.html
│ ├── notifications.html
│ └── update_notification.html
└── test
├── kotlin
│ └── medinine
│ └── pill_buddy
│ ├── PillBuddyApplicationTests.kt
│ ├── domain
│ │ ├── medicationApi
│ │ │ ├── controller
│ │ │ │ └── MedicationApiControllerTest.kt
│ │ │ └── service
│ │ │ └── MedicationApiServiceTest.kt
│ │ ├── notification
│ │ │ ├── controller
│ │ │ │ └── NotificationControllerTest.kt
│ │ │ ├── repository
│ │ │ │ └── NotificationRepositoryTest.kt
│ │ │ └── service
│ │ │ └── NotificationServiceTest.kt
│ │ ├── user
│ │ │ ├── caregiver
│ │ │ │ ├── controller
│ │ │ │ │ └── CaregiverControllerTest.kt
│ │ │ │ ├── repository
│ │ │ │ │ └── CaregiverRepositoryTest.kt
│ │ │ │ └── service
│ │ │ │ └── CaregiverServiceTest.kt
│ │ │ ├── caretaker
│ │ │ │ ├── controller
│ │ │ │ │ └── CaretakerControllerTest.kt
│ │ │ │ └── service
│ │ │ │ └── CaretakerServiceImplTest.kt
│ │ │ ├── controller
│ │ │ │ ├── AuthControllerTest.kt
│ │ │ │ └── UserControllerTest.kt
│ │ │ ├── oauth
│ │ │ │ └── service
│ │ │ │ └── KakaoOAuthServiceTest.kt
│ │ │ ├── profile
│ │ │ │ └── service
│ │ │ │ ├── ProfileServiceTest.kt
│ │ │ │ └── uploader
│ │ │ │ ├── CaregiverProfileUploaderTest.kt
│ │ │ │ └── CaretakerProfileUploaderTest.kt
│ │ │ └── service
│ │ │ ├── AuthServiceTest.kt
│ │ │ ├── MyUserDetailServiceTest.kt
│ │ │ └── UserServiceTest.kt
│ │ └── userMedication
│ │ ├── controller
│ │ │ └── UserMedicationControllerTest.kt
│ │ └── service
│ │ └── UserMedicationServiceImplTest.kt
│ └── global
│ └── jwt
│ └── JwtTokenProviderTest.kt
└── resources
└── application.yml
Backend | Backend | Backend | Backend | Backend |
---|---|---|---|---|
이진우 (팀장) | 안홍제 | 김성겸 | 신현우 | 양소희 |
프로젝트 총괄 관리 팀원 간 소통 조율 보호자 기능 구현 |
Github 관리 회원 관리 기능 구현 JWT 인증 로직 구현 소셜 로그인 구현 |
프로젝트 기획 사용자 기능 구현 Redis 쿼리 성능 개선 |
약 정보 검색 기능 구현 (e약은요 API) Thymeleaf 화면 구현 |
알림 기능 구현 (coolsms API) Thymeleaf 화면 구현 |