이 문서는 HASHI Client의 목표 기술 스택과 현재 저장소 반영 상태를 구분해 기록합니다.
| Status | Meaning |
|---|---|
| Current | 현재 저장소에 설정되어 있습니다. |
| Planned | 도입 방향은 정했지만 아직 설정 전입니다. |
| Deferred | 도입 후보지만 별도 티켓에서 다룹니다. |
Current항목의 version은 현재 저장소 설정을 기준으로 적습니다.- 실제 dependency version의 source of truth는
package.json,pnpm-workspace.yaml,pnpm-lock.yaml입니다. - 이 문서는 사람이 빠르게 확인하기 위한 요약이므로 dependency를 바꾸면 함께 갱신합니다.
Planned와Deferred항목은 지금 version을 미리 고정하지 않습니다.- 새 도구를 도입할 때 공식 문서를 확인하고
pnpm-workspace.yaml의catalog또는 해당 workspacepackage.json에 version을 고정합니다.
| Area | Stack | Version | Status | Notes |
|---|---|---|---|---|
| Package manager | pnpm |
10.18.3 |
Current | 루트 packageManager 기준 |
| Monorepo | pnpm workspace, pnpm catalog, Turborepo |
pnpm@10.18.3, turbo@^2.7.2 |
Current | workspace와 task graph 기준 |
| Language | React, TypeScript |
react@^19.2.6, typescript@~6.0.2 |
Current | apps/client, packages/* 공통 기준 |
| Bundler | Vite |
vite@^8.0.12 |
Current | @hashi/client 실행/빌드 기준 |
| PWA | vite-plugin-pwa, Workbox |
vite-plugin-pwa@^1.3.0 |
Current | Manifest와 정적 앱 셸 캐시 기준 |
| Routing | React Router |
react-router-dom@^7.18.1 |
Current | apps/client 라우팅과 route guard 기준 |
| Lint and format | ESLint, Prettier |
eslint@^10.3.0, prettier@^3.6.2 |
Current | 루트 script와 공통 ESLint config 기준 |
| CSS | Tailwind CSS, class-variance-authority |
tailwindcss@^4.3.1, cva@^0.7.1 |
Current | @tailwindcss/vite, tailwind-merge 사용 |
| Accessibility UI primitives | React Aria Components |
react-aria-components@^1.19.0 |
Current | HDS overlay/date 계열 primitive 기준 |
| API client | ky |
ky@^2.0.2 |
Current | apps/client/src/shared/api 기준 |
| API type generation | openapi-typescript |
openapi-typescript@^7.13.0 |
Current | Swagger/OpenAPI schema 타입 생성 기준 |
| Server state | TanStack Query |
@tanstack/react-query@^5.101.0 |
Current | app provider와 shared query client 기준 |
| Unit/Component test | Vitest |
vitest@^3.2.4 |
Current | client, HDS UI, shared config 기준 |
| E2E test | Playwright |
@playwright/test@^1.55.0 |
Current | client e2e scaffold 기준 |
| Web quality check | Lighthouse CI |
@lhci/cli@^0.15.1 |
Current | Client Lighthouse 검사 기준 |
| Icon pipeline | SVGR |
@svgr/core@^8.1.0 |
Current | packages/hds-icons generator 기준 |
| Error monitoring | Sentry |
@sentry/react@^10.60.0 |
Current | React SDK와 Vite plugin 기준 |
| Git hook | Husky, lint-staged |
husky@^9.1.7, lint-staged@^17.0.8 |
Current | prepare script와 lint-staged config 기준 |
| UI docs/component test | Storybook, Chromatic |
storybook@^10.4.6, chromatic@^17.5.0 |
Current | HDS UI Storybook 기준 |
| Deployment | Vercel |
vercel@^54.14.0 |
Current | Vercel workflow 기준 |
| Infra | AWS |
도입 시 결정 | Planned | AWS 리소스가 필요해질 때 별도 문서화 |
-
지도:
@vis.gl/react-google-maps@1.10.1(Current, client 전용). 공식 문서. Google Maps JavaScript SDK와 Advanced Marker를 연결하며 식당 데이터 API와는 별개입니다. -
Package manager: pnpm
-
Monorepo: Turborepo
-
Language: React, TypeScript
-
Bundler: Vite
-
Routing: React Router
-
Accessibility UI primitives: React Aria Components
-
API client: ky
-
API type generation: OpenAPI TypeScript
-
Server state: TanStack Query
-
Unit/Component test: Vitest
-
E2E test: Playwright
-
Web quality check: Lighthouse CI
-
Icon pipeline: SVGR
-
Error monitoring: Sentry React
-
Git hook: Husky, lint-staged
-
UI docs/component test: Storybook
- 새 도구는 필요한 티켓에서 설치하고
package.json,pnpm-lock.yaml, 관련 문서를 함께 갱신합니다. - 여러 workspace에서 공유하는 외부 dependency는
pnpm-workspace.yaml의catalog에 등록합니다. - 앱에만 필요한 dependency는 먼저
@hashi/client에 추가합니다. - 새 도구를 추가하거나 기존 도구의 CI/검증 절차를 바꾸면 관련 script와 문서를 함께 갱신합니다.
- Playwright E2E task는 현재 client app에 있으며, 테스트 시나리오 확장은 별도 티켓에서 다룹니다.