지역별 노인 맞춤형 사투리 음성인식 서비스를 제공하는 AI 기반 복지 플랫폼 Silver Bridge의 백엔드 서버입니다.
Silver Bridge Backend는 고령층의 디지털 소외를 해소하기 위해
사투리 기반 음성인식(STT), 감정 분석, TTS, 일정관리, 보호자 연동 기능 등을 제공하는 Spring Boot 기반 서버입니다.
- Java 17
- Spring Boot 3.x
- Gradle
- Spring Security + JWT
- JPA/Hibernate
- MariaDB
- AWS (EC2, S3, Route53, Nginx)
- FastAPI (ASR/STT 서버)
└── 📁 backend
├── 📄 asr_server.py
├── 📄 build.gradle.kts
├── 📄 docker-compose.yml
├── 📄 emotion_server.py
├── 📄 settings.gradle.kts
└── 📁 src
├── 📁 main
│ ├── 📁 java
│ │ └── 📁 com
│ │ └── 📁 silverbridge
│ │ └── 📁 backend
│ │ ├── 📄 BackendApplication.java
│ │ ├── 📁 config
│ │ │ ├── 📄 AppConfig.java
│ │ │ ├── 📄 ChatConfig.java
│ │ │ ├── 📄 RestTemplateConfig.java
│ │ │ ├── 📄 SecurityConfig.java
│ │ │ └── 📄 WebClientConfig.java
│ │ ├── 📁 controller
│ │ │ ├── 📄 EmotionController.java
│ │ │ ├── 📄 HealthCheckController.java
│ │ │ ├── 📄 KakaoAuthController.java
│ │ │ ├── 📄 SmsController.java
│ │ │ ├── 📄 SocialInfoController.java
│ │ │ ├── 📄 UserController.java
│ │ │ ├── 📁 calendar
│ │ │ │ └── 📄 CalendarController.java
│ │ │ ├── 📁 chatbot
│ │ │ │ └── 📄 ChatController.java
│ │ │ ├── 📁 guardian
│ │ │ │ └── 📄 GuardianController.java
│ │ │ └── 📁 mypage
│ │ │ ├── 📄 MemberMyPageController.java
│ │ │ └── 📄 MyPageCommonController.java
│ │ ├── 📄 docker-compose.yml
│ │ ├── 📁 domain
│ │ │ ├── 📄 RefreshToken.java
│ │ │ ├── 📄 User.java
│ │ │ ├── 📁 calendar
│ │ │ │ └── 📄 CalendarEvent.java
│ │ │ └── 📁 chatbot
│ │ │ ├── 📄 ChatMessage.java
│ │ │ └── 📄 ChatSession.java
│ │ ├── 📁 dto
│ │ │ ├── 📄 EmotionCountDto.java
│ │ │ ├── 📄 EmotionCountProjection.java
│ │ │ ├── 📄 FinalRegisterRequest.java
│ │ │ ├── 📄 JoinRequest.java
│ │ │ ├── 📄 KakaoProfile.java
│ │ │ ├── 📄 KakaoTokenResponse.java
│ │ │ ├── 📄 LoginRequest.java
│ │ │ ├── 📄 LogoutRequest.java
│ │ │ ├── 📄 TokenDto.java
│ │ │ ├── 📄 UserResponse.java
│ │ │ ├── 📁 calendar
│ │ │ │ └── 📄 CalendarDtos.java
│ │ │ ├── 📁 chatbot
│ │ │ │ ├── 📄 ChatTextRequest.java
│ │ │ │ ├── 📄 ChatTextResponse.java
│ │ │ │ ├── 📄 ChatVoiceResponse.java
│ │ │ │ ├── 📄 EmotionRequest.java
│ │ │ │ ├── 📄 EmotionResponse.java
│ │ │ │ ├── 📄 MessageDto.java
│ │ │ │ ├── 📄 ScheduleCommandDto.java
│ │ │ │ └── 📄 SearchResDto.java
│ │ │ ├── 📁 guardian
│ │ │ │ └── 📄 ConnectRequest.java
│ │ │ └── 📁 mypage
│ │ │ ├── 📄 MemberMyPageDto.java
│ │ │ └── 📄 MyPageDto.java
│ │ ├── 📁 exception
│ │ │ └── 📄 CustomException.java
│ │ ├── 📁 handler
│ │ │ └── 📄 GlobalExceptionHandler.java
│ │ ├── 📁 jwt
│ │ │ ├── 📄 JwtAuthenticationFilter.java
│ │ │ └── 📄 JwtTokenProvider.java
│ │ ├── 📁 repository
│ │ │ ├── 📄 EmotionRepository.java
│ │ │ ├── 📄 RefreshTokenRepository.java
│ │ │ ├── 📄 UserRepository.java
│ │ │ ├── 📁 calendar
│ │ │ │ └── 📄 CalendarEventRepository.java
│ │ │ └── 📁 chatbot
│ │ │ ├── 📄 ChatMessageRepository.java
│ │ │ └── 📄 ChatSessionRepository.java
│ │ └── 📁 service
│ │ ├── 📄 ConnectElderService.java
│ │ ├── 📄 CustomUserDetailsService.java
│ │ ├── 📄 EmotionService.java
│ │ ├── 📄 KakaoService.java
│ │ ├── 📄 SmsService.java
│ │ ├── 📄 SmsVerificationManager.java
│ │ ├── 📄 TokenCleanupService.java
│ │ ├── 📄 UserService.java
│ │ ├── 📁 calendar
│ │ │ ├── 📄 CalendarService.java
│ │ │ ├── 📄 CalendarServiceImpl.java
│ │ │ ├── 📄 ElderAccessService.java
│ │ │ └── 📄 NotificationScheduler.java
│ │ ├── 📁 chatbot
│ │ │ ├── 📄 AsrClient.java
│ │ │ ├── 📄 ChatService.java
│ │ │ ├── 📄 EmotionClient.java
│ │ │ ├── 📄 LlmClient.java
│ │ │ ├── 📄 NaverSearchClient.java
│ │ │ ├── 📄 PromptBuilder.java
│ │ │ └── 📄 TtsClient.java
│ │ └── 📁 mypage
│ │ ├── 📄 MemberMyPageService.java
│ │ └── 📄 MyPageService.java
│ └── 📁 resources
│ ├── 📄 application.yml
│ └── 📁 db
│ └── 📁 migration
│ ├── 📄 V2_create_calendars.sql
│ └── 📄 V3_create_schedules.sql
└── 📁 test
└── 📁 java
└── 📁 com
└── 📁 silverbridge
└── 📁 backend
└── 📄 BackendApplicationTests.java
- RequestMapping (/api/emotions)
- GetMapping (/today/top)
- GetMapping (/weekly/last)
- GetMapping (/month/current)
- GetMapping (/month/previous)
- RequestMapping (/api/users/social)
- PostMapping (/register-final)
- RequestMapping (/api/users/social)
- PostMapping (/kakao)
- RequestMapping (/api/sms)
- PostMapping (/send)
- PostMapping (/verify)
- RequestMapping (/api/users)
- PostMapping (/join)
- PostMapping (/login)
- PostMapping (/logout)
- GetMapping (/me)
- RequestMapping (/api/health)
- GetMapping
- RequestMapping (/api/calendar)
- GetMapping
- GetMapping (/schedules)
- PostMapping (/add)
- PutMapping (/schedule/{scheduleId})
- DeleteMapping (/schedule/{scheduleId})
- PatchMapping (/schedule/{scheduleId}/complete)
- GetMapping (/alarm/check)
- RequestMapping (/api/mypage/member)
- PatchMapping (/text-size)
- PatchMapping (/region)
- PatchMapping (/alarm)
- GetMapping (/guardian-info)
- RequestMapping (/api/mypage)
- PatchMapping (/password-update)
- PatchMapping (/alarm)
- RequestMapping (/api/mypage/nok)
- PostMapping (/connect)
- GetMapping (/elder-info)
- RequestMapping (/api/chatbot)
- PostMapping (/text)
- PostMapping (value = /voice, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
- GetMapping (/history/{sessionId})
- GetMapping (/sessions)
- DeleteMapping (/session/{sessionId})
cleanupExpiredTokens()
getLastWeekEmotionSummary()getEmotionSummaryMonthly()getTodayTopEmotion()
getKakaoAccessToken()getKakaoProfile()
sendVerificationCode()
loadUserByUsername()
join()socialLoginOrJoin()completeSocialRegistration()generateTokens()generateTokens()logout()getUserInfo()findByPhoneNumber()
connectElder()
getAccessibleElderId()
getCalendarDates()getSchedules()addSchedule()updateSchedule()deleteSchedule()deleteScheduleByTitle()toggleScheduleCompletion()checkAlarm()
updateTextSize()updateRegion()
updatePassword()updateAlarm()
handleText()handleVoice()getHistory()getSessions()deleteSession()
cd backend
./gradlew clean build
java -jar build/libs/silverbridge-backend.jar
# Test
./gradlew testLast Updated: 2025-11-30 10:58:05