Skip to content

Commit ad93f07

Browse files
SOIVclaude
andcommitted
refactor(ui): packages/ui → packages/controls 이름 변경 및 Control 구현 현황 문서화
- packages/ui 디렉토리를 packages/controls로 이동, 패키지명 @fieldstack/ui → @fieldstack/controls 변경 - Control 백로그 상태 기준에 '규격 확정' 단계 추가, P0/P0.5 전 항목을 '완료' → '규격 확정'으로 정정 - 로드맵 1.5.1 섹션에 실제 구현 미착수 상태 명시 및 체크리스트를 규격/구현 두 블록으로 분리 - 1.5.2 설치 마법사에 별도 Setup 시스템 분리 예정 및 DSM/Windows 스타일 참고 계획 주석 추가 - Phase 2 진입 게이트 Control 항목 체크 해제 (계약만 완료, packages/controls 구현 필요) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 64015d5 commit ad93f07

13 files changed

Lines changed: 85 additions & 62 deletions

File tree

AGENTS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ node dist/index.js
107107

108108
Order (planned ESLint rule):
109109
1. External libraries (`react`, `express`)
110-
2. Internal packages (`@fieldstack/core`, `@fieldstack/ui`)
110+
2. Internal packages (`@fieldstack/core`, `@fieldstack/controls`)
111111
3. Relative imports (`./`, `../`)
112112

113113
Use `import type` for types.
@@ -141,7 +141,7 @@ Use `import type` for types.
141141
## UI/UX Guidelines (Planned)
142142

143143
- UI is fully separated from core/module business logic.
144-
- Prefer `@fieldstack/ui` components for consistency.
144+
- Prefer `@fieldstack/controls` components for consistency.
145145
- Tailwind CSS is the planned styling approach.
146146
- Users can override UI with `apps/web/src/custom-ui/`.
147147

README.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -33,26 +33,26 @@ Current phase: **Development in progress (Roadmap Phase 1.5)**
3333
- 🚧 Roadmap Phase 1.5 (Core Control Plane UI/UX) is in progress
3434
- 🎯 Target timeline remains **2026-2027**
3535

36-
### Phase Progress
37-
38-
| Phase | Scope (Roadmap) | Status | Progress |
39-
| ------- | ----------- | ------- | ------- |
40-
| Phase 1 | Core foundation setup | Completed ✅ | 100% |
41-
| Phase 1.5 | Core Control Plane UI/UX | In progress ⏳ | 40% |
42-
| Phase 2 | Core module development (Ledger, Subscription) | Not started 🚧 | 0% |
43-
| Phase 3 | Marketplace and website | Not started 🚧 | 0% |
44-
| Phase 4 | Deployment optimization | Not started 🚧 | 0% |
45-
| Phase 5 | Expansion and ecosystem | Not started 🚧 | 0% |
46-
| Phase 6 | Community growth (continuous) | Not started 🚧 | 0% |
47-
48-
#### Phase 1.5 Snapshot (2026-02-26)
49-
50-
- Control contracts (P0/P0.5): **100%**
51-
- `@fieldstack/ui` scaffold: **100%**
52-
- Render components (TSX + styles + a11y behaviors): **0%**
53-
- End-to-end flow verification: **0%**
54-
55-
> Note: This phase table follows `docs/v2_FINANCIAL-LEDGER/roadmap/01-development-plan.md` and is updated as implementation progresses.
36+
### Phase Progress
37+
38+
| Phase | Scope (Roadmap) | Status | Progress |
39+
| ------- | ----------- | ------- | ------- |
40+
| Phase 1 | Core foundation setup | Completed ✅ | 100% |
41+
| Phase 1.5 | Core Control Plane UI/UX | In progress ⏳ | 40% |
42+
| Phase 2 | Core module development (Ledger, Subscription) | Not started 🚧 | 0% |
43+
| Phase 3 | Marketplace and website | Not started 🚧 | 0% |
44+
| Phase 4 | Deployment optimization | Not started 🚧 | 0% |
45+
| Phase 5 | Expansion and ecosystem | Not started 🚧 | 0% |
46+
| Phase 6 | Community growth (continuous) | Not started 🚧 | 0% |
47+
48+
#### Phase 1.5 Snapshot (2026-02-26)
49+
50+
- Control contracts (P0/P0.5): **100%**
51+
- `@fieldstack/controls` scaffold: **100%**
52+
- Render components (TSX + styles + a11y behaviors): **0%**
53+
- End-to-end flow verification: **0%**
54+
55+
> Note: This phase table follows `docs/v2_FINANCIAL-LEDGER/roadmap/01-development-plan.md` and is updated as implementation progresses.
5656
5757
---
5858

