first commit

This commit is contained in:
2026-05-30 15:02:45 +09:00
commit 005719edee
212 changed files with 38830 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
# frontend
Nuxt 3 기반 프론트엔드 (SSG · 정적 생성 → nginx 정적 호스팅).
## 기술 스택
- **Nuxt 3** (Vue 3 + Vite) — 파일 기반 라우팅, 자동 임포트
- **Pinia** (`@pinia/nuxt`) — 상태 관리
- **Axios** — 중앙 인스턴스 + 응답 인터셉터 (에러코드 매핑)
- **ESLint** (`@nuxt/eslint`) · **oxfmt** — 린트/포맷
## 디렉터리 구조
```
frontend/
├── app.vue # 최상위 진입점 (NuxtLayout + NuxtPage)
├── error.vue # 전역 에러 페이지 (404 등)
├── nuxt.config.ts # Nuxt 설정 (SSG, runtimeConfig, 모듈)
├── pages/ # 파일 기반 라우팅 (index.vue = '/')
├── composables/ # useApi(axios), useUser 등 — 자동 임포트
├── stores/ # Pinia 스토어 (user.store.ts)
├── shared/utils/ # 순수 유틸 함수 (format.ts) — 자동 임포트
└── public/ # 정적 자원 (favicon 등)
```
## 환경변수
- `NUXT_PUBLIC_API_BASE_URL` — API 베이스 URL (`runtimeConfig.public.apiBaseUrl`).
- 도커 빌드 시 `docker-compose.yml``VITE_API_BASE_URL`(=`FRONT_API_URL`) 인자가
Dockerfile 에서 `NUXT_PUBLIC_API_BASE_URL` 로 매핑됩니다.
## 프로젝트 실행
```sh
npm install
```
### 개발 서버 (HMR)
```sh
npm run dev
```
### 정적 생성 (운영 빌드)
```sh
npm run generate # 산출물: .output/public
```
`npm run preview` 로 생성 결과를 로컬에서 확인할 수 있습니다.
### 타입 검사 / 린트 / 포맷
```sh
npm run typecheck
npm run lint
npm run format
```
## 참고
- 렌더링 방식은 SSG 입니다. 동적 SSR(Node 서버)이 필요해지면 `nuxt.config.ts` 에서
`ssr: true` 유지 + `npm run build` 산출물(`.output/server`)을 Node 로 구동하고
Dockerfile/nginx 구성을 서버 모드로 전환하면 됩니다.