Files
hushroom/.cli/spec.md

283 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 포커스텔라(Focustella) Web MVP 기획문서 (PRD v0.1)
> 혼자 일하는 사람을 위한 “집중 항해” 서비스.
> 별자리 항로(시간)를 선택하고, 출항 전 미션(이번 작업 목표)을 싣고, 항해(집중) 후 도착(짧은 회고)으로 항해일지를 남긴다.
---
## 1. 목적과 성공 기준
### 1.1 문제 정의
- 혼자 일할 때 **집중 시작**이 어렵고, 흐트러지면 다시 **재시작**이 힘들다.
- 작업을 마친 뒤 “내가 뭘 했지?”가 남아 **성취감/회고**가 약하다.
- 목표 미달성 시 기록이 “실패”로 남으면 **기분이 나쁘고** 서비스 이탈로 이어질 수 있다.
### 1.2 Web MVP 목표
- 세계관(우주 항해)을 **방해가 아니라 동기/의식(ritual)**로 사용해
1. 출항(시작) 장벽을 낮추고
2. 항해(집중) 방해를 최소화하며
3. 도착(회고)로 다음 행동을 남긴다.
### 1.3 성공 지표(초기)
- Activation: 첫 방문→첫 항해 시작 전환율
- Completion: 항해 종료까지 도달률(중단률 포함)
- Retention: D1/D7 재항해율
- Journal: 항해일지 생성률, 회고 입력률(1줄이라도)
---
## 2. 핵심 컨셉
### 2.1 핵심 루프(Core Loop)
1. 로비에서 **항로 선택**
2. 출항 전 **미션 체크인(목표 한 줄)**
3. 항해(집중)
4. 도착(짧은 회고)
5. 항해일지 저장
6. 다음 항해로 연결
### 2.2 톤&매너
- “훈육/채찍” 금지. “관제/도킹/로그” 같은 **부드러운 안내**.
- 실패/낙제/미완료 같은 표현 최소화.
- 기록은 **성공/실패**가 아니라 **진행/학습/다음 행동** 중심.
---
## 3. MVP 범위
### 3.1 포함(Include)
- 데스크탑 웹 중심(모바일은 최소 대응)
- 첫 화면(로비)에서 항로 선택 → 미션 → 항해실 → 도착/일지
- 항로: 1시간/3시간(초기 2~6개 카드 이내)
- 항해일지: 항로/미션/결과 상태/한 줄 회고/다음 액션
- “출발 시각”은 **강제 스케줄이 아닌** *몰입을 돕는 선택지*로 설계
### 3.2 제외(Exclude) — MVP에서 하지 않기
- 실시간 채팅, 랭킹, 과한 게임화
- 복잡한 애니메이션(항해실에서 특히 금지)
- 강한 방해 차단(사이트 차단/앱 차단)
- 복잡한 소셜 매칭/파티 시스템
---
## 4. 출발 시각(강제성) 설계
### 4.1 원칙
- “정시 출발만 가능”처럼 **기다림 강제**는 이탈 위험이 큼.
- 강제성은 “시간표”보다 “절차/윈도우”가 세계관과 UX 모두에 유리.
### 4.2 MVP 추천: 혼합형
- 기본: **즉시 출항(차터)** — 마찰 최소
- 옵션: **출항 윈도우(게이트 개방 시간)** — 몰입/의식/약한 강제성
- 예: 하루 4~8회, 불규칙 시각(09:0809:15 같은 7분 창)
- 사용자는 “대기”가 아니라 “출항 준비”를 하도록 로비에 체크리스트 제공
- 글로벌: 윈도우는 사용자 **로컬 시간대 기준**으로 제공(개인 루틴 중심)
- (추후) 이벤트성 “UTC 글로벌 편”은 주 1회 정도로 실험 가능
### 4.3 놓쳤을 때 UX(중요)
- “실패”가 아니라 “다음 도킹 창 안내”
- 즉시 출항(차터)로 우회 가능하게 유지
---
## 5. 정보 구조(IA) & 화면 구성
### 5.1 라우팅(예시)
- `/` 로비(항로 선택)
- `/boarding` 미션 체크인(출항 직전)
- `/flight` 항해실(집중)
- `/debrief` 도착/회고
- `/log` 항해일지 목록
- `/log/:id` 항해일지 상세
- `/settings` 설정(초간소/모션 감소 등)
### 5.2 화면별 스펙
#### A) 로비(첫 화면) — “항로 선택이 주인공”
**목표:** 설명보다 선택→출항까지 1분 안에 도달
구성(최소):
- 상단: 로고 | 항해일지 | 설정
- 메인 문장: “어느 별자리로 출항할까요?”
- (선택) 미션 한 줄 입력(바로 입력해도 되고, 탑승 후 입력해도 됨)
- 항로 카드 그리드(최대 6개)
- 별자리명 / 소요시간 / 한 줄 용도(딥워크/정리 등) / `탑승`
- 출항 방식 표기: `바로 출항` 또는 `다음 게이트 09:08`
- 하단 분위기: “정거장에 N명이 대기 중”(실시간이 아니어도 됨)
카드 예시:
- 오리온 · 3h · 딥워크(집필/코딩)
- 거문고 · 1h · 기획/정리
- 백조 · 1h · 회고/리뷰
#### B) 탑승(미션 체크인)
**원칙:** 미션은 “결과”가 아니라 “행동/진척” 형태로 유도
필드:
- 미션(필수): 한 줄
- (선택) 메모: 1줄(오늘의 제약/컨디션)
- 출항 버튼: `출항(도킹 완료)`
가이드 문구(예):
- “완료보다 진척을 목표로 적어보세요.”
- “예: ‘서론 10문장 쓰기’, ‘가설 2개 검증하기’”
#### C) 항해실(집중 화면) — “초간소 UI”
**원칙:** 항해실에서 연출/깜빡임/복잡한 UI 금지
구성(최소):
- 상단 작은 라벨: `오리온 항로 · 순항`
- 중앙: 남은 시간(크게)
- 하단: `일시정지` `종료` `메모(선택)`
- 옵션: “초 단위 숨기기(분 단위만)”, “모션 감소”
단계(점화/접근 등)는 **화면 변화 없이**:
- 상단 얇은 토스트 3초(선택 행동 있을 때만)
- 예: “접근 단계: 마무리 5분 — 다음 액션 한 줄 적기”
#### D) 도착(회고)
**목표:** 30초~2분 내 회고 완료 → 일지 생성
질문(추천):
1. 이번 항해에서 **확보한 것**(한 줄)
2. 다음 항해의 **첫 행동**(한 줄)
3. (선택) 막힌 이유(칩 선택)
결과 상태(실패 금지, 3상태):
- ✅ 계획대로
- 🌓 부분 진행
- 🧭 방향 재설정(범위 조정/우선순위 변경)
CTA:
- `항해일지 저장`
- `다음 항로 선택`
#### E) 항해일지 목록/상세
- 목록: 카드형(날짜, 항로, 미션, 상태)
- 상세: 자동 생성 템플릿 + 사용자 회고
---
## 6. 데이터 모델(초안)
### 6.1 Entity: Route
- id
- name (e.g., "오리온")
- duration_minutes (60/180)
- tag (딥워크/정리/리뷰)
- description (1줄)
### 6.2 Entity: Voyage(항해 세션)
- id
- user_id (MVP에서는 익명 가능)
- route_id
- scheduled_type: `charter | window`
- scheduled_at (optional)
- started_at
- ended_at
- status: `completed | partial | reoriented | aborted`
- mission_text
- notes (optional)
- debrief_progress (한 줄)
- next_action (한 줄)
- blocker_tag(optional): `scope | interruption | energy | priority_change | other`
### 6.3 Entity: User(옵션)
- id
- timezone
- preferences: minimal_mode, hide_seconds, reduce_motion
---
## 7. UX 규칙(중요)
### 7.1 “목표 미달성” 감정 설계
- “실패/미완료”를 저장하지 않는다.
- 기록은 항상 “진행/확보/다음 액션”으로 남는다.
- 중단(aborted)도 “이탈”이 아니라 “복귀 안내 + 다음 액션” 중심으로 처리.
### 7.2 항해 중 방해 최소화
- 알림 최소(단계 토스트는 선택형/짧게)
- 애니메이션/깜빡임 금지(특히 항해실)
- 소리 기본 OFF(옵션)
---
## 8. 기술/구현 메모(비결정 영역)
- 프론트: (예) Next.js/React
- 상태/타이머: 탭 비활성/절전 대응 고려
- 저장: 로컬 우선(익명 MVP), 추후 로그인/동기화
---
## 9. 분석/이벤트(최소)
- `route_view` (로비 노출)
- `route_select` (항로 선택)
- `mission_submit` (미션 체크인 완료)
- `voyage_start`
- `voyage_pause`
- `voyage_end` (status 포함)
- `debrief_submit` (회고 입력 완료)
- `log_view`
---
## 10. 로드맵(후순위)
1. 계정/동기화/멀티 디바이스
2. 출항 윈도우 개인화(사용자 루틴 기반)
3. “이벤트성 UTC 글로벌 편”
4. 데스크탑 앱(트레이/항상 위/단축키)
5. 모바일: 알림/일지 보기 중심
---
## 11. 오픈 이슈(결정 필요)
- 항로 개수: MVP는 2~6개 중 최적?
- 출항 윈도우: 하루 몇 회가 이탈을 최소화하면서 몰입을 만들까?
- 익명 사용 vs 최소 로그인: 초기 전환율/재방문 간 trade-off
- 항해 중 중단 정책: 즉시 종료 허용 + 도착 회고 최소 강제 여부
---
## 12. Acceptance Criteria (MVP 완료 기준)
- 사용자는 첫 화면에서 3클릭 이내로 항해 시작 가능
- 항해실은 5개 이하 UI 요소로 유지(타이머/미션/버튼)
- 도착 시 3상태(완료/부분/재설정) 중 하나로 저장 가능
- 항해일지 목록에서 과거 항해를 열람 가능
- “실패/미완료”라는 표현 없이도 유저가 상황을 기록할 수 있음