하루 한 명,
24시간의 설렘
끝없이 프로필을 넘기는 소개팅은 그만. ONLY24는 오늘 단 한 사람과의 진짜 연결에 집중하는 소셜 매칭 앱입니다. 매칭된 순간부터 24시간, 시간이 지나면 모든 대화는 사라집니다.
왜 하루에 한 명일까
선택지가 많을수록 마음은 가벼워집니다. ONLY24는 '오늘 하루의 연결'이라는 제약을 제품의 핵심 가치로 설계했습니다.
하루 딱 한 명
매일 단 한 명만 추천합니다. 무한 스와이프 대신, 오늘 만난 한 사람에게 온전히 집중하는 만남.
24시간 후 소멸
매칭된 순간부터 24시간. 시간이 지나면 나눈 대화는 깨끗이 사라져 기록이 남지 않습니다.
취향으로 통하다
취향이 담긴 사진 한 장으로 결이 맞는 상대를 찾습니다. 위치가 아니라 감성으로 — AI가 사진을 읽어 '같은 감성의 상대'를 연결합니다.
화면으로 보는 ONLY24
매칭에서 채팅, 친구·영상통화까지 — 하루의 인연이 흐르는 전체 플로우를 화면별로 정리했습니다.
카카오·게스트로 시작하는 핑크 그라데이션 온보딩.
취향 사진으로 만난 오늘의 상대, 매칭률과 24시간 대화.
AI가 대화 주제를 제안하는 24시간 E2E 암호화 채팅.
같은 하루를 사는 사람들의 일상을 나누는 소셜 피드.
마음이 통하면 친구로. 7일간 이어지는 친구 채팅.
대화 성장 기록·매칭 이력·구독을 관리하는 마이페이지.
핵심 기능
매칭 그 이후를 책임지는 기능들 — 대화를 돕고, 안전을 지키고, 인연을 이어줍니다.
AI 대화 코치
무슨 말을 꺼낼지 막막할 때, GPT 기반으로 대화 주제와 표현을 실시간 제안하고 대화 습관도 기록합니다.
사진 매칭
취향이 담긴 사진 한 장으로 결이 맞는 상대를 탐색. Gemini 임베딩(768차원) 기반 코사인 유사도 매칭.
E2E 암호화 채팅
AES-256-GCM + X25519 ECDH로 메시지를 보호합니다. 두 사람 외에는 운영자조차 대화를 볼 수 없습니다.
영상통화
WebRTC 기반 1:1 영상통화. 마음이 맞으면 앱 안에서 바로 얼굴을 보고 대화할 수 있습니다.
PASS 본인인증
PASS 앱으로 간편 본인인증. 만 19세 이상만 가입할 수 있고 중복 가입도 차단합니다.
구독 & 광고
flutter_inapp_purchase 프리미엄(매칭·영상통화·친구 슬롯 확대)과 AdMob, 서버측 영수증 검증.
기술 아키텍처
Flutter 클라이언트와 TypeScript Cloud Functions(asia-northeast3)를 축으로, Firestore·Supabase 이중 데이터 계층 위에 보안과 결제를 얹었습니다.
풀어낸 난제들
겉으로는 단순한 매칭 앱이지만, 보안·동시성·AI·생명주기에서 비직관적인 문제들을 다뤘습니다.
종단간 암호화 키 라이프사이클
X25519 ECDH로 세션 키를 합의하고 AES-256-GCM으로 메시지를 암호화합니다. 로그아웃(clearKeys)과 계정 삭제(deleteKeys)의 키 처리를 분리해, 재로그인 시 과거 24시간 채팅을 그대로 복호화하도록 설계했습니다.
트랜잭션 기반 일일 매칭 한도
Firestore 트랜잭션으로 양쪽 일일 매칭 한도를 동시성 안전하게 차감·환원합니다. 프리미엄 판정은 위조 불가능한 서버 SSOT(users.isPremium)로 일일 한도 우회를 차단하고, 거절·만료 시 카운트를 자동 환원합니다.
사진 임베딩 매칭 파이프라인
취향 사진을 Gemini 임베딩(768차원)으로 벡터화해 코사인 유사도로 매칭합니다. 사람 우선 + 일정 시간 후 봇 폴백(on-demand), 같은 사진의 비결정적 임베딩까지 방어하는 임계값 튜닝을 적용했습니다.
백그라운드에서도 끊기지 않는 매칭
앱이 백그라운드로 가도 매칭이 멈추지 않도록 heartbeat 타임아웃을 앱 생명주기를 넘어 보존(90초 → 10분)하고, 서버 cron이 봇 폴백을 이어받아 검색 중 상태가 유실되지 않게 했습니다.
흔적을 남기지 않는 대화
매칭과 동시에 시작되는 24시간 카운트다운. 시간이 지나면 대화는 흔적 없이 사라집니다. 프라이버시는 부가 기능이 아니라 제품의 전제입니다.
- 종단간 암호화 — 메시지는 기기에서 암호화되어 서버는 암호문만 저장합니다.
- 24시간 자동 삭제 — 매칭 만료와 함께 대화와 키가 정리됩니다.
- 신고·차단 — 누적 신고 사용자는 매칭에서 자동 제외됩니다.
- 화면 캡처 방지 — 민감 화면에 ScreenSecurity를 적용했습니다.