README_ko.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Fieldstack은 개인 생산성과 재무 관리를 위한 오픈소스 기반의
4848
#### Phase 1.5 스냅샷 (2026-02-26)
4949

5050
- Control 계약(P0/P0.5): **100%**
51-
- `@fieldstack/ui` 패키지 기초 스캐폴딩: **100%**
51+
- `@fieldstack/controls` 패키지 기초 스캐폴딩: **100%**
5252
- 실제 렌더 컴포넌트 구현(TSX + 스타일 + 접근성 동작): **0%**
5353
- 설치 -> 로그인 -> 홈 -> 설정/관리자 흐름 통합 검증(E2E): **0%**
5454

docs/v2_FINANCIAL-LEDGER/roadmap/01-development-plan.md

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,21 +127,35 @@ Fieldstack/
127127
> 원칙: "모든 Control 선제 구현"이 아니라, Core 흐름에 필요한 Control MVP를 먼저 고정하고,
128128
> 추가 Control은 Phase 2 모듈 개발/커뮤니티 요청 기반으로 점진 확장한다.
129129
130+
> **현재 상태:** P0/P0.5 Control은 규격·계약 정의만 완료된 상태이며, `packages/controls` 실제 구현은 미착수입니다.
131+
> `apps/web` 각 View에 인라인으로 작성된 UI가 현재 동작 레퍼런스이고,
132+
> 2026-04-12 확정된 다크 모드 디자인 토큰 시스템을 기반으로 `packages/controls` 구현을 진행하면 됩니다.
133+
> 상세 구현 상태는 `docs/v2_FINANCIAL-LEDGER/ui/03-control-backlog.md` 기준으로 추적합니다.
134+
130135
Control 전체 목록과 상태 관리는 별도 문서에서 관리:
131136
- `docs/v2_FINANCIAL-LEDGER/ui/03-control-backlog.md` (P0 -> P0.5 -> P1)
132137

138+
**규격 확정 (완료):**
133139
- [x] Button 규격 확정 (Primary/Secondary/Danger/Ghost, size, loading, disabled)
134140
- [x] Toggle/Switch 규격 확정 (on/off 상태, 라벨 결합, 키보드 조작)
135141
- [x] ComboBox/Select 규격 확정 (단일/다중 선택, 검색, 빈 상태)
136142
- [x] Checkbox/Radio 규격 확정 (단일/그룹 선택, indeterminate 포함)
137143
- [x] Input 계열 공통 규칙 확정 (text/email/password/number/search/tel/url, validation/error/help text)
138-
- [ ] Control 접근성 기준 체크 (focus ring, 명도 대비, aria role/label, tab 순서)
139144
- [x] Control 우선순위 분류 (P0: Core 필수 / P0.5: 반복 사용 / P1/P2: 요청 기반)
140145
- [x] 신규 Control 추가 정책 확정 (요청 -> RFC/이슈 -> 디자인/접근성 검토 -> 릴리스)
141146

