PRIVACY
Privacy Policy
Tennis Tension Lab is built to measure and organize your racquet setup without turning your activity into advertising data.
Effective and last updated: October 8, 2026
1. Who is responsible
Tennis Tension Lab is provided by SEOKWON KONG (공석원 개인 개발자), an independent developer in the Republic of Korea. Questions about this policy or your data can be sent to aflhzv@gmail.com.
2. Data handled by the app
Measurement audio
The microphone is used only while you measure a racquet. Short tap sounds are analyzed in memory on your device and then discarded. Tennis Tension Lab does not save or upload an audio recording.
Racquet and measurement records
The app stores the information you enter or create, including racquet labels and models, string and hybrid setups, stringing dates, tension references, measurement results, playing-time notes, feel feedback, replacement thresholds, units, and language settings. A randomly assigned Firebase user ID is used to keep synchronized records separate. You do not need to provide a name, email address, or phone number to use the app.
App analytics and language settings
Versions with Google Analytics for Firebase use the randomly assigned Firebase account ID and an app-instance identifier to understand app use and language support. Analytics receives the app language, whether it follows the device or was selected manually, the preferred device language and locale, the device region setting, account type, new-account and language events, and basic app/device and session information. Existing accounts are described when they next use an analytics-enabled version; their original signup language is not reconstructed.
Google derives an approximate geographic area from the connection IP address. The device region is a setting, and neither it nor language establishes your nationality or residence. This analytics feature does not request GPS location or send measurement audio, photos, community text, your nickname, email, or phone number. Advertising identifiers, IDFV, advertising personalization and advertising-related data use are disabled in the app.
Photos
If you choose a racquet photo, the app creates a cropped copy in its private on-device storage. The original library image is not copied into cloud sync, and the cropped photo is not uploaded by the current version.
Location
If the nearby stringing-shop map is available and you choose the locate control, your current location is used temporarily to center the map and show your position. Tennis Tension Lab does not retain that coordinate. The map provider may process the request under its own privacy policy.
Support messages
If you contact support, the email address, message, and any attachment you choose to send are used only to answer and resolve your request.
Optional measurement reports
When you choose “This result seems wrong” and send a report, we collect your selected reason, optional comments and expected tension, and a snapshot of the result. The snapshot includes measurement calculation settings, intermediate results, five tap analyses, racquet and string details, relevant stringing and measurement history, language, and device/app information. Your expected tension is kept as an unverified user estimate. No recording is included.
Report storage and email delivery have been disabled since October 2, 2026. The app may still send a pending report to our endpoint, which currently rejects it before storing or emailing it. Pending reports remain on your device and retry while the app is open and connected. Previously received reports remain private in Firebase under your installation account; existing operator email copies and private Amazon S3 delivery receipts may also remain. These records are used to investigate errors and improve tension estimates.
Community information and visibility
Community participation is optional. You can use the tension-measurement features without posting, commenting, recommending a post, or choosing a community nickname. Before posting or commenting, you must accept the community rules. New posts and comments are published immediately; they do not wait for moderator approval.
- Profile and content: we store your chosen nickname, board and language, post titles, post and comment text, posting times, author markers, and recommendation records. Published content, dates, recommendation counts, and the nickname used on the free board are visible to other community users. A nickname saved with an existing post or comment does not change when you later update your profile nickname.
- Optional post photos: when you attach photos and publish a post, the app uploads resized WebP copies to private Amazon S3 storage through our authenticated server. Originals, original filenames, and EXIF metadata are not uploaded. Firebase stores image identifiers, dimensions, the installation-account association, and upload quota records. Photos attached to a published post are visible to other signed-in community users. Images themselves can identify you even on the anonymous board.
- Anonymous board: your profile nickname and Firebase user ID are not included in the public post or comment. Each board uses a separate persistent author identifier so blocking still works if a nickname changes. Content from the same author in the same board can be associated through that identifier. The operator keeps a private mapping to the installation account for abuse handling and data requests; anonymous posting is not anonymous to the operator. Information you write may also identify you.
- Reports: we store the reporting account identifier, the reported content and author identifiers, selected reason, optional explanation, submission time, and handling status. Reports are available to the operator and the reporting account, not to other users or the reported author. Please do not include unnecessary private information.
- Blocks: we store the blocked author identifier, board, block time, and a post title or comment excerpt to help you recognize the entry. Your block list is private to your account and the operator. Blocking hides that author’s posts and comments in that board for you; it does not remove the original content for everyone.
- Operator email notifications: for community management and replies, new published posts and comments may be sent to the operator’s mailbox through Amazon SES and Gmail. These emails contain the original text, the parent post for a comment, board and selected language, posting times, the free-board nickname or anonymous label, the board-specific author identifier, document references, and photo counts. Photo files, private account mappings, and device information are not included. The selected language does not identify a person’s country or physical location. Private delivery records in Amazon S3 help prevent duplicate messages and retry failed deliveries.
- Safety records: we store the rules version and acceptance time, the private account-to-author mapping, moderation decisions and their times, and any account posting restriction. Individual recommendation records are private; their totals are displayed. The operator can review reports, hide content, and restrict abusive accounts after publication. Legacy review records, if any, also remain private.
The operator, Google Firebase, and Amazon Web Services process these records to provide the community and keep it safe. Do not post someone else’s private information. Once shared, content may be copied by other users, and removing it from the app cannot remove copies they have made elsewhere.
3. Why the data is used
- Measure and compare string tension estimates.
- Organize racquets, string jobs, trends, feedback, and preferences.
- Synchronize app records across installations associated with the same anonymous ID.
- Publish community posts and comments and maintain recommendations and personal blocks.
- Record rule acceptance, handle reports and data requests, and enforce posting restrictions.
- Protect the service, prevent abuse, and diagnose a support request.
- Understand app usage and account language/region distribution to improve localization.
The app does not sell personal data, show targeted advertising, or track you across apps or websites.
4. Service providers and international processing
Google Firebase Authentication and Cloud Firestore provide anonymous sign-in and cloud synchronization, including community content, reports, blocks, and safety records. Google may process a user identifier, IP address, and basic device, app, and request metadata to operate and secure those services. Static catalog and guide media are delivered through Amazon Web Services and CloudFront; Amazon S3 also stores community photo copies privately. Google Maps is contacted only when the optional map feature is available and used. These providers may process data in countries outside your own under their contractual and legal safeguards.
Google Analytics for Firebase processes the analytics identifiers, events, language and region information described above on our behalf to provide usage reports.
Provider information: Firebase privacy and security · Google Privacy Policy. Private reports, blocks, and account mappings are not made public as part of a post.
5. Storage, retention, and deletion
On-device records remain until you delete them, reset synchronized data, or remove the app. Cloud-synchronized records remain while the anonymous Firebase account is active. In the app, open Settings and choose Reset synced data to remove racquets, string jobs, measurements, feedback, and preferences from that account and synchronized devices, then restore sample data. Service-provider backups and security logs may take additional time to expire under the provider’s retention schedule.
If you cannot use the in-app reset, email support from the device concerned. Include no information you do not want to share; we may need a non-sensitive app identifier shown in a diagnostic step to locate the correct anonymous record.
Analytics retention and deletion
Analytics event and user data follow the retention settings of our Google Analytics property. Aggregated reports may remain beyond those settings. Reset synced data does not erase Analytics records. To request deletion of account-linked analytics, contact aflhzv@gmail.com from the relevant installation so we can verify the account and submit the corresponding deletion request to Google.
Measurement-report retention and deletion
Submitted measurement reports, their email copies and delivery receipts have no automatic expiry. They are retained for calibration review until the operator deletes them. Resetting synced data does not remove submitted or queued reports; uninstalling removes the local queue, but not reports already received. To request access or deletion, contact aflhzv@gmail.com with the approximate measurement time and report ID if available. We will verify the associated installation account and handle the Firebase, email and delivery records together; provider backups may expire separately.
Community retention and deletion requests
Operator notification emails are separate copies. Hiding or deleting a post does not automatically recall an email. Community deletion requests also cover those mailbox copies and associated delivery records, subject to any necessary abuse investigation or legal retention. These copies have no automatic expiry; operational logs contain delivery counts and failure stages rather than content and expire after 30 days.
Reset synced data clears the measurement-related records listed above. It does not delete your community profile, posts, comments, recommendations, reports, blocks, rule acceptance, photo copies, upload reservations and quota records, or moderation records. Uninstalling the app also does not delete those server records and may make it harder to verify the original installation account.
Community records do not currently have an automatic expiry. Profiles and content remain until the operator processes a deletion request or removes them. You can delete a block entry using Community → Blocked authors → Unblock, and remove your own recommendation by toggling it off on an available post. Hiding a reported post or comment from the board is a visibility restriction, not deletion from storage.
This also applies to community photo copies, including private uploads from abandoned drafts. Removing a post from view stops new photo requests but does not erase the stored objects or copies already obtained by other users. A community deletion request includes the associated S3 photos and Firebase image reservations after ownership and any necessary abuse-investigation retention are reviewed.
To request access, correction, or deletion of community information, email aflhzv@gmail.com. Identify the board, post title, and approximate posting time when relevant. We will explain how to verify the associated installation account before acting on private records; a nickname alone is not proof of authorship. Do not send passwords or identity documents.
Reports, acceptance records, author mappings, and moderation records are used while needed to investigate abuse, maintain an active restriction, or handle a data request. Their retention and deletion are handled by the operator rather than an automatic timer. If a record must be retained to meet a legal obligation or resolve an active dispute, we will explain the reason and scope when responding to your request. Provider backups and security logs may expire separately under the provider’s retention schedule.
6. Security and children
Cloud data is sent over encrypted connections and separated by Firebase access rules. No system can be guaranteed completely secure, so the app limits what it sends and does not upload measurement audio or racquet photos. Tennis Tension Lab is a general-audience sports utility and is not directed to children under 13.
한국어 요약
마이크는 라켓 텐션 측정 중에만 사용됩니다. 두드리는 소리는 기기 메모리에서 분석한 뒤 즉시 폐기되며 녹음 파일로 저장하거나 업로드하지 않습니다. 라켓·스트링 세팅·측정 결과와 환경설정은 익명 Firebase ID를 기준으로 동기화될 수 있습니다. 이름, 이메일, 전화번호는 앱 사용에 필요하지 않으며 광고 추적이나 개인정보 판매를 하지 않습니다. 설정의 동기화 데이터 초기화에서는 라켓·측정 관련 기록을 삭제할 수 있습니다. 문의: aflhzv@gmail.com
측정 결과 신고
‘측정 결과가 이상해요’를 눌러 보내면 선택한 사유, 자유 입력, 예상 텐션과 함께 측정 당시의 측정 계산 설정과 중간 결과, 5회 타격 분석값, 라켓·스트링·교체 및 관련 측정 기록, 언어와 기기·앱 정보를 보관합니다. 예상 텐션은 검증되지 않은 사용자 추정값으로 구분하며 녹음은 포함하지 않습니다. 2026년 10월 2일부터 서버의 신규 신고 저장과 이메일 전송은 중단되어 있습니다. 앱은 대기 중인 신고를 서버로 전송할 수 있지만 서버는 저장·메일 발송 전에 거절합니다. 미전송 신고는 기기에 보관하여 앱이 열려 있고 인터넷에 연결된 동안 재시도합니다. 이전에 접수된 Firebase 자료, 운영자 이메일 사본과 비공개 S3 전송 확인 정보는 남아 있을 수 있습니다.
신고는 텐션 추정 개선을 위한 분석에 사용하며 현재 자동 만료는 없습니다. 동기화 데이터 초기화는 제출한 신고와 전송 대기 중인 신고를 삭제하지 않습니다. 앱 삭제는 기기의 대기 내역만 삭제하며 이미 접수된 자료는 유지됩니다. 열람·삭제 요청은 측정 시각과 신고 번호 (알고 있는 경우)를 적어 aflhzv@gmail.com으로 보내 주세요. 설치 계정을 확인한 뒤 Firebase 자료·이메일 사본·전송 확인 정보를 함께 처리하며 제공업체 백업은 별도로 만료될 수 있습니다.
커뮤니티 개인정보 안내
커뮤니티 참여는 선택 사항입니다. 글과 댓글은 이용 규칙 동의 후 작성 즉시 공개됩니다. 닉네임, 게시판·언어, 글 제목·본문, 댓글, 작성 시각, 작성자 구분, 추천 내역을 저장합니다. 공개된 글·댓글과 작성 시각·추천 수, 자유게시판의 닉네임은 다른 이용자가 볼 수 있습니다. 닉네임을 변경해도 기존 글·댓글에 저장된 닉네임은 바뀌지 않습니다.
글에 사진을 선택해 첨부하고 게시하면 크기를 줄인 WebP 사본을 인증된 서버를 통해 비공개 Amazon S3에 저장합니다. 원본 파일·원본 파일명·EXIF 정보는 전송하지 않습니다. Firebase에는 이미지 식별값·크기·설치 계정 연결과 업로드 한도 기록을 저장합니다. 공개 게시물의 사진은 로그인된 다른 커뮤니티 이용자가 볼 수 있으며, 익명 게시판이라도 사진 속 내용으로 본인을 알아볼 수 있습니다. Google Firebase와 Amazon Web Services는 커뮤니티 제공과 안전한 운영을 위해 이 정보를 처리합니다.
익명 게시판에는 닉네임이나 Firebase 계정 ID를 공개하지 않습니다. 다만 차단 기능을 위해 같은 게시판의 동일 작성물을 연결할 수 있는 작성자 식별값을 사용합니다. 자유·익명 게시판은 서로 다른 식별값을 사용하며, 운영자는 비공개 연결 정보를 통해 작성물을 설치 계정과 연결할 수 있습니다. 따라서 운영자에게까지 완전히 익명인 방식은 아닙니다. 본문에 직접 적은 개인정보는 다른 이용자에게 보일 수 있으므로 주의해 주세요.
신고 시 신고 계정, 대상 글·댓글과 작성자 식별 정보, 사유, 선택적으로 입력한 설명, 접수 시각과 처리 상태를 저장합니다. 신고는 운영자와 신고 계정만 접근할 수 있고, 신고 대상 작성자나 다른 이용자에게 공개하지 않습니다. 차단 시에는 대상 작성자, 게시판, 시각, 목록 구분용 글 제목 또는 댓글 일부를 비공개로 저장합니다. 차단은 본인의 화면에서 숨기는 기능이며 원문을 모두에게서 삭제하는 기능은 아닙니다.
이용 규칙 동의 버전·시각, 계정과 작성자의 비공개 연결 정보, 사후 신고 처리·게시물 숨김· 작성 제한 기록도 저장합니다. 개별 추천 내역은 비공개이며 합계만 표시합니다. 운영자와 Google Firebase는 커뮤니티 제공, 신고 처리, 차단 유지, 부정 이용 방지와 정보 요청 처리를 위해 이 정보를 처리합니다. 서비스 제공 과정에서 국외에서 처리될 수 있습니다.
커뮤니티 정보 보관·삭제
커뮤니티 관리와 답변을 위해 새로 공개된 글·댓글은 Amazon SES를 거쳐 운영자의 Gmail 수신함으로 전달될 수 있습니다. 원문, 댓글의 원 게시글, 게시판·선택 언어·작성 시각, 자유게시판 닉네임 또는 익명 표시, 게시판별 작성자 식별값, 문서 참조와 사진 개수를 포함합니다. 사진 파일·비공개 계정 연결 정보·기기 정보는 포함하지 않으며, 선택 언어를 이용자의 국가나 실제 위치로 해석하지 않습니다. Amazon S3의 비공개 발송 기록으로 중복 전송을 줄이고 실패한 전송을 재시도합니다.
운영자 이메일은 별도 사본이므로 게시물 숨김·삭제로 자동 회수되지 않습니다. 커뮤니티 삭제 요청에는 운영자 수신함 사본과 관련 발송 기록도 포함되며, 신고 조사나 법적 보관이 필요한 경우 사유와 범위를 안내합니다. 이 사본에 자동 만료는 적용되지 않습니다. 운영 로그에는 본문 대신 처리 건수·실패 단계만 남기며 30일 후 만료됩니다.
커뮤니티 기록에는 현재 자동 만료가 적용되지 않습니다. 프로필과 글·댓글은 운영자가 삭제 요청을 처리하거나 직접 삭제할 때까지 보관됩니다. 신고·동의·작성자 연결·처리 기록은 신고 조사, 유효한 작성 제한, 정보 요청 처리에 필요한 동안 사용되며 운영자가 보관과 삭제를 처리합니다. 게시물 숨김은 저장된 원문의 삭제와 다릅니다. 법적 의무나 진행 중인 분쟁으로 일부 보관이 필요하면 삭제 요청 답변에서 사유와 범위를 안내합니다.
사진 사본과 작성이 완료되지 않은 비공개 업로드에도 같은 보관 원칙이 적용됩니다. 게시물을 숨기면 새 사진 요청이 차단되지만 저장된 파일이나 다른 이용자가 이미 보관한 사본까지 삭제되지는 않습니다. 사진 삭제 요청은 계정 소유와 신고 조사에 필요한 보관 여부를 확인한 뒤 관련 S3 파일과 Firebase 이미지 예약 기록까지 함께 처리합니다.
동기화 데이터 초기화나 앱 삭제는 커뮤니티 기록을 삭제하지 않습니다.차단 내역은 커뮤니티의 ‘차단한 작성자’에서 해제할 수 있고, 추천은 해당 글에서 다시 눌러 취소할 수 있습니다. 그 밖의 열람·정정·삭제 요청은 aflhzv@gmail.com으로 보내 주세요. 게시판, 글 제목과 대략적인 작성 시각을 알려주시면 해당 설치 계정의 작성 여부를 확인하는 방법을 안내합니다. 닉네임만으로는 본인 여부를 판단하지 않으며, 비밀번호나 신분증을 보내지 마세요. 앱을 삭제하면 원래 계정 확인이 어려워질 수 있습니다. 다른 이용자가 별도로 복사한 내용이나 제공업체의 백업·보안 로그는 별도로 남을 수 있습니다.
7. Changes
This page will be updated when the app’s data practices materially change. The effective date at the top shows the latest revision.