DESIGN.md
Rama main · réplica de lectura del repositorio original.
# Design System — ShareDesk
## Product Context
- **What this is:** 호스트의 Google Drive 저장 공간을 여러 사람이 각자의 Google 계정으로 함께 쓰는 웹 기반 공유 바탕화면이다.
- **Who it is for:** 가족, 친구, 소규모 팀처럼 파일을 복잡한 권한 설정 없이 같은 공간에 놓고 쓰려는 사람들.
- **Project type:** 상호작용이 많은 웹 앱.
## Aesthetic Direction
- **Direction:** Dusk Room OS — 해 질 녘 작은 작업실을 닮은 따뜻한 도트 데스크톱.
- **Decoration level:** 배경은 expressive, 실제 조작 영역은 intentional.
- **Mood:** 조용하고 포근하지만 장난감 같지는 않다. 누군가 먼저 와서 불을 켜 둔 공동 작업실처럼 느껴져야 한다.
- **References:** [Galmuri](https://github.com/quiple/galmuri), [retro desktop references](https://dribbble.com/search/retro-desktop), [pixel interface references](https://dribbble.com/search/pixel-art-interface).
## Typography
- **Desktop UI:** Galmuri11 — 한글이 흐트러지지 않는 실제 비트맵 계열 글꼴. 데스크톱 화면의 아이콘, 창, 작업표시줄에 사용한다.
- **Login/Join/Admin:** Galmuri11 — 로그인·가입·차단 화면도 데스크톱과 같은 도트 카드(`src/app/auth.module.css`)로 그리며, 위젯 창과 웹 화면이 같은 규칙을 쓴다. Geist Sans는 Galmuri11에 없는 글자의 대체 글꼴이자 관리 화면 표·설명처럼 길게 읽는 본문에만 쓴다.
- **Data:** Geist Mono — 용량, 시간, 진행률처럼 숫자 정렬이 필요한 곳에만 사용한다.
- **Loading:** `/public/fonts/Galmuri11.woff2`를 자체 호스팅한다. OFL 1.1 라이선스 파일을 함께 둔다.
- **Scale:** 데스크톱 UI는 9–20px 범위에서 정보 밀도와 모바일 화면에 맞춰 조절한다. 핵심 라벨은 11–14px을 기본으로 삼는다.
## Color
- **Approach:** 표현력 있는 배경 위에 제한된 UI 팔레트.
- **Night:** `#10172b` — 가장 깊은 배경과 그림자.
- **Panel:** `#182446` — 짙은 보조 버튼과 작은 패널 면.
- **Taskbar:** `#10172b` — 하단 작업표시줄.
- **Window:** `#f4e7c5` — 폴더·미리보기 창의 밝은 본문.
- **Title:** `#596078` — 비활성 창 제목줄. 활성 창은 `#2d5c5b`를 사용한다.
- **Peach:** `#f2a56f` — 선택, 진행, 주요 포인트.
- **Amber:** `#ffd27d` — 기본 강조와 따뜻한 빛.
- **Cream:** `#fff4d2` — 주요 글자와 밝은 면.
- **Teal:** `#61b3a6` — 연결됨, 완료.
- **Error:** `#e96872`; **Warning:** `#f1b65b`; **Info:** `#79a8e8`.
- 모든 아이콘 이름에는 배경과 관계없이 읽히는 짙은 그림자를 준다.
## Spacing
- **Base unit:** 4px.
- **Density:** 데스크톱은 compact, 터치 화면은 comfortable.
- **Scale:** 2, 4, 8, 12, 16, 24, 32, 48px.
## Layout
- **Approach:** 실제 OS 관례를 따르는 자유 배치 캔버스 + 구조적인 창 내부.
- **Desktop:** 위 상태바 34px, 아래 도크 58px, 나머지는 아이콘 캔버스.
- **Trash:** 휴지통은 화면 오른쪽 아래에 고정하고 작업표시줄에는 넣지 않는다. 바탕화면 아이콘보다 앞, 열린 창보다 뒤에 두며 뚜껑·손잡이·세로 홈이 보이는 금속 휴지통 형태를 유지한다.
- **Icon footprint:** 바탕화면 크기에 비례하는 상대 크기를 쓴다. 아이콘 위치와 창 크기도 현재 바탕화면을 기준으로 저장·복원하여, 작은 화면에서는 작게 보이고 큰 화면에서는 크게 보이게 한다.
- **Windows:** 제목줄로 이동, 오른쪽 아래에서 크기 변경. 모바일에서는 화면 대부분을 차지한다.
- **Corners:** 일반 UI 0–4px, 도크와 알림만 8–12px. 둥근 카드 일색을 피한다.
- **Borders:** 1px 선 대신 2px 빛/어둠 면을 겹친 픽셀 프레임을 쓴다.
## Motion
- **Approach:** intentional.
- **Duration:** 눌림 70ms, 메뉴/창 140ms, 알림 220ms.
- **Easing:** 위치 이동은 ease-out, 작은 강조는 `steps(2, end)`.
- `prefers-reduced-motion`에서는 등장과 흔들림을 없앤다.
## Interaction Rules
- 폴더는 더블클릭/Enter로 창에서 연다. 파일은 지원 형식이면 미리보기 창으로 열고, 지원하지 않으면 내려받는다. 우클릭 메뉴에서는 미리보기와 다운로드를 따로 고를 수 있다.
- 한 번 클릭은 선택만 한다. 빈 공간 클릭은 선택을 푼다.
- 우클릭 메뉴는 선택한 대상 또는 바탕화면에 맞는 동작만 보여 준다.
- 드래그가 끝났을 때만 공유 위치를 저장하고, 다른 사용자의 변경은 조용히 다시 불러온다.
- 업로드 중에는 파일명과 전체 진행 개수를 작업표시줄 위에 보여 준다.
- 화면 오른쪽 아래에 고정된 휴지통을 누르면 휴지통 창이 열린다. 작업표시줄에는 휴지통 버튼을 두지 않는다.
- 빈 폴더에 사람을 흉내 내는 안내 문구를 놓지 않는다. 폴더 메모지와 새 폴더·텍스트 문서 작업을 직접 보여 준다.
## Safe Choices and Deliberate Risks
- **Safe:** 아이콘, 작업표시줄, 제목줄, 더블클릭, 우클릭이라는 익숙한 데스크톱 문법을 그대로 쓴다.
- **Safe:** 삭제는 기존 확인 단계를 유지하고 업로드/다운로드 동작도 바꾸지 않는다.
- **Risk:** 회색 Windows 95 복각 대신 포근한 해 질 녘 작업실을 써서 제품 고유의 장소감을 만든다. 대신 배경 디테일은 아이콘 영역 밖으로 제한한다.
- **Risk:** 한글 픽셀 글꼴을 전면 사용한다. 대신 긴 설명은 크기와 줄 간격을 올려 읽기 어려움을 막는다.
## Decisions Log
| Date | Decision | Rationale |
| --- | --- | --- |
| 2026-08-10 | Dusk Room OS를 초기 디자인 방향으로 채택 | 사용자가 요청한 도트 스타일과 실제 파일 작업의 읽기 쉬움을 함께 살리기 위해 |
| 2026-08-10 | 배경은 생성 에셋, 아이콘과 창은 코드로 제작 | 배경은 감성을 높이고 조작 요소는 흐려짐 없이 선명하게 유지하기 위해 |
| 2026-08-12 | 휴지통을 작업표시줄 밖의 화면 오른쪽 아래에 고정 | 파일 작업 버튼과 휴지통을 구분하고 익숙한 데스크톱 배치를 따르기 위해 |