147+
**packages/ui 실제 구현 (미착수):**
148+
- [ ] P0 Control 구현 — Button / Input / Select / Checkbox / Radio / Switch / Modal / Form Field / Alert / Progress
149+
- [ ] P0.5 Control 구현 — Textarea / Password Input / OTP Input / Search Input / Spinner / Toast / Empty State / Skeleton
150+
- [ ] Control 접근성 기준 체크 (focus ring, 명도 대비, aria role/label, tab 순서)
151+
- [ ] `apps/web` View에서 `@fieldstack/controls` Control로 교체 검증
152+
142153
#### 1.5.2 설치 마법사 (초기 설정)
143154
**예상 기간: 4일**
144155

156+
> **향후 계획:** 현재 구현은 Phase 1.5 범위 내 기본 흐름 검증 목적이며, 완성 이후 별도 Setup 설치 시스템으로 분리 개발 예정.
157+
> UX 방향은 Synology DSM 초기 설정 또는 Windows 설치 마법사 스타일을 참고할 예정.
158+
145159
- [x] 개발용 bypass 실행 모드 제공 (`dev:bypass`, `dev:web:bypass`, `dev:api:bypass`)
146160
- [ ] Welcome 화면
147161
- [ ] Configuration 화면 (관리자 계정, DB, 선택 옵션)
@@ -211,7 +225,7 @@ Control 전체 목록과 상태 관리는 별도 문서에서 관리:
211225
- ✅ Phase 2 모듈 UI를 붙일 수 있는 라우팅/레이아웃 기반 확보
212226

213227
### Phase 2 진입 게이트 (권장)
214-
- [x] Control 패키지 MVP 완료 (Button/Input/Select/Toggle/Checkbox/Radio/Modal/Form + P0.5 계약)
228+
- [ ] Control 패키지 MVP 완료 (P0/P0.5 규격 확정됨 — `packages/ui` 실제 구현 및 `ready: true` 반영 필요)
215229
- [ ] Auth/Install/Home/Settings/Admin 흐름에서 공통 Control 재사용 검증
216230
- [ ] 접근성/반응형/상태 처리(Loading/Empty/Error/Unauthorized) 기준 통과
217231
- [ ] 핵심 E2E 통과 (설치 -> 로그인 -> 홈 -> 설정/관리자)

docs/v2_FINANCIAL-LEDGER/technical/00-tech-stack.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,10 @@
100100
**채택 방향 (2026-02): Radix + shadcn 패턴 + 내부 래퍼**
101101
- **Radix UI Primitives** - 접근성/키보드 동작/상태 머신 기반 Primitive
102102
- **shadcn/ui 패턴** - Tailwind 기반 스타일/조합 패턴 참고
103-
- **@fieldstack/ui (내부 패키지)** - 앱/모듈에서 사용하는 단일 진입점
103+
- **@fieldstack/controls (내부 패키지)** - 앱/모듈에서 사용하는 단일 진입점
104104

105105
**적용 원칙:**
106-
- 외부 라이브러리를 앱/모듈에서 직접 import하지 않고 `@fieldstack/ui`를 통해 사용
106+
- 외부 라이브러리를 앱/모듈에서 직접 import하지 않고 `@fieldstack/controls`를 통해 사용
107107
- Phase 1.5에서는 P0/P0.5 중심으로 Control MVP를 우선 구현
108108
- P1/P2는 모듈 요구사항/커뮤니티 요청 기반으로 점진 확장
109109

docs/v2_FINANCIAL-LEDGER/ui/01-core-components.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@
44

55
모듈 개발자가 UI/UX를 처음부터 만들 필요 없이, Core에서 제공하는 컴포넌트를 사용하여 빠르고 일관된 인터페이스를 구축할 수 있도록 지원합니다.
66

7-
## 장점
7+
## 장점
88

