first commit
This commit is contained in:
@@ -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 구성을 서버 모드로 전환하면 됩니다.
|
||||
Reference in New Issue
Block a user