27189977358d6e7c6c58de94b35fa736cac40953
맥락: - 허브를 경유하는 흐름 대신 /space 한 화면에서 설정과 몰입을 이어서 처리할 필요가 있었습니다. - View 로직 분리와 파일 분할 기준을 지키면서 도크/시트 패턴을 통합해야 했습니다. 변경사항: - /space를 Setup(기본)과 Focus(시작 후) 2상태로 운영하는 space-workspace 위젯을 추가했습니다. - Setup Drawer를 추가해 Space 선택, Goal(필수), Sound(선택) 섹션과 하단 고정 CTA를 구성했습니다. - Goal 입력이 비어있으면 시작하기 버튼이 비활성화되도록 UI 검증을 반영했습니다. - Focus 상태에서 하단 HUD만 유지하고 우측 Tools Dock(🎧/📝/📨/📊/⚙) + 우측 시트 패턴을 적용했습니다. - Notes(쓰기)와 Inbox(읽기) 패널을 분리하고 더미 토스트 동작을 연결했습니다. - FSD 분리를 위해 features(space-select/session-goal/inbox)와 widgets(space-workspace/space-setup-drawer/space-focus-hud/space-sheet-shell)를 추가했습니다. - 기존 space-shell은 신규 워크스페이스로 연결되는 얇은 래퍼로 정리했습니다. 검증: - npx tsc --noEmit - npm run build 세션-상태: /space 단일 워크스페이스에서 Setup→Focus 전환이 동작합니다. 세션-다음: 진입 경로를 /space로 통일하고 레거시 /app 라우트를 정리합니다. 세션-리스크: useSearchParams 기반 초기값은 클라이언트 최초 렌더 기준으로만 반영됩니다.
VibeRoom Web
Next.js(App Router) + TypeScript + TailwindCSS 기반 VibeRoom 프론트엔드입니다.
실행 방법
npm install
npm run dev
브라우저에서 http://localhost:3000 접속
주요 라우트
/: Landing 페이지 (src/app/(landing)/page.tsx)/app: 가상공간 입장 허브/space: 집중공간 스켈레톤/stats: 집중 통계 목업/settings: 설정 목업/login: 로그인
구조
FSD 스타일로 src/ 하위 레이어를 사용합니다.
src/entities: room/user/session 타입 + 더미 데이터src/features: room-select/check-in/reactions/custom-entry-modal/profile-menu/distraction-dumpsrc/widgets: 페이지 섹션 단위 UI (TopBar, StartRitual, RoomsGallery, SpaceShell 등)src/shared: 공용 UI, 유틸, 설정src/app: App Router 페이지 조합
구현 범위
이번 변경은 UI 목업 중심입니다.
- 타이머 카운트다운/오디오 재생/실시간/DB 저장/API 호출 미구현
- 선택 하이라이트, 패널 토글, 모달 탭, 드롭다운, 라우팅, 토스트만 구현
문서(작업 재개용)
세션이 끊겨도 같은 품질로 이어서 작업하려면 아래 문서를 먼저 확인합니다.
docs/README.mddocs/00_project_brief.mddocs/01_ui_guidelines.mddocs/02_arch_fsd_rules.mddocs/03_routes_map.mddocs/90_current_state.md
Description
Languages
TypeScript
92.8%
CSS
6.7%
Shell
0.3%
JavaScript
0.2%