99
- ✅ 통일된 디자인 시스템
1010
- ✅ 즉시 사용 가능한 컴포넌트
11-
- ✅ 반응형 자동 처리
12-
- ✅ 다크모드 자동 지원
13-
- ✅ 접근성 자동 처리
14-
15-
## 구현 방향 (Phase 1.5 기준)
16-
17-
- Control 구현은 `Radix UI Primitives` 기반으로 진행
18-
- 스타일/조합 패턴은 `shadcn/ui` 방식을 참고
19-
- 실제 앱/모듈에서는 외부 라이브러리를 직접 사용하지 않고 `@fieldstack/ui`를 통해서만 사용
20-
- 우선순위는 `P0 -> P0.5 -> P1 -> P2` 순서로 적용
21-
- 상세 목록/상태는 `ui/03-control-backlog.md`에서 관리
11+
- ✅ 반응형 자동 처리
12+
- ✅ 다크모드 자동 지원
13+
- ✅ 접근성 자동 처리
14+
15+
## 구현 방향 (Phase 1.5 기준)
16+
17+
- Control 구현은 `Radix UI Primitives` 기반으로 진행
18+
- 스타일/조합 패턴은 `shadcn/ui` 방식을 참고
19+
- 실제 앱/모듈에서는 외부 라이브러리를 직접 사용하지 않고 `@fieldstack/controls`를 통해서만 사용
20+
- 우선순위는 `P0 -> P0.5 -> P1 -> P2` 순서로 적용
21+
- 상세 목록/상태는 `ui/03-control-backlog.md`에서 관리
2222

2323
## Core UI 구성
2424

@@ -174,4 +174,4 @@ FormBuilder 컴포넌트를 가져와서 사용합니다. 폼의 구조를 정
174174

