| Feature | Description | |
|---|---|---|
| 🧠 | Personalized Questions | 오늘의 기록과 과거 회고를 활용해 개인화된 영어 질문을 생성합니다. |
| 🎙️ | AI Speaking Reflection | 음성·텍스트 답변을 분석하고 자연스러운 영어 표현과 교정 이유를 제공합니다. |
| 🔗 | External Context | Google Calendar, Spotify, 날씨, 사진 등의 데이터를 회고 소재로 활용합니다. |
| 📖 | Diary & Memory | 완성된 회고를 기록하고 과거 회고에서 추출한 사용자 기억을 다음 질문 생성에 활용합니다. |
| 🔔 | Web Push | 작성 기록과 리마인더를 통해 꾸준한 영어 회고를 지원합니다. |
Backend는 Google Compute Engine의 Blue / Green 두 환경에서 운영되며, GCP Load Balancer를 통해 활성 환경으로 트래픽을 전달합니다.
정형 데이터는 Cloud SQL for MySQL, 사진과 음성 등의 비정형 데이터는 Amazon S3에 저장합니다.
|
홈 · 회고 아카이브 웹 푸시 알림 |
회고 컨텍스트 · 사용자 메모리 외부 서비스 연동 · CI/CD |
인증 · 마이페이지 음성 회고 · 실시간 응답 |
- Language : Java 17
- Framework : Spring Boot 3.3.4
- Database : MySQL
src/main하위에resources디렉토리와application.yml을 생성해주세요.
JWT_SECRET: HS256 서명용 32바이트 이상의 비밀키GOOGLE_CLIENT_ID: Google OAuth 웹 클라이언트 ID- 로컬 실행 시 프로젝트 루트의
.env를 자동으로 읽습니다. - 인증 API는
POST /api/auth/google요청 바디로{"idToken":"..."}을 받습니다.
오디오 저장소 설정
운영 환경에서는 private S3 버킷을 사용합니다.
AUDIO_STORAGE_TYPE=s3
AUDIO_S3_BUCKET=todayeng-prod-media
AWS_REGION=ap-northeast-2
AWS_ACCESS_KEY_ID=발급받은-access-key-id
AWS_SECRET_ACCESS_KEY=발급받은-secret-access-key
AUDIO_S3_TTS_PREFIX=tts
AUDIO_S3_STT_PREFIX=stt
AUDIO_PLAYBACK_URL_EXPIRATION=30m운영 서버는 GCP Compute Engine을 사용하므로 AWS 자격 증명은 GCP VM의 /opt/todayeng/.env에 주입하며 저장소나 Docker 이미지에는 포함하지 않습니다.
S3 버킷은 Block Public Access가 활성화된 private 상태로 유지하며, TTS 재생 시 Presigned URL을 생성합니다.
| type | branch | description |
|---|---|---|
feat |
feat/#ISSUE_NUM |
⚡️ 새로운 기능 추가 |
fix |
fix/#ISSUE_NUM |
🐛 버그 수정 |
docs |
docs/#ISSUE_NUM |
📝 문서 수정 |
refactor |
refactor/#ISSUE_NUM |
♻️ 리팩토링 |
test |
test/#ISSUE_NUM |
🧪 테스트 코드 작성 |
chore |
chore/#ISSUE_NUM |
🛠️ 빌드, 패키지 관련 수정 |
perf |
perf/#ISSUE_NUM |
🪄 성능 개선 |
ci |
ci/#ISSUE_NUM |
🔄 CI 관련 수정 |
cd |
cd/#ISSUE_NUM |
🔄 CD 관련 수정 |
revert |
revert/#ISSUE_NUM |
| branch | role |
|---|---|
main |
최종 배포용 브랜치develop에서 안정화된 버전만 병합 |
develop |
개발용 브랜치 |
