개인정보처리방침
서비스 명: 빵지순례(bbangji) ·
운영자: 김상인 (sangin84@gmail.com) ·
시행일: 2026년 5월 2일 ·
최근 개정: 2026년 5월 2일 · 버전 1.1
빵지순례(이하 “서비스”)는 사용자의 개인정보를 안전하게 처리하고 보호하기 위해
본 개인정보처리방침을 수립합니다. 본 방침은 빵지순례 모바일 앱(Android), 웹
서비스(bbangji.pages.dev) 모두에 동일하게
적용되며, 「개인정보 보호법」 및 Google Play 정책을 준수합니다.
1. 적용 범위
본 방침은 빵지순례 안드로이드 앱(패키지 ID io.bbangji.app)과 웹 서비스
모두에 적용됩니다. 사용자가 회원가입을 하지 않고 둘러보기만 하더라도 본 방침의 일부
조항(자동 수집, 쿠키 등)이 적용될 수 있습니다.
2. 처리하는 정보 항목
서비스가 처리하는 정보는 (가) 사용자가 직접 입력·업로드한 정보,
(나) 서비스 이용 과정에서 자동 생성·수집되는 정보 두 종류로 나뉩니다.
저장하지 않는 정보도 명시합니다.
2.1 계정 정보 (회원가입 시 필수)
| 항목 | 설명 / 형식 | 처리 |
| 아이디 (username) |
로그인 식별자. 영소문자/숫자/언더스코어 3~20자. 예: baker_kim |
저장 |
| 비밀번호 (password) |
입력 시점에만 처리되고 평문 저장은 하지 않습니다.
PBKDF2-SHA256 100,000회 반복 + 16바이트 무작위 salt 로 해시 후 저장.
운영자도 평문을 알 수 없습니다. |
해시 저장 |
| 닉네임 (nickname) |
다른 사용자에게 노출되는 표시 이름. 1~20자. |
저장 공개 |
| 가입 일시 |
회원 가입 시각(서버 타임스탬프). |
저장 |
2.2 프로필 정보 (선택)
| 항목 | 설명 | 처리 |
| 프로필 사진 |
최대 400×400px JPEG. 업로드 시 EXIF 메타데이터(촬영 위치 GPS 좌표·기기 정보 포함)는
자동 제거되어 저장됩니다. |
저장 공개 |
| 자기소개 (bio) |
최대 200자 텍스트. 다른 사용자에게 공개됩니다. |
저장 공개 |
2.3 사용자 생성 콘텐츠
| 항목 | 설명 | 처리 |
| 방문 기록 (포스트) |
방문 날짜, 별점(1~5점, 0.1 단위), 후기 텍스트(최대 2,000자), 빵 종류 태그. |
저장 공개 |
| 포스트 사진 |
포스트당 1~6장. 최대 1,600px JPEG로 자동 압축. EXIF 메타데이터(GPS 좌표 포함)는
자동 제거 후 저장. |
저장 공개 |
| 방문한 빵집 정보 |
네이버 지도 검색 결과(상호, 주소, 좌표, 카테고리, 전화번호)를 캐시 저장. 빵집 정보 자체는
사용자의 개인정보가 아니라 공개 점포 정보입니다. |
저장 |
| 댓글 |
댓글 텍스트, 1단계 답글. 모든 사용자에게 공개. |
저장 공개 |
| 위시리스트 |
가고 싶은 빵집 목록과 메모. 본인만 볼 수 있습니다. |
저장 |
2.4 자동 처리 정보
| 항목 | 설명 | 처리 |
| 인증 토큰 (세션) |
로그인 후 발급되는 임의의 무작위 문자열. 180일 슬라이딩 만료. 사용자의 username 과
연결되어 KV 저장소에 보관. |
저장 |
| IP 주소 |
요청 헤더에서 추출(cf-connecting-ip). 비정상 요청·스팸 방지를 위한
레이트 리밋(rate-limit) 카운터 키로 단기간 사용. 장기 저장 안 함.
60초~24시간 TTL 후 자동 삭제. 다른 사용자에게 공개되지 않음. |
단기 처리 |
| User-Agent / 접근 로그 |
Cloudflare 의 일반 액세스 로그(브라우저 종류, 요청 경로, 응답 코드 등). 운영자가 직접
수집·보관하지는 않으며 Cloudflare 측 정책에 따라 처리됩니다. |
CF 로그 |
2.5 저장하지 않는 정보
| 항목 | 설명 | 처리 |
| 위치 정보 (GPS) |
지도에서 “현재 위치” 버튼을 누른 경우에만 사용됩니다. 받은 좌표는 지도의 시점 이동에만
쓰이고 서버로 전송되거나 저장되지 않습니다 — 메모리에서 즉시 폐기됩니다. |
저장 안 함 |
| 실명·이메일·전화번호 |
회원가입에 요구하지 않으며, 어떤 화면에서도 입력 받지 않습니다. |
수집 안 함 |
| 광고 ID / 디바이스 ID |
Android 광고 ID(AAID), Firebase 인스턴스 ID, IDFA 등 일체 수집·이용하지 않습니다. |
수집 안 함 |
| 연락처·통화·문자 |
주소록·통화 기록·SMS 권한을 요청하지 않으며 접근하지 않습니다. |
접근 안 함 |
| 결제·금융 정보 |
결제 기능 자체가 없습니다. |
없음 |
| 건강·운동·생체 정보 |
수집·이용하지 않습니다. |
없음 |
| 제3자 분석 SDK |
Google Analytics, Firebase Analytics, AppsFlyer, Adjust 등 일체 사용하지 않습니다. |
없음 |
3. 처리 목적
- 회원 식별 및 로그인 유지
- 방문한 빵집의 후기·사진·평점·태그 게시 및 다른 사용자에게 노출
- 댓글·위시리스트·프로필 등 커뮤니티 기능 제공
- 빵집 검색·지도 표시·길찾기 기능 제공 (네이버 지도 연동)
- 비정상적인 요청·스팸·악성 활동 차단(레이트 리밋)
- 서비스 안정성 모니터링 및 장애 대응
법령상 의무 이행이나 분쟁 대응 외에는 위 목적 범위를 벗어나 처리하지 않습니다.
마케팅·광고·프로파일링 목적의 처리는 하지 않습니다.
4. 보유 및 파기
- 회원 정보: 회원 가입 시점부터 회원 탈퇴 시까지 보유합니다.
- 탈퇴 시 즉시 파기: 사용자가 앱 내 “계정 삭제” 또는 웹의
/delete 페이지에서 탈퇴를 요청하면 다음을 즉시 영구 삭제합니다:
- users 행(username, nickname, bio, 비밀번호 해시, 가입 일시)
- 해당 사용자의 모든 포스트(방문 기록·별점·후기·태그)
- 모든 포스트 사진 및 프로필 사진(R2 객체 저장소에서 영구 삭제)
- 모든 댓글
- 위시리스트 항목
- 모든 인증 세션 토큰(로그아웃 처리)
- 인증 토큰: 발급 후 180일 미사용 시 자동 만료·삭제.
- 레이트 리밋 카운터: 60초~24시간 TTL 후 KV 에서 자동 삭제.
- Cloudflare 액세스 로그: Cloudflare 정책에 따라 보유되며, 운영자는 별도로 보관하지 않습니다.
- 법령상 보존 의무가 있는 경우(예: 분쟁 기록) 해당 기간 동안 별도 보관할 수 있으나,
현재 본 서비스에는 결제·통신 기록 등 법정 보존 대상 데이터가 없습니다.
5. 제3자 제공
서비스는 사용자의 개인정보를 외부 제3자에게 판매·제공·공유하지 않습니다.
다음의 경우에 한하여 예외적으로 제공될 수 있습니다.
- 법령에 근거하거나 수사기관의 적법한 영장·요청이 있는 경우
- 사용자의 생명·신체에 급박한 위험을 방지하기 위해 필요한 경우
- 사용자가 직접 동의한 경우
다만 사용자가 작성한 닉네임·프로필 사진·자기소개·포스트·사진·댓글은
서비스 특성상 모든 방문자에게 공개되며, 본 정책상 “제3자 제공”에는
해당하지 않습니다(공개 게시).
6. 처리 위탁 (인프라 / 국외 이전)
서비스는 다음의 외부 인프라를 통해 데이터를 저장·처리합니다.
| 위탁 받는 자 | 위탁 항목 | 위치 |
| Cloudflare, Inc. |
웹/앱 호스팅(Pages), 서버리스 함수(Workers), 데이터베이스(D1), 키-값 저장소(KV),
사진 객체 저장소(R2). 위 2장의 모든 데이터. |
글로벌(한국 포함). 한국 사용자 요청은 우선 ICN(서울) 데이터센터에서 처리되나
백업·장애 복구를 위해 글로벌 네트워크에 분산될 수 있음. |
| NAVER Cloud Platform / NAVER Corp. |
지도 페이지에서 NCP Maps Web JS SDK가 로딩될 때 사용자의 IP·브라우저 정보가
네이버 지도 서비스로 전송됩니다(지도 타일 요청). 또한 빵집 검색·영업시간 조회 시
서버에서 네이버 검색 API/네이버 지도 정보를 호출합니다(검색어만 전달, 사용자 식별자는 전달하지 않음). |
대한민국 |
본 서비스는 별도의 마케팅·분석 목적의 외부 위탁사를 두고 있지 않습니다.
7. 권한 사용 (Android 앱)
| 권한 | 용도 | 거부 시 |
INTERNET |
서버 통신 |
앱 사용 불가 (필수) |
ACCESS_NETWORK_STATE |
네트워크 연결 상태 확인 |
앱 사용 불가 (필수) |
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION |
지도 화면의 “현재 위치” 버튼을 누를 때만 사용됩니다. 받은 GPS 좌표는
지도의 시점 이동에만 쓰이고 서버로 전송하거나 저장하지 않습니다. |
앱은 정상 동작합니다. “현재 위치” 버튼만 비활성화되며, 지도 영역을 직접 이동해
사용할 수 있습니다. |
카메라·마이크·연락처·SMS·통화 기록·캘린더·블루투스 권한은 요청하지 않습니다.
Android 시스템의 기본 사진 선택기를 사용해 갤러리에서 사진을 고르므로
READ_MEDIA_IMAGES 권한 자체는 필요하지 않습니다.
8. 안전성 확보 조치
- 전송 구간 암호화: 모든 통신은 HTTPS(TLS 1.2 이상)로 암호화되며,
HSTS(Strict-Transport-Security) 가 적용되어 있습니다.
- 비밀번호 보호: PBKDF2-SHA256 100,000회 반복 + 사용자별 16바이트
무작위 salt 적용. 평문 비밀번호는 어떤 시점에도 디스크에 기록되지 않습니다.
- 세션 보호: Bearer 토큰 방식으로 CSRF 공격에 면역. 토큰은 무작위로
생성되며 sliding 만료(180일)가 적용됩니다.
- 접근 제어: 사용자별로 본인 데이터에 한해 수정·삭제 가능하도록
서버에서 권한 검사.
- 보안 헤더:
X-Frame-Options: DENY,
X-Content-Type-Options: nosniff, Referrer-Policy,
Permissions-Policy 등 적용.
- 레이트 리밋: 비정상 요청·스팸을 차단하기 위해 IP/계정별 호출 횟수
제한.
- 업로드 검증: 사진 업로드 시 magic byte 검증 및 자동 압축으로 EXIF
메타데이터(촬영 위치·기기 정보) 제거.
9. 사용자 권리
사용자는 언제든지 다음의 권리를 행사할 수 있습니다.
- 열람: 자신의 프로필·포스트·댓글·위시리스트는 앱/웹에서 직접 확인 가능.
- 정정: 닉네임·자기소개·프로필 사진·포스트 내용은 “수정” 화면에서 직접 변경.
- 삭제: 개별 포스트·댓글은 작성자가 삭제 가능.
전체 계정 삭제는 앱 내 “설정 → 계정 삭제” 또는 웹의
https://bbangji.pages.dev/delete 에서 직접 처리할 수 있습니다.
- 처리 정지: 회원 탈퇴(계정 삭제)로 모든 처리가 즉시 중단됩니다.
- 이메일 연락: 위 방법으로 해결되지 않는 경우 아래 12번의 이메일로
요청해 주시면 영업일 기준 14일 이내에 처리합니다.
10. 어린이 보호
본 서비스는 만 14세 미만 어린이를 대상으로 하지 않으며, 의도적으로 만 14세 미만의 개인정보를
수집하지 않습니다. 만 14세 미만으로 확인되는 경우 즉시 해당 계정과 데이터를 삭제하며,
보호자께서는 아래 이메일로 연락해주시면 신속히 처리해 드립니다.
11. 쿠키·로컬 저장소
본 서비스는 추적용 쿠키를 설치하지 않습니다. 다만 다음의 브라우저 저장소를 기능적으로
사용합니다.
localStorage["bbangji-auth"] — 로그인 세션 토큰을 보관해 새로고침 시
로그인을 유지합니다. 회원 탈퇴 또는 로그아웃 시 즉시 제거됩니다.
localStorage["bbangji-ui"] 등 — UI 환경설정(다크/라이트 등). 식별 정보 없음.
- 네이버 지도 SDK가 지도 페이지에서 자체적으로 일부 쿠키/세션 저장소를 사용할 수
있으며, 이는 네이버 측 정책을 따릅니다.
12. 정책 변경 및 연락처
본 방침이 변경되는 경우 본 페이지를 통해 변경 내용을 공지합니다. 중대한 변경 시
시행일 7일 전부터 공지하며, 사용자에게 불리한 변경의 경우 30일 전부터 공지합니다.
개인정보 침해 신고 및 상담이 필요한 경우 아래 한국 정부 기관에 도움을 요청할 수 있습니다.
Privacy Policy
Service: bbangji (빵지순례) ·
Operator: Sangin Kim (sangin84@gmail.com) ·
Effective: May 2, 2026 ·
Last updated: May 2, 2026 · Version 1.1
This Privacy Policy describes how bbangji (the “Service”) collects, uses, stores,
and discloses information from users of the bbangji Android application
(package io.bbangji.app) and the web service at
bbangji.pages.dev. The policy applies
equally to both. The Service complies with the Korean Personal Information
Protection Act and Google Play developer policies.
1. Scope
This Policy applies to the bbangji Android app (package
io.bbangji.app) and the web service. Some sections (such as
automatically processed data and cookies) apply to all visitors, including
those who have not signed up for an account.
2. Data we process
We split data into (a) information you provide directly,
(b) information generated automatically as you use the Service,
and we also list (c) information we explicitly do not collect.
2.1 Account information (required at sign-up)
| Item | Description / format | Handling |
| Username |
Login identifier. Lowercase letters, digits, and underscores only,
3–20 characters. Example: baker_kim. |
Stored |
| Password |
Processed only at the moment of input. Never stored in
plaintext. Hashed with PBKDF2-SHA256 (100,000 iterations)
plus a 16-byte random per-user salt before storage. The operator
cannot recover the plaintext. |
Hashed |
| Nickname |
Display name shown to other users. 1–20 characters. |
Stored Public |
| Sign-up timestamp |
Server-side timestamp recorded at account creation. |
Stored |
2.2 Profile information (optional)
| Item | Description | Handling |
| Avatar (profile photo) |
Up to 400×400 px JPEG. EXIF metadata (including GPS coordinates and
device info) is stripped automatically before upload. |
Stored Public |
| Bio |
Free-form text up to 200 characters. Visible to other users. |
Stored Public |
2.3 User-generated content
| Item | Description | Handling |
| Visit posts |
Visit date, rating (1–5 in 0.1 steps), review text (up to 2,000 characters),
bread-type tags. |
Stored Public |
| Post photos |
1–6 photos per post, downscaled to max 1,600 px and re-encoded as
JPEG client-side. EXIF metadata (including GPS) is stripped before upload. |
Stored Public |
| Bakery information |
Cached results from Naver Map search (name, address, coordinates,
category, phone, official Naver Place URL). This is public business data,
not personal data of the user. |
Stored |
| Comments |
Comment text and one level of replies. Visible to all users. |
Stored Public |
| Wishlist |
Saved bakeries and personal notes. Visible only to you. |
Stored |
2.4 Automatically processed information
| Item | Description | Handling |
| Auth token (session) |
Random opaque string issued at login, valid for 180 days with sliding
expiry. Stored in our key-value store and bound to your username. |
Stored |
| IP address |
Read from the request header (cf-connecting-ip) and used
only as a key for short-lived rate-limit counters to prevent spam and
abuse. Counters expire automatically after 60 seconds to 24 hours.
Not retained long-term and not exposed to other users. |
Transient |
| User-Agent / access logs |
Standard server access logs (browser type, request path, status code).
Handled by our infrastructure provider Cloudflare and not retained or
correlated with identities by us. |
CF logs |
2.5 What we do not collect
| Item | Description | Handling |
| Location (GPS) |
Used only when you tap the “current location” button on the map.
The coordinates are used to recenter the map and are never sent
to our servers and never stored — they are discarded immediately. |
Not stored |
| Real name, email, phone number |
None of these are required for sign-up or requested anywhere in the app. |
Not collected |
| Advertising / device identifiers |
Android Advertising ID (AAID), Firebase Instance ID, IDFA, etc. are
never collected. |
Not collected |
| Contacts, calls, SMS |
The Service does not request the corresponding permissions and never
accesses your address book, call log, or messages. |
Not accessed |
| Payment / financial data |
The Service has no purchase or payment functionality. |
None |
| Health, fitness, biometric data |
Not collected. |
None |
| Third-party analytics SDKs |
No Google Analytics, Firebase Analytics, AppsFlyer, Adjust, Sentry,
or similar SDK is bundled in the app or web build. |
None |
3. Purposes of processing
- Identify members and maintain login sessions
- Publish bakery visit posts (reviews, photos, ratings, tags) to other users
- Provide community features such as comments, wishlists, and profile pages
- Provide bakery search, map display, and walking-directions features
via Naver Map integration
- Detect and block abusive requests, spam, and malicious activity (rate limits)
- Operational monitoring and incident response
We do not process data for marketing, advertising, or behavioral profiling.
4. Retention & deletion
- Account data: retained from sign-up until you close your account.
- On account deletion: when you delete your account from
the in-app “Delete account” menu or via
https://bbangji.pages.dev/delete, we permanently
erase the following immediately:
- The
users row (username, nickname, bio, password hash, sign-up time)
- All your visit posts (date, rating, review, tags)
- All post photos and the avatar image (deleted from R2 object storage)
- All your comments
- All wishlist entries
- All authentication session tokens (you are logged out everywhere)
- Auth tokens: automatically expire after 180 days of inactivity.
- Rate-limit counters: auto-deleted from the KV store after
60 seconds to 24 hours.
- Cloudflare access logs: retained per Cloudflare’s policy;
we do not maintain a separate copy.
- Where applicable law requires longer retention, we will retain only the
minimum necessary data for the legally required period. The Service has no
payment or telecommunication records subject to such retention today.
5. Sharing with third parties
We do not sell, rent, or share your personal data with third parties.
Limited exceptions:
- To comply with applicable law or a valid legal request from a government authority.
- To prevent imminent harm to life or safety.
- With your explicit consent.
Note: your nickname, avatar, bio, posts, photos, and comments are
publicly visible by design (this is the social purpose of
the Service). This is not “sharing with third parties” in the sense above —
it is a public posting that you author yourself.
6. Sub-processors / international transfer
The Service stores and processes data using the following infrastructure providers.
| Sub-processor | Scope | Region |
| Cloudflare, Inc. |
Web/app hosting (Pages), serverless functions (Workers), database (D1),
key-value store (KV), photo object storage (R2). All data described in
section 2 is stored on Cloudflare. |
Global. Korean traffic is served from the ICN (Seoul) edge first;
for backup and resiliency, data may be replicated across Cloudflare’s
global network. |
| NAVER Cloud Platform / NAVER Corp. |
The Naver Maps Web JS SDK loaded on the Map page sends your IP and
browser information to Naver as part of map-tile delivery. The Service
also calls the Naver Search API and Naver Map place endpoints
server-side; only the search keyword is forwarded — never your username,
IP, or other identifier. |
South Korea |
We do not engage any sub-processor for marketing, analytics, advertising,
or behavioral targeting purposes.
7. Android permissions
| Permission | Purpose | If denied |
INTERNET |
Communicate with our servers. |
App cannot function (required). |
ACCESS_NETWORK_STATE |
Detect connectivity state. |
App cannot function (required). |
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION |
Used only when you tap the “current location” button on the map.
The coordinates recenter the map locally and are
never transmitted to our servers and never stored. |
The app continues to work normally. Only the “current location”
button is disabled; you can still pan and zoom the map manually. |
We do not request camera, microphone, contacts, SMS, call log, calendar,
or Bluetooth permissions. Photo selection uses the system photo picker, so
no READ_MEDIA_IMAGES runtime permission is required.
8. Security measures
- Transport encryption: all traffic is HTTPS (TLS 1.2+),
with HSTS (Strict-Transport-Security) enabled.
- Password protection: PBKDF2-SHA256 with 100,000 iterations
and a unique 16-byte random salt per user. Plaintext passwords are never
written to disk.
- Session protection: bearer-token authentication
(immune to CSRF). Tokens are random and use sliding expiry (180 days).
- Access control: server-side authorization ensures users
can edit and delete only their own data.
- Security headers:
X-Frame-Options: DENY,
X-Content-Type-Options: nosniff, Referrer-Policy,
Permissions-Policy.
- Rate limiting: per-IP and per-account quotas to block abuse.
- Upload safety: server-side magic-byte validation and
client-side compression that strips EXIF metadata (location, device info)
before upload.
9. Your rights
You may exercise the following rights at any time.
- Access: your profile, posts, comments, and wishlist are
available directly in the app and on the web.
- Correction: nickname, bio, avatar, and post content can
be edited from the corresponding edit screens.
- Deletion: individual posts and comments can be deleted by
their author. Account deletion is available from the in-app “Settings →
Delete account” menu or at
https://bbangji.pages.dev/delete.
- Stop processing: account deletion immediately stops all
processing of your personal data.
- Email request: if any of the above is unavailable, write
to the contact in section 12 and we will respond within 14 business days.
10. Children
The Service is not directed to children under the age of 14 and we do not
knowingly collect personal data from them. If we become aware that an account
belongs to a person under 14, we will delete the account and associated data
promptly. Parents and guardians may contact us at the email below for assistance.
11. Cookies & local storage
We do not use tracking cookies. We use the following functional browser
storage:
localStorage["bbangji-auth"] — stores your session token so
that you remain logged in across reloads. Removed automatically on logout
or account deletion.
localStorage["bbangji-ui"] and similar — UI preferences with
no identifying information.
- The Naver Maps SDK on the Map page may set its own cookies/storage,
governed by Naver’s policy.
12. Changes & contact
We will post any updates to this Policy on this page. For material changes,
we will publish at least 7 days before the effective date; for changes
unfavorable to users, at least 30 days in advance.
- Data Protection Officer: Sangin Kim
- Email: sangin84@gmail.com
- Earlier versions: This is the first version, effective May 2, 2026.
Korean users may also contact the following authorities for privacy-related
complaints: