이 문서(개요)의 역할: 배경·문제·목표·사용자·가치·MVP 범위·비기능·성공 기준 등 큰 관점을 담는다. 화면별 상세 요구사항은 각 화면 문서가 단일 기준(SSOT) 이며, 이 문서는 그 지도를 제공한다.
⚠️ 화면별 상세는 각 화면 문서에, 공통 정의(내비·칩·글자수·날짜·문구·이미지·접근성)는 **§12 공통 기준**에 둔다. 모두 기획자 관점의 플랫폼 무관 정의이며(구현 방식은 담지 않음), 개요에 중복하지 않는다.
| 문서 | 담당 화면 | SSOT 범위 | 백엔드 |
|---|---|---|---|
| 01. 홈 · 관계 대시보드 | 7.1 | 그래프/리스트뷰, 태그 필터, 1년 전 오늘 플로팅, 하단 내비 | home |
| 02. 사람 (등록 · 프로필) | 7.2, 7.3 | 인물 등록/수정, 프로필 요약·취향·태그·통계, 즐겨찾기 | person |
| 03. 사람별 타임라인 | 7.4 | 이벤트 타임블록, 활동 흐름 시각화, 카테고리 필터 | timeline |
| 04. 상황 기록 작성 | 7.5 | 제목·왜·무엇을 + 감정·날씨·카테고리 칩, 연결할 사람, 저장→타임라인 반영 | event |
| 05. 전체 타임라인 | 신규 | 나의 통합 연대기(전 인물 기록을 시간순), 카테고리·사람 필터 | timeline |
관계도감은 내가 만난 사람과 함께한 순간을 사람 중심으로 저장하고, 시간이 흐른 뒤에도 관계의 맥락을 다시 꺼내볼 수 있게 하는 개인 관계 기록 서비스다.
연락처처럼 이름과 번호만 저장하는 앱이 아니라, 사람별 프로필, 만남 기록, 좋아하는 것/조심할 것, 관계 태그, 타임라인, 1년 전 오늘 회고를 한곳에 모아 보여준다.
사용자는 인간관계와 관련된 정보를 여러 곳에 흩어 저장한다.
- 연락처에는 사람이 있지만, 어떤 관계인지와 함께한 기록이 없다.
- 캘린더에는 일정이 있지만, 그 사람과 어떤 일이 있었는지 남지 않는다.
- 메모앱에는 기록할 수 있지만, 사람별로 다시 보기 어렵다.
- 사진첩에는 순간이 있지만, 관계의 흐름으로 정리되지 않는다.
- 오랜만에 연락하거나 다시 만날 때, 상대의 취향과 최근 함께한 일을 떠올리기 어렵다.
핵심 문제는 사람과의 관계 정보가 고정 정보, 추억, 취향, 만남 기록으로 흩어져 있어 한눈에 관계를 이해하기 어렵다는 것이다.
- 홈에서 관계를
그래프뷰또는리스트뷰로 선택해 볼 수 있게 한다. → 01 - 사람 프로필에서 관계 요약, 취향, 태그, 최근 함께한 일을 빠르게 확인하게 한다. → 02
- 사람별 타임라인에서 이벤트 기록을 시간순으로 회고하게 한다. → 03
- 전체 타임라인(나의 통합 연대기)에서 모든 기록을 하나의 시간축으로 회고하게 한다. → 05
- 기록 작성은 감정·제목·왜/무엇을 등을 짧게 남기는 통합 입력으로 부담을 낮춘다(30초). → 04
1년 전 오늘에 해당하는 기록이 있을 때만 회고 플로팅을 띄운다. → 01- 즐겨찾기한 사람은 관계도 맵에서 시각적으로 구분한다. → 02 · 01
- 만난 사람과의 맥락을 잘 기억하고 싶은 사람
- 회사 동료, 친구, 스터디원 등 여러 관계를 동시에 관리하는 사람
- 오랜만에 누군가를 만날 때 최근 함께한 일과 취향을 떠올리고 싶은 사람
- 인간관계를 점수화하기보다 따뜻하게 기록하고 회고하고 싶은 사람
- 관계 맥락 저장: 이름, 생일, 처음 만난 날, 마지막 만난 날, 관계 태그를 한곳에 모은다.
- 사람별 회고: 사람마다 타임라인을 제공해 함께한 일을 시간순으로 본다.
- 가벼운 기록: 제목, 카테고리 chip, 왜/무엇을 입력으로 짧게 기록한다.
- 관계 재발견: 1년 전 오늘 기록이 있는 경우에만 플로팅으로 자연스럽게 회고를 유도한다.
- 중요한 사람 강조: 즐겨찾기한 사람을 관계도 맵에서 프로필 테두리로 표시한다.
- 홈 / 관계 대시보드
- 그래프뷰 / 리스트뷰 전환
- 사람 추가
- 사람 프로필
- 사람별 타임라인
- 전체 타임라인 (나의 통합 연대기)
- 상황 기록 작성
- 태그 chip 추가 및 제거
- 즐겨찾기
- 1년 전 오늘 기록 플로팅
- 하단 내비게이션
- 실제 푸시 알림
- 캘린더, 연락처, 메신저 자동 연동
- AI 관계 분석
- 관계 점수화
- 복잡한 통계 대시보드 (인사이트 화면 포함)
- 다른 사용자와의 기록 공유
- 소셜 피드
관계도감은 "이미 흩어져 있는 관계 정보를 한곳에 모은다"(§2)가 지향점이라, 연락처·메신저·SNS에서 사람 정보를 자동으로 끌어오는 요구가 자연스럽게 나온다. 하지만 각 소스는 플랫폼 정책·API 제약·법(개인정보보호법) 때문에 가능한 범위가 크게 다르다. 여기서는 "무엇이 되고 무엇이 안 되는지"를 확정해, 자동 연동을 MVP에서 제외(§6)한 근거와 향후 확장 시 전제를 남긴다.
| 소스 | 가능 여부 | 접근 방식 | 실제로 얻는 정보 | 핵심 제약 |
|---|---|---|---|---|
| 연락처 | ✅ 가능 | OS 권한으로 직접 읽기(iOS Contacts / Android ContactsContract) | 이름·전화·이메일·소속(회사/부서)·생일 | 사용자 권한 동의 필수. 목적 미고지 시 앱스토어 심사 반려 |
| 핸드폰 갤러리 | ✅ 가능(보조) | OS 권한 + 사진 EXIF | 촬영일시·GPS 위치 → 만남 시점 시그널 | "누가 찍혔는지"는 앱이 직접 얻지 못함(자체 얼굴 인식 필요, iOS는 시스템 결과 접근 불가) |
| 사용자가 공식 "데이터 내보내기(Get a copy of your data)"로 받은 Connections CSV 업로드 | 이름·회사·직책·연결된 날짜 | 이메일은 상대가 공개 설정한 경우만 채워짐(대부분 공란). 실시간 API·스크래핑은 약관 위반 | ||
| 카카오톡 | 사용자가 대화방 대화 내보내기(.txt) 업로드 → 파싱 | 표시 이름·대화 빈도(관계 강도 추정) | 친구목록 내보내기 기능 자체가 없음. 프로필 사진·전화번호 취득 불가. 공식 SDK 친구목록은 "우리 앱 이미 사용 중인 친구"로만 한정 | |
| 슬랙 | 워크스페이스 관리자 권한의 users.list |
워크스페이스 멤버 프로필 | 워크스페이스 단위라 개인용 인맥 수집 개념이 없음. 관리자만 export 가능 |
- 연락처 = 뼈대, 나머지 = 보조 시그널. 자동 실시간 연동 대신, 안 되는 소스는 "사용자가 직접 내보낸 파일을 업로드(import)" 하는 UX로 우회한다. 이는 약관·법 위반을 피하는 유일한 합법 경로다.
- 카카오톡은 친구목록이 아니라 대화 파일 파싱으로만 접근한다(친구목록 export 불가).
- LinkedIn CSV는 이메일 매칭이 약하므로 이름 기반 매칭을 전제로 한다.
- 동일 인물 병합(entity resolution) 이 여러 소스를 합칠 때의 실제 난이도다. 여러 소스에서 온 같은 사람을 한 명으로 합치는 규칙이 별도로 필요하다.
- 제3자(친구) 정보를 수집·저장하면 원칙적으로 정보주체 동의가 걸린다. 실무적 리스크 최소화는 온디바이스 처리·서버 미전송을 기본으로 두는 것이다.
- 서버 저장이 필요하면 최소 수집·암호화·삭제권 보장을 설계 전제로 한다.
- 연락처·사진 권한은 명확한 목적 고지가 없으면 스토어 심사에서 반려된다.
읽기용 기능 개요. 상세는 각 기능이 속한 화면 문서(SSOT)에서 정의한다.
| 기능 | 설명 | 우선순위 | SSOT |
|---|---|---|---|
| 홈 관계 대시보드 | 관계 그래프/리스트 진입점 제공 | 1 | 01 |
| 그래프뷰/리스트뷰 전환 | 관계도 또는 리스팅 보기 선택 | 1 | 01 |
| 사람 추가 | 새 인물 프로필 등록 | 1 | 02 |
| 사람 프로필 | 관계 요약, 취향, 태그, 통계 표시 | 1 | 02 |
| 사람별 타임라인 | 사람과 관련된 기록을 시간순 표시 | 1 | 03 |
| 전체 타임라인 | 전 인물 기록을 하나의 시간축으로 회고 | 2 | 05 |
| 상황 기록 작성 | 감정·제목·왜·무엇을 등으로 기록 저장 | 1 | 04 |
| 카테고리 태그 chip | 기록과 사람을 태그로 그룹화 | 1 | 02 · 04 |
| chip 제거 | 선택된 태그를 제거 | 2 | 01 |
| 즐겨찾기 | 중요 인물을 저장하고 관계도에서 강조 | 2 | 02 |
| 1년 전 오늘 플로팅 | 해당 기록이 있을 때만 회고 카드 노출 | 2 | 01 |
| 활동 흐름 시각화 | 사람별 기록 흐름을 차트형 UI로 표시 | 3 | 03 |
| 프로필 수정 | 등록된 사람 정보 수정 | 3 | 02 |
전 화면(01~05)이 공유하는 제품 규칙을 여기 한곳에 확정한다. 각 화면 문서는 재정의하지 않고 이 절을 참조한다. 웹·모바일 공통 기준이므로 제품이 "무엇을" 하는지만 적고, 구현 방식(플랫폼별 "어떻게")은 담지 않는다.
비기능(공통): 모바일 우선 UI · 하단 내비 일관 유지 · 기록 작성 30초 목표(→ 04) · 프로필↔타임라인 탭 전환(→ 02·03) · 주요 CTA는 하단(엄지) 영역 · 사적 데이터라 개인 기록처럼 느껴지게.
좌→우 5칸 고정 순서:
| 순서 | 슬롯 | 진입 화면 | 아이콘 의미 |
|---|---|---|---|
| 1 | 홈 | 관계 대시보드(그래프/리스트 전환) — 01 | 관계 지도 |
| 2 | 타임라인 | 나의 통합 연대기(전역): 모든 기록을 시간순 — 05 | 시간 흐름 |
| 3 | + | 기록 작성(가운데 도드라진 버튼) — 04 | 더하기 |
| 4 | 사람 | 인물 목록(디렉터리): 조회·검색·추가 — 02 | 사람 |
| 5 | 설정 | 설정(칩 관리 등, 아래) | 톱니 |
- +는 라벨 없는 가운데 강조 버튼. 좌측=홈·타임라인, 우측=사람·설정. 홈·타임라인·사람·설정만 탭 선택 상태를 가진다. 현재 탭은 진한 톤, 나머지는 연한 톤(색 없이 흑백).
- 이 구성이 확정 기준이며 스케치의 옛 내비(인사이트 포함본 등)를 대체한다. 인사이트 탭은 없다(복잡한 통계·인사이트는 MVP 제외, §6).
- +(기록) 동작: 기록은 연결된 사람이 있어야 성립한다(최소 저장 = 연결할 사람 1명 이상). 인물 화면에서 진입하면 그 사람을 미리 채우고, 가운데 +로 진입하면 사람부터 고르게 하며, 사람이 0명이면 사람 추가로 안내한다. 기록 작성은 위에 겹쳐 뜨는 화면이라 탭 선택을 바꾸지 않는다.
- 설정(MVP): ① 칩 관리(실제 기능 — 12.2) ② 앱 정보(버전 등). 알림·계정·테마·내보내기 등은
[post-MVP].
칩 종류는 4가지(감정·날씨·카테고리·관계태그)이며 각 종류는 독립 세트다.
칩에는 두 갈래가 있다:
- 공통용 칩: 서비스가 기본 제공하며 모든 사용자에게 보인다(아래 표의 기본 제공값).
- 개인용 칩: 사용자가 직접 만든 칩으로 그 사용자에게만 보인다.
- 칩을 고르는 곳(기록 작성 등)의 목록 = 공통용 + 그 사용자의 개인용 (공통용이 먼저, 개인용이 뒤).
| 종류 | 공통용(기본 제공, 순서대로) | 선택 | 붙는 대상 | 필수 | 한 번에 고를 수 |
|---|---|---|---|---|---|
| 감정 | 반가움·뭉클·편안·즐거움·고마움·그냥 | 여러 개 | 기록 | 아니오 | 최대 5개 |
| 날씨 | 맑음·흐림·비·쌀쌀·더움 | 하나 | 기록 | 아니오 | 0~1개 |
| 카테고리 | 만남·연락·기념일·기타 | 하나 | 기록 | 예 | 정확히 1개(기본 만남) |
| 관계태그 | (공통용 없음 — 모두 개인용. 예: 소중한 친구·회사 동료) | 여러 개 | 인물 | 아니오 | 인물당 최대 10개 |
- 카테고리(기록의 성격)와 관계태그(인물의 라벨)는 서로 다른 종류다(통일하지 않음).
- 개인용 칩: 사용자가 자유롭게 만들고·이름 바꾸고·지운다. 이름을 바꾸면 그 사용자의 지난 기록에도 반영되고, 지워도 이미 남긴 기록엔 남고 새로 고를 목록에서만 빠진다.
- 공통용 칩: 모두에게 공유되므로 한 사용자가 바꾸거나 없앤다고 다른 사용자에게 영향을 주지 않는다(개인이 내리면 자기 목록에서만 감춘다).
- 이름·개수: 칩 이름은 10자 이내, 같은 종류 안에서 중복 불가. 개인용은 종류별 최대 30개까지. 카테고리는 늘 최소 1개는 남긴다(기본값
만남). - 관리: 새 칩 만들기는 각 칩 선택 영역 끝의
+ 추가. 개인용 칩의 이름 변경·삭제는 설정 →칩 관리. 칩을 내려도 과거 기록은 지워지지 않으므로 전용 문구로 안내(아래 12.5).
각 입력의 글자수 한도. 넘으면 "최대 N자까지 쓸 수 있어요" 로 안내한다.
| 대상 | 한도 |
|---|---|
| 인물 이름 / 관계 유형 | 20자 |
| 칩·태그 이름 | 10자 |
| 기록 제목 | 40자 |
| 좋아하는 것 / 조심할 것 (각 항목) | 30자 |
| 왜 / 무엇을 (각) | 100자 |
- 필수 항목이 비면 저장하지 않고 안내한다.
- 날짜는 기기 로컬 기준. 처음 만난 날은 미래 불가, 마지막 만난 날은 처음 만난 날 이후·오늘 이하, 생일은 연도 생략 가능(생략 시
월 일만), 기록언제는 기본 오늘·미래 불가(시간은 선택).
| 용도 | 포맷 | 예 |
|---|---|---|
| 절대 날짜(정보행) | YYYY. M. D. |
2019. 8. 3. |
| 절대 날짜(타임라인 카드) | YYYY.MM.DD (요일) [+ HH:mm] |
2024.04.13 (토) 15:00 |
| 생일 | M월 D일 + 다가오는 생일까지 D-n |
3월 15일 · D-260 |
| 처음 만난 날 경과 | N일째(만난 날=1일째) |
2154일째 |
| 알고 지낸 기간 | 가장 큰 단위 1개 | 6년 |
- 상대시간: 0일=오늘, 1일=어제, 2
13일=59일=N일 전, 14N주 전, 60~364일=N개월 전(30일=1개월로 내림), 365일 이상=N년 전.
톤: 존댓말·담백·따뜻, 명령형 대신 권유형, 이모지 0~1개, 관계를 점수화·서열화·평가하는 표현 금지. 빈 상태 = 공감 한 줄 + 이어질 행동. 각 화면은 아래를 상황으로 참조해 재사용한다(문구를 새로 짓지 않는다).
| 상황 | 문구 | 버튼 |
|---|---|---|
| 홈·기록한 사람 0명 | 아직 기록한 사람이 없어요. 첫 사람을 추가해 관계를 남겨보세요. | [+ 사람 추가] |
| 타임라인 0건 | 아직 함께한 기록이 없어요. 첫 순간을 새겨보세요. | [기록 작성] |
| 필터 결과 0건 | 이 조건에 맞는 기록이 없어요. | [필터 초기화] |
| 기록·사람 없음 | 먼저 함께한 사람을 추가해 주세요. | [+ 사람 추가] |
| 필수 누락(이름) | 이름을 입력해 주세요. | — |
| 글자수 초과 | 최대 {N}자까지 쓸 수 있어요. | — |
| 날짜 순서 오류 | 마지막 만난 날은 처음 만난 날 이후여야 해요. | — |
| 미래 날짜 | 오늘보다 미래일 수는 없어요. | — |
| 중복 | 이미 있는 항목이에요. | — |
| 저장 실패 | 저장에 실패했어요. 잠시 후 다시 시도해 주세요. | — |
| 칩 이름 없음 | 칩 이름을 입력해 주세요. | — |
| 칩 개수 초과 | 칩은 종류별로 최대 30개까지 만들 수 있어요. | — |
| 카테고리 최소 | 카테고리는 최소 1개가 필요해요. | — |
| 삭제 확인(일반) | 삭제하면 되돌릴 수 없어요. 삭제할까요? | [취소] [삭제] |
| 칩 삭제 확인 | '{라벨}'을 목록에서 지울까요? 이미 기록한 칩은 그대로 남아요. | [취소] [지우기] |
빈 상태·필터 문구의 명사는 화면 대상에 맞춘다 — 홈에서 사람을 거를 땐 "이 조건에 맞는 사람이 없어요.", 타임라인에서 기록을 거를 땐 "…기록이 없어요."
- 아바타: 사진이 없으면 이름 첫 글자로 모노그램(영문은 대문자 한 글자, 한글·이모지·숫자는 그대로). 색으로 사람을 구분하지 않고 하나의 흑백 톤으로 통일한다.
- 이미지: 프로필 1장 / 기록 최대 5장, 각 10MB 이하, jpg·png·heic·webp. 프로필은 정사각으로 자르고 없으면 모노그램.
- 접근성: 누르는 대상은 충분히 크게, 명암 대비는 충분히, 아이콘만 있는 조작 요소엔 낭독용 대체 설명 제공, 시스템 글자 확대에 레이아웃이 깨지지 않게 대응.
- 사용자가 첫 방문 후 사람 1명을 추가할 수 있다.
- 사용자가 사람 프로필에서 관계 요약을 이해할 수 있다.
- 사용자가 상황 기록 1개를 작성하고 사람별 타임라인에서 확인할 수 있다.
- 사용자가 그래프뷰와 리스트뷰의 차이를 이해하고 전환할 수 있다.
- 1년 전 오늘 기록이 없는 경우 플로팅이 보이지 않는다.
- 즐겨찾기한 사람이 관계도에서 명확히 구분된다.
- 사용자가 관계 정보를 직접 입력하는 것을 부담스러워하지 않을까?
왜와무엇을입력 구조가 기록 작성에 충분히 자연스러울까?- 그래프뷰가 예쁘지만 실제로 탐색에 도움이 될까?
- 리스트뷰와 그래프뷰 중 사용자가 더 자주 쓰는 방식은 무엇일까?
- 1년 전 오늘 회고가 반갑게 느껴질까, 부담스럽게 느껴질까?
- 좋아하는 것/조심할 것 입력이 관계를 따뜻하게 돕는가, 관리 대상으로 느껴지게 하는가?
- SSOT 원칙: 한 요구사항은 한 문서에서만 정의한다. 다른 문서에서 필요하면 링크로 참조한다.
- 상세 스펙: 글자수·규칙·기본값·상태·문구 등은 각 화면 문서(공통은 §12 공통 기준)에 확정값으로 둔다.
- 기획자 관점·플랫폼 무관: PRD는 웹·모바일 공통 기준이다. 기획자가 정하는 "무엇을"(값·규칙·문구·동작)만 적고, 개발자가 정하는 "어떻게"(세는 법·차단 방식·데이터 구조·컴포넌트·치수·성능)는 담지 않는다.
- 변경 시: 요구사항을 바꾸면 해당 SSOT 문서만 고치면 되고, 참조하는 문서는 링크라 자동으로 최신을 가리킨다.