모모캘린더 어플리케이션 개인정보처리방침
# 모모캘린더 (MomoCalendar) 개인정보 처리방침
- **서비스명**: 모모캘린더 (MomoCalendar)
- **시행일자**: 2026년 5월 15일
- **최종 수정일**: 2026년 5월 15일
본 방침은 안시우(이하 "개발자")가 제공하는 모바일 애플리케이션 **모모캘린더**(이하 "본 앱")에서 처리되는 개인정보의 항목·목적·보유기간 및 사용자의 권리를 안내합니다. 본 앱은 생리주기·가임기·관계 기록 등 민감한 건강 정보를 다루므로, 개발자는 사용자가 입력한 데이터를 광고 타게팅·외부 마케팅 등 어떠한 2차 목적으로도 사용하지 않습니다.
## 1. 본 앱이 수집·전송하는 개인정보
### 1a. 계정 식별 정보 (소셜 로그인 시)
본 앱은 다음 소셜 로그인 제공자 중 하나를 통해 계정을 생성합니다. 로그인 시 제공자로부터 받은 최소 정보만 백엔드 서버(`https://momocalendar.reactiveworks.dev`)에 저장됩니다.
| 제공자 | 수집 항목 |
|---|---|
| Google 로그인 (`google_sign_in`, `firebase_auth`) | 이메일, 표시 이름 |
| Apple 로그인 (`sign_in_with_apple`) | 이메일(릴레이 또는 실제), 표시 이름(최초 1회 제공 시) |
| 이메일 가입 (직접 입력) | 이메일, 비밀번호(bcrypt 해시 후 저장 — 원문 비저장), 닉네임(선택) |
서버는 자체 발급한 JWT(액세스/리프레시 토큰)로 세션을 유지합니다. 토큰은 단말의 보안 저장소(`flutter_secure_storage`)에만 보관됩니다.
### 1b. 민감 건강 정보 (별도 섹션 — 2장 참조)
생리주기·가임기·관계 기록·피임약 복용 기록은 별도 섹션(아래 **2. 민감 건강 정보의 처리**)에서 자세히 설명합니다.
### 1c. 기기 내 로컬 저장
다음 라이브러리를 통해 단말에만 저장되며 서버로 전송되지 않습니다.
- `shared_preferences` — 앱 설정(테마/언어/잠금 활성화 여부, 알림 활성화 여부 등)
- `flutter_secure_storage` — JWT 토큰(OS 보안 영역)
앱 삭제 시 위 로컬 데이터는 모두 함께 삭제됩니다.
### 1d. 광고 식별자 및 진단 정보 (AdMob)
본 앱은 Google AdMob(`google_mobile_ads`)을 통해 배너 광고를 노출합니다. AdMob SDK는 다음 정보를 Google에 전송할 수 있습니다.
- 광고 식별자(Android Advertising ID / iOS IDFA — iOS에서는 ATT 동의 시에만)
- IP 주소
- 일반 기기 정보(모델, OS 버전, 언어, 화면 크기 등)
- 광고 노출·클릭에 대한 일반 사용 데이터
iOS 사용자에게는 앱 첫 실행 시 **App Tracking Transparency(ATT)** 추적 허용 다이얼로그가 표시되며, 추적을 거부하면 IDFA 없이 비개인화된 광고가 노출됩니다.
AdMob은 본 앱에서 입력한 생리주기·관계 기록·피임약 기록 등 건강 데이터에 접근할 수 없습니다.
### 1e. 인앱 업데이트 및 평가 (수집 없음)
- `in_app_update` — Android에서 신규 버전 존재 여부 확인(Google Play 자체 통신, 개인정보 미수집)
- `in_app_review` — 앱 평가 다이얼로그 표시(스토어 평가는 사용자의 스토어 계정에서 처리)
- `share_plus` — 운영체제의 공유 메뉴 호출(공유 대상 선택은 사용자 단말에서 처리)
- `url_launcher` — 외부 링크(개인정보처리방침·이용약관 페이지 등) 열기
## 2. 민감 건강 정보의 처리
본 앱의 핵심 기능을 위해 사용자가 직접 입력한 다음 항목은 **암호화된 HTTPS 통신**을 통해 백엔드 서버(`https://momocalendar.reactiveworks.dev`)에 저장됩니다. 백엔드는 한국 외 지역(VPS)에서 운영될 수 있으며, 저장된 데이터는 인증된 본인만 조회·수정·삭제할 수 있습니다.
### 2a. 주기 설정 (`/v1/cycle-settings`)
- 평균 생리 주기 길이(일)
- 평균 생리 기간(일)
- 가임기 표시 여부
- 알림 활성화 여부 및 시각
- 앱 잠금(생체 인증) 활성화 여부
### 2b. 일별 기록 (`/v1/daily-records`)
| 항목 | 값 예시 |
|---|---|
| 날짜 | YYYY-MM-DD |
| 생리량 | 없음 / 적음 / 보통 / 많음 |
| 통증 점수 | 0~10 |
| 증상 | 사용자 선택 다중 태그(예: 두통, 복통 등) |
| 기분 | 좋음 / 평온 / 예민 / 슬픔 / 불안 |
| 피임약 복용 | 없음 / 경구 피임약 / 응급 피임약 |
| 관계 기록 | 없음 / 보호 / 비보호 |
| 메모 | 사용자 자유 입력 텍스트 |
### 2c. 사용 목적
위 정보는 오직 다음 목적으로만 사용됩니다.
1. 사용자 본인에게 다음 생리·가임기·배란일 예측을 제공
2. 통계·달력 화면에서 본인의 과거 기록 조회 제공
3. 알림 발송(예: 다음 생리 예정일 알림)
### 2d. 절대 사용하지 않는 용도
- 광고 타게팅 (AdMob 등 광고 SDK에 건강 데이터 전달하지 않음)
- 외부 마케팅·프로파일링
- 제3자에게 판매·제공
- 통계 집계 시 개인 식별 정보 결합
### 2e. 민감 정보 보호 조치
- 모든 통신은 TLS(HTTPS)로 암호화
- 백엔드 인증은 JWT Bearer 토큰 필수 — 타인은 접근 불가
- 토큰은 단말 보안 저장소(`flutter_secure_storage`)에만 보관
- 본 앱은 광고 SDK(AdMob)에 건강 데이터를 절대 노출하지 않음
## 3. 권한
- `POST_NOTIFICATIONS` — 생리 예정일·복약 알림 등 로컬 푸시 알림 표시
- `SCHEDULE_EXACT_ALARM` / `USE_EXACT_ALARM` — 정확한 시각 알림 예약
- `RECEIVE_BOOT_COMPLETED` — 단말 재부팅 후에도 알림이 유지되도록 재예약
- `WAKE_LOCK`, `VIBRATE` — 알림 도착 시 진동·화면 활성화
- 생체 인증(`local_auth`) — 앱 잠금 활성화 시 단말 OS의 지문/얼굴 인식 API 호출(인증 결과만 받고 생체 정보 자체는 OS 영역에서 처리)
본 앱은 **카메라·마이크·연락처·위치·저장공간·갤러리** 등 다른 민감한 권한을 요청하지 않습니다.
## 4. 보유 및 이용 기간
- 계정 정보 및 일별 기록: 회원 탈퇴 또는 앱 삭제 후 계정 삭제(`DELETE /v1/users/me`) 호출 시 즉시 영구 삭제(Cascade)
- 로컬 데이터: 앱 삭제 시 즉시 삭제
- AdMob 데이터: Google 정책에 따름 (https://policies.google.com/privacy)
- 소셜 로그인 제공자가 보관하는 정보: 각 제공자의 정책에 따름
## 5. 제3자 제공
본 앱은 다음 외에는 어떠한 제3자에게도 개인정보를 제공하지 않습니다.
| 제공자 | 제공 항목 | 목적 | 정책 링크 |
|---|---|---|---|
| Google AdMob | 광고 식별자, IP, 기기 정보 | 광고 노출·집계 | https://policies.google.com/privacy |
| Google (Firebase Auth / Google 로그인) | OAuth 토큰 검증 | 로그인 인증 | https://policies.google.com/privacy |
| Apple (Sign in with Apple) | OAuth 토큰 검증 | 로그인 인증 | https://www.apple.com/legal/privacy/ |
**생리주기·관계 기록·피임약 기록 등 민감 건강 데이터는 위 제3자에게 절대 제공되지 않습니다.**
## 6. 사용자의 권리
- **데이터 조회·수정·삭제**: 앱 내 달력·통계 화면 또는 일별 기록 바텀시트에서 직접 수행
- **회원 탈퇴 (계정 영구 삭제)**: 설정 > 계정 메뉴에서 회원 탈퇴 시 `DELETE /v1/users/me` 호출로 서버의 모든 데이터가 Cascade 삭제됩니다. (Apple App Store Guideline 5.1.1(v) 준수)
- **광고 식별자 재설정**:
- Android: 설정 > Google > 광고 > 광고 ID 재설정
- iOS: 설정 > 개인정보 보호 및 보안 > 추적 > 모모캘린더 추적 허용 토글
- **앱 삭제**: 모든 로컬 데이터가 함께 삭제됩니다(서버 데이터는 별도로 회원 탈퇴 필요).
문의: **siwooeo@gmail.com**
## 7. 아동의 개인정보 보호
본 앱은 만 14세 미만 아동을 대상으로 하지 않으며, 알면서 아동의 개인정보를 수집하지 않습니다. 보호자가 아동의 개인정보가 입력되었음을 발견하면 위 이메일로 연락 주시면 즉시 삭제합니다. AdMob은 일반 시청자 대상으로 운영됩니다.
## 8. 개인정보 보호책임자
- **이름**: 안시우 (SiU Ahn)
- **이메일**: siwooeo@gmail.com
## 9. 방침 변경 안내
본 방침은 법령 또는 서비스 변경 사항에 따라 사전 공지 없이 수정될 수 있습니다. 변경 시 본 페이지의 "최종 수정일"을 갱신하며, 중대한 변경 사항은 앱 내 공지 또는 스토어 업데이트 노트로 안내합니다.
- **서비스명**: 모모캘린더 (MomoCalendar)
- **시행일자**: 2026년 5월 15일
- **최종 수정일**: 2026년 5월 15일
본 방침은 안시우(이하 "개발자")가 제공하는 모바일 애플리케이션 **모모캘린더**(이하 "본 앱")에서 처리되는 개인정보의 항목·목적·보유기간 및 사용자의 권리를 안내합니다. 본 앱은 생리주기·가임기·관계 기록 등 민감한 건강 정보를 다루므로, 개발자는 사용자가 입력한 데이터를 광고 타게팅·외부 마케팅 등 어떠한 2차 목적으로도 사용하지 않습니다.
## 1. 본 앱이 수집·전송하는 개인정보
### 1a. 계정 식별 정보 (소셜 로그인 시)
본 앱은 다음 소셜 로그인 제공자 중 하나를 통해 계정을 생성합니다. 로그인 시 제공자로부터 받은 최소 정보만 백엔드 서버(`https://momocalendar.reactiveworks.dev`)에 저장됩니다.
| 제공자 | 수집 항목 |
|---|---|
| Google 로그인 (`google_sign_in`, `firebase_auth`) | 이메일, 표시 이름 |
| Apple 로그인 (`sign_in_with_apple`) | 이메일(릴레이 또는 실제), 표시 이름(최초 1회 제공 시) |
| 이메일 가입 (직접 입력) | 이메일, 비밀번호(bcrypt 해시 후 저장 — 원문 비저장), 닉네임(선택) |
서버는 자체 발급한 JWT(액세스/리프레시 토큰)로 세션을 유지합니다. 토큰은 단말의 보안 저장소(`flutter_secure_storage`)에만 보관됩니다.
### 1b. 민감 건강 정보 (별도 섹션 — 2장 참조)
생리주기·가임기·관계 기록·피임약 복용 기록은 별도 섹션(아래 **2. 민감 건강 정보의 처리**)에서 자세히 설명합니다.
### 1c. 기기 내 로컬 저장
다음 라이브러리를 통해 단말에만 저장되며 서버로 전송되지 않습니다.
- `shared_preferences` — 앱 설정(테마/언어/잠금 활성화 여부, 알림 활성화 여부 등)
- `flutter_secure_storage` — JWT 토큰(OS 보안 영역)
앱 삭제 시 위 로컬 데이터는 모두 함께 삭제됩니다.
### 1d. 광고 식별자 및 진단 정보 (AdMob)
본 앱은 Google AdMob(`google_mobile_ads`)을 통해 배너 광고를 노출합니다. AdMob SDK는 다음 정보를 Google에 전송할 수 있습니다.
- 광고 식별자(Android Advertising ID / iOS IDFA — iOS에서는 ATT 동의 시에만)
- IP 주소
- 일반 기기 정보(모델, OS 버전, 언어, 화면 크기 등)
- 광고 노출·클릭에 대한 일반 사용 데이터
iOS 사용자에게는 앱 첫 실행 시 **App Tracking Transparency(ATT)** 추적 허용 다이얼로그가 표시되며, 추적을 거부하면 IDFA 없이 비개인화된 광고가 노출됩니다.
AdMob은 본 앱에서 입력한 생리주기·관계 기록·피임약 기록 등 건강 데이터에 접근할 수 없습니다.
### 1e. 인앱 업데이트 및 평가 (수집 없음)
- `in_app_update` — Android에서 신규 버전 존재 여부 확인(Google Play 자체 통신, 개인정보 미수집)
- `in_app_review` — 앱 평가 다이얼로그 표시(스토어 평가는 사용자의 스토어 계정에서 처리)
- `share_plus` — 운영체제의 공유 메뉴 호출(공유 대상 선택은 사용자 단말에서 처리)
- `url_launcher` — 외부 링크(개인정보처리방침·이용약관 페이지 등) 열기
## 2. 민감 건강 정보의 처리
본 앱의 핵심 기능을 위해 사용자가 직접 입력한 다음 항목은 **암호화된 HTTPS 통신**을 통해 백엔드 서버(`https://momocalendar.reactiveworks.dev`)에 저장됩니다. 백엔드는 한국 외 지역(VPS)에서 운영될 수 있으며, 저장된 데이터는 인증된 본인만 조회·수정·삭제할 수 있습니다.
### 2a. 주기 설정 (`/v1/cycle-settings`)
- 평균 생리 주기 길이(일)
- 평균 생리 기간(일)
- 가임기 표시 여부
- 알림 활성화 여부 및 시각
- 앱 잠금(생체 인증) 활성화 여부
### 2b. 일별 기록 (`/v1/daily-records`)
| 항목 | 값 예시 |
|---|---|
| 날짜 | YYYY-MM-DD |
| 생리량 | 없음 / 적음 / 보통 / 많음 |
| 통증 점수 | 0~10 |
| 증상 | 사용자 선택 다중 태그(예: 두통, 복통 등) |
| 기분 | 좋음 / 평온 / 예민 / 슬픔 / 불안 |
| 피임약 복용 | 없음 / 경구 피임약 / 응급 피임약 |
| 관계 기록 | 없음 / 보호 / 비보호 |
| 메모 | 사용자 자유 입력 텍스트 |
### 2c. 사용 목적
위 정보는 오직 다음 목적으로만 사용됩니다.
1. 사용자 본인에게 다음 생리·가임기·배란일 예측을 제공
2. 통계·달력 화면에서 본인의 과거 기록 조회 제공
3. 알림 발송(예: 다음 생리 예정일 알림)
### 2d. 절대 사용하지 않는 용도
- 광고 타게팅 (AdMob 등 광고 SDK에 건강 데이터 전달하지 않음)
- 외부 마케팅·프로파일링
- 제3자에게 판매·제공
- 통계 집계 시 개인 식별 정보 결합
### 2e. 민감 정보 보호 조치
- 모든 통신은 TLS(HTTPS)로 암호화
- 백엔드 인증은 JWT Bearer 토큰 필수 — 타인은 접근 불가
- 토큰은 단말 보안 저장소(`flutter_secure_storage`)에만 보관
- 본 앱은 광고 SDK(AdMob)에 건강 데이터를 절대 노출하지 않음
## 3. 권한
- `POST_NOTIFICATIONS` — 생리 예정일·복약 알림 등 로컬 푸시 알림 표시
- `SCHEDULE_EXACT_ALARM` / `USE_EXACT_ALARM` — 정확한 시각 알림 예약
- `RECEIVE_BOOT_COMPLETED` — 단말 재부팅 후에도 알림이 유지되도록 재예약
- `WAKE_LOCK`, `VIBRATE` — 알림 도착 시 진동·화면 활성화
- 생체 인증(`local_auth`) — 앱 잠금 활성화 시 단말 OS의 지문/얼굴 인식 API 호출(인증 결과만 받고 생체 정보 자체는 OS 영역에서 처리)
본 앱은 **카메라·마이크·연락처·위치·저장공간·갤러리** 등 다른 민감한 권한을 요청하지 않습니다.
## 4. 보유 및 이용 기간
- 계정 정보 및 일별 기록: 회원 탈퇴 또는 앱 삭제 후 계정 삭제(`DELETE /v1/users/me`) 호출 시 즉시 영구 삭제(Cascade)
- 로컬 데이터: 앱 삭제 시 즉시 삭제
- AdMob 데이터: Google 정책에 따름 (https://policies.google.com/privacy)
- 소셜 로그인 제공자가 보관하는 정보: 각 제공자의 정책에 따름
## 5. 제3자 제공
본 앱은 다음 외에는 어떠한 제3자에게도 개인정보를 제공하지 않습니다.
| 제공자 | 제공 항목 | 목적 | 정책 링크 |
|---|---|---|---|
| Google AdMob | 광고 식별자, IP, 기기 정보 | 광고 노출·집계 | https://policies.google.com/privacy |
| Google (Firebase Auth / Google 로그인) | OAuth 토큰 검증 | 로그인 인증 | https://policies.google.com/privacy |
| Apple (Sign in with Apple) | OAuth 토큰 검증 | 로그인 인증 | https://www.apple.com/legal/privacy/ |
**생리주기·관계 기록·피임약 기록 등 민감 건강 데이터는 위 제3자에게 절대 제공되지 않습니다.**
## 6. 사용자의 권리
- **데이터 조회·수정·삭제**: 앱 내 달력·통계 화면 또는 일별 기록 바텀시트에서 직접 수행
- **회원 탈퇴 (계정 영구 삭제)**: 설정 > 계정 메뉴에서 회원 탈퇴 시 `DELETE /v1/users/me` 호출로 서버의 모든 데이터가 Cascade 삭제됩니다. (Apple App Store Guideline 5.1.1(v) 준수)
- **광고 식별자 재설정**:
- Android: 설정 > Google > 광고 > 광고 ID 재설정
- iOS: 설정 > 개인정보 보호 및 보안 > 추적 > 모모캘린더 추적 허용 토글
- **앱 삭제**: 모든 로컬 데이터가 함께 삭제됩니다(서버 데이터는 별도로 회원 탈퇴 필요).
문의: **siwooeo@gmail.com**
## 7. 아동의 개인정보 보호
본 앱은 만 14세 미만 아동을 대상으로 하지 않으며, 알면서 아동의 개인정보를 수집하지 않습니다. 보호자가 아동의 개인정보가 입력되었음을 발견하면 위 이메일로 연락 주시면 즉시 삭제합니다. AdMob은 일반 시청자 대상으로 운영됩니다.
## 8. 개인정보 보호책임자
- **이름**: 안시우 (SiU Ahn)
- **이메일**: siwooeo@gmail.com
## 9. 방침 변경 안내
본 방침은 법령 또는 서비스 변경 사항에 따라 사전 공지 없이 수정될 수 있습니다. 변경 시 본 페이지의 "최종 수정일"을 갱신하며, 중대한 변경 사항은 앱 내 공지 또는 스토어 업데이트 노트로 안내합니다.