175175
테마 파일에서 전체 앱의 시각 기준값을 관리합니다. 색상으로는 주색상(파란색 #3B82F6), 부차색상(회색 #6B7280), 위험색(빨간색 #EF4444), 성공색(초록색 #10B981)이 정의되어 있습니다. 폰트로는 일반 텍스트용 Inter와 코드용 JetBrains Mono를 사용합니다. 간격은 작음(0.5rem), 보통(1rem), 큼(1.5rem) 세 단계로 정의되어 있습니다.
176176

177-
사용자는 자유롭게 테마를 커스터마이징할 수 있습니다.
177+
사용자는 자유롭게 테마를 커스터마이징할 수 있습니다.

docs/v2_FINANCIAL-LEDGER/ui/03-control-backlog.md

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,36 +15,45 @@ Phase 2 이후 모듈/커뮤니티 요청에 따라 점진 확장하기 위한
1515
## 상태 기준
1616

1717
- `미착수` - 구현 시작 전
18+
- `규격 확정` - 인터페이스/계약 정의 완료, `packages/ui` 실제 구현 미착수
1819
- `진행중` - 작업 중
19-
- `완료` - Control 패키지 반영 완료
20+
- `완료` - `packages/ui`에 실제 컴포넌트 반영 + `ready: true` 확인 완료
21+
22+
> **현재 상태 (2026-04-12 기준):**
23+
> P0/P0.5 전 항목은 `규격 확정` 상태입니다. `packages/controls/src/components/index.ts`에 계약 타입만 선언되어 있으며
24+
> 실제 React 컴포넌트는 미구현입니다 (`ready: false`).
25+
>
26+
> `apps/web` 각 View에서 인라인으로 사용 중인 스타일/구조가 사실상의 레퍼런스이며,
27+
> 2026-04-12 UI/UX 전면 개편으로 확정된 **다크 모드 디자인 토큰 시스템**을 기반으로
28+
> `packages/controls` 구현을 진행하면 됩니다.
2029
2130
## P0 (Core 필수)
2231

2332
| Control | 우선순위 | 1.5 구현상태 | 비고 |
2433
| --- | --- | --- | --- |
25-
| Button | P0 | 완료 | Primary/Secondary/Danger/Ghost |
26-
| Input | P0 | 완료 | text/email/number/password |
27-
| Select / ComboBox | P0 | 완료 | single/multi + search |
28-
| Checkbox | P0 | 완료 | 단일/그룹 + indeterminate |
29-
| Radio | P0 | 완료 | 단일 선택 그룹 |
30-
| Switch / Toggle | P0 | 완료 | on/off + keyboard |
31-
| Modal / Dialog | P0 | 완료 | confirm/alert/prompt 패턴 |
32-
| Form Field Wrapper | P0 | 완료 | label/help/error/required |
33-
| Alert / Inline Message | P0 | 완료 | success/warning/error/info |
34-
| Progress | P0 | 완료 | linear + step progress |
34+
| Button | P0 | 규격 확정 | Primary/Secondary/Danger/Ghost |
35+
| Input | P0 | 규격 확정 | text/email/number/password |
36+
| Select / ComboBox | P0 | 규격 확정 | single/multi + search |
37+
| Checkbox | P0 | 규격 확정 | 단일/그룹 + indeterminate |
38+
| Radio | P0 | 규격 확정 | 단일 선택 그룹 |
39+
| Switch / Toggle | P0 | 규격 확정 | on/off + keyboard |
40+
| Modal / Dialog | P0 | 규격 확정 | confirm/alert/prompt 패턴 |
41+
| Form Field Wrapper | P0 | 규격 확정 | label/help/error/required |
42+
| Alert / Inline Message | P0 | 규격 확정 | success/warning/error/info |
43+
| Progress | P0 | 규격 확정 | linear + step progress |
3544

3645
## P0.5 (핵심 흐름 반복 사용)
3746

3847
| Control | 우선순위 | 1.5 구현상태 | 비고 |
3948
| --- | --- | --- | --- |
40-
| Textarea | P0.5 | 완료 | multi-line input |
41-
| Password Input | P0.5 | 완료 | show/hide + strength hint |
42-
| OTP / PIN Input | P0.5 | 완료 | 4~6자리 step-up 인증 |
43-
| Search Input | P0.5 | 완료 | debounce/clear |
44-
| Spinner / Loader | P0.5 | 완료 | blocking/non-blocking 로딩 |
45-
| Toast / Notification | P0.5 | 완료 | 전역 피드백 메시지 |
46-
| Empty State Block | P0.5 | 완료 | CTA 포함 빈 상태 |
47-
| Skeleton Loader | P0.5 | 완료 | list/card/form skeleton |
49+
| Textarea | P0.5 | 규격 확정 | multi-line input |
50+
| Password Input | P0.5 | 규격 확정 | show/hide + strength hint |
51+
| OTP / PIN Input | P0.5 | 규격 확정 | 4~6자리 step-up 인증 |
52+
| Search Input | P0.5 | 규격 확정 | debounce/clear |
53+
| Spinner / Loader | P0.5 | 규격 확정 | blocking/non-blocking 로딩 |
54+
| Toast / Notification | P0.5 | 규격 확정 | 전역 피드백 메시지 |
55+
| Empty State Block | P0.5 | 규격 확정 | CTA 포함 빈 상태 |
56+
| Skeleton Loader | P0.5 | 규격 확정 | list/card/form skeleton |
4857

4958
## P1 (자주 쓰이지만 일부 우선 구현)
5059

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "@fieldstack/ui",
2+
"name": "@fieldstack/controls",
33
"private": true,
44
"version": "0.0.0",
55
"main": "dist/index.js",
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ export interface UiProviderConfig {
44
}
55

66
export interface UiPackageMetadata {
7-
name: "@fieldstack/ui";
7+
name: "@fieldstack/controls";
88
version: string;
99
}
1010

@@ -14,6 +14,6 @@ export const UI_PROVIDER_CONFIG_DEFAULTS: UiProviderConfig = {
1414
};
1515

1616
export const UI_PACKAGE_METADATA: UiPackageMetadata = {
17-
name: "@fieldstack/ui",
17+
name: "@fieldstack/controls",
1818
version: "0.0.0"
1919
};

0 commit comments

Comments
 (0)