์คํธ๋งจ(AntMen) - ๊ฐ๋ฏธ๋ค์ ๊ณต๊ฐ์ ์ํ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค.
์ํธ๋งจ์ ์์์(๊ณ ๊ฐ)์ ๊ณต๊ธ์(๋งค๋์ )๋ฅผ ์ฐ๊ฒฐํ๋ ์๋น์ค ํ๋ซํผ์ ํ๋ก ํธ์๋์ ๋๋ค. ์ฌ์ฉ์ ์นํ์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๊ณ ๊ฐ์ด ์ฝ๊ฒ ์๋น์ค๋ฅผ ์์ฝํ๊ณ , ๋งค๋์ ๊ฐ ํจ์จ์ ์ผ๋ก ์์ ์ ๊ด๋ฆฌํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
KBE5_AntMen_FE/
โโโ apps/ # Next.js ์ฑ (๊ณ ๊ฐ/๋งค๋์ ์ฉ)
โ โโโ src/
โ โ โโโ app/ # App Router ํ์ด์ง
โ โ โ โโโ (user)/ # ๊ณ ๊ฐ ํ์ด์ง
โ โ โ โโโ manager/ # ๋งค๋์ ํ์ด์ง
โ โ โ โโโ ...
โ โ โโโ components/ # ๊ณตํต ์ปดํฌ๋ํธ
โ โ โโโ entities/ # ๋๋ฉ์ธ ์ํฐํฐ
โ โ โโโ features/ # ๊ธฐ๋ฅ๋ณ ๋ชจ๋
โ โ โโโ shared/ # ๊ณตํต ์ ํธ๋ฆฌํฐ
โโโ admin/ # React ์ฑ (๊ด๋ฆฌ์์ฉ)
โ โโโ src/
โ โ โโโ pages/ # ๊ด๋ฆฌ์ ํ์ด์ง
โ โ โโโ components/ # ๊ด๋ฆฌ์ ์ปดํฌ๋ํธ
โ โ โโโ api/ # API ํธ์ถ ํจ์
โโโ packages/ # ๊ณตํต ํจํค์ง
โโโ ui/ # ๊ณตํต UI ์ปดํฌ๋ํธ
- ์ค๋์ ํํ: ํน๋ณ ์ด๋ฒคํธ ๋ฐ ํ ์ธ ์ ๋ณด
- ์ถ์ฒ ์๋น์ค: ๊ฐ์ธํ๋ ์๋น์ค ์ถ์ฒ
- ๋น ๋ฅธ ์์ฝ: ์์ฃผ ์ด์ฉํ๋ ์๋น์ค ๋น ๋ฅธ ์์ฝ
- ์ค์๊ฐ ์๋ฆผ: ์๋ก์ด ๋งค์นญ, ์์ฝ ์ํ ๋ณ๊ฒฝ ์๋ฆผ
- ์นดํ ๊ณ ๋ฆฌ๋ณ ๊ฒ์: ์ฒญ์, ์ด์ฌ, ์๋ฆฌ ๋ฑ ์๋น์ค ๋ถ๋ฅ
- ์ง์ญ๋ณ ํํฐ๋ง: ๋ด ์ฃผ๋ณ ์๋น์ค ์ ๊ณต์ ๊ฒ์
- ๊ฐ๊ฒฉ ๋น๊ต: ์ฌ๋ฌ ๋งค๋์ ์ ๊ฐ๊ฒฉ ๋น๊ต
- ๋ฆฌ๋ทฐ ํ์ธ: ๋งค๋์ ๋ณ ํ์ ๋ฐ ํ๊ธฐ ํ์ธ
- ๋ค์ํ ๊ฒฐ์ ์๋จ: ์นด๋, ๊ณ์ข์ด์ฒด, ๊ฐํธ๊ฒฐ์
- ์์ ํ ๊ฒฐ์ : SSL ์ํธํ ๋ฐ ๋ณด์ ์ธ์ฆ
- ๊ฒฐ์ ๋ด์ญ: ์์ธํ ๊ฒฐ์ ๋ด์ญ ๋ฐ ์์์ฆ
- ํ๋ถ ์ฒ๋ฆฌ: ๊ฐํธํ ํ๋ถ ์ ์ฒญ ๋ฐ ์ฒ๋ฆฌ
- ๋ฐ์ํ ๋์์ธ: ๋ชจ๋ ๋๋ฐ์ด์ค์์ ์ต์ ํ๋ ํ๋ฉด
- ํฐ์น ์นํ์ : ๋ชจ๋ฐ์ผ์์ ํธ๋ฆฌํ ํฐ์น ์ธํฐํ์ด์ค
- ์คํ๋ผ์ธ ์ง์: ๋คํธ์ํฌ ์์ด๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์ฌ์ฉ
- ํธ์ ์๋ฆผ: ์ค์ํ ์๋ฆผ์ ์ค์๊ฐ์ผ๋ก ๋ฐ๊ธฐ
- ์์ ๋ก๊ทธ์ธ: Google, Kakao ๋ฑ ๊ฐํธ ๋ก๊ทธ์ธ
- JWT ์ธ์ฆ: ์์ ํ ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ
- ๊ถํ ๊ด๋ฆฌ: ์ฌ์ฉ์ ์ญํ ๋ณ ์ ๊ทผ ์ ์ด
- ๊ฐ์ธ์ ๋ณด ๋ณดํธ: ์ํธํ๋ ๊ฐ์ธ์ ๋ณด ์ฒ๋ฆฌ
- ํ: ๋ฉ์ธ ํ๋ฉด, ์ค๋์ ํํ
- ์๋น์ค ์์ฝ: ์นดํ ๊ณ ๋ฆฌ๋ณ ์๋น์ค ๊ฒ์ ๋ฐ ์์ฝ
- ๋ด ์์ฝ: ์์ฝ ๋ด์ญ ๋ฐ ์ํ ํ์ธ
- ๋ฆฌ๋ทฐ: ์๋น์ค ํ๊ธฐ ์์ฑ ๋ฐ ํ์ธ
- ์ด๋ฒคํธ: ํน๋ณ ์ด๋ฒคํธ ๋ฐ ํํ
- ๋ด ์ ๋ณด: ํ๋กํ ๊ด๋ฆฌ, ์ค์
- ํ: ์์ ํํฉ, ์์ต ์์ฝ
- ๋ด ์ ๋ฌด: ์๋ฝํ ์์ ๊ด๋ฆฌ
- ๋งค์นญ ์์ฒญ: ์๋ก์ด ์์ ๋งค์นญ ์ ์ฒญ
- ๊ฒ์ํ: ๋งค๋์ ์ปค๋ฎค๋ํฐ
- ๋ด ์ ๋ณด: ํ๋กํ, ๊ธ์ฌ ์ ์ฐ
- ์ ์ฒด ํํฉ ์์ฝ: ๋งค์ถ, ์์ฝ, ์ฌ์ฉ์ ํต๊ณ
- ์ค์๊ฐ ๋ชจ๋ํฐ๋ง: ์์คํ ์ํ ๋ฐ ์๋ฆผ
- ์ฐจํธ ๋ฐ ๊ทธ๋ํ: ๋ฐ์ดํฐ ์๊ฐํ
- ๊ณ ๊ฐ ๊ด๋ฆฌ: ๊ณ ๊ฐ ๊ณ์ ์ ๋ณด ๋ฐ ์ํ ๊ด๋ฆฌ
- ๋งค๋์ ๊ด๋ฆฌ: ๋งค๋์ ์น์ธ, ์ํ ๊ด๋ฆฌ
- ๋ธ๋๋ฆฌ์คํธ ๊ด๋ฆฌ: ๋ถ์ ์ฌ์ฉ์ ๊ด๋ฆฌ
- ์ ์ฒด ์์ฝ ํํฉ: ๋ชจ๋ ์์ฝ ์กฐํ ๋ฐ ๊ด๋ฆฌ
- ์์ฝ ์ํ ๊ด๋ฆฌ: ์์ฝ ์น์ธ, ์ทจ์, ๋ณ๊ฒฝ
- ์์ฝ ํต๊ณ: ์์ฝ ํจํด ๋ฐ ํธ๋ ๋ ๋ถ์
- ์๋ ๋งค์นญ: ๊ด๋ฆฌ์๊ฐ ์ง์ ๋งค๋์ ๋ฐฐ์
- ์ถ์ฒ ๋งค์นญ: AI ๊ธฐ๋ฐ ๋งค๋์ ์ถ์ฒ ์์คํ
- ๋งค์นญ ํต๊ณ: ๋งค์นญ ์ฑ๊ณต๋ฅ ๋ฐ ๋ง์กฑ๋ ๋ถ์
- ๋งค์ถ ํต๊ณ: ์ผ๋ณ, ์๋ณ, ์ฐ๋๋ณ ๋งค์ถ ๋ถ์
- ๋ง์กฑ๋ ๋ถ์: ๋ฆฌ๋ทฐ ๋ฐ ํ์ ํต๊ณ
- ํ๋ถ๋ฅ ๋ถ์: ํ๋ถ ์ฌ์ ๋ฐ ํจํด ๋ถ์
- ๋งค์ถ ๊ด๋ฆฌ: ๋งค์ถ ๋ด์ญ ๋ฐ ์ ์ฐ ๊ด๋ฆฌ
- ์ ์ฐ ๊ด๋ฆฌ: ๋งค๋์ ๋ณ ์ ์ฐ ๋ด์ญ
- ํ๋ถ ๊ด๋ฆฌ: ํ๋ถ ์์ฒญ ์ฒ๋ฆฌ ๋ฐ ์น์ธ
- ๋์๋ณด๋: ์ ์ฒด ํํฉ ์์ฝ
- ํ์๊ด๋ฆฌ: ๊ณ ๊ฐ/๋งค๋์ ๊ณ์ ๊ด๋ฆฌ
- ์์ฝ๊ด๋ฆฌ: ์ ์ฒด ์์ฝ ํํฉ
- ๋งค์นญ๊ด๋ฆฌ: ์๋/์๋ ๋งค์นญ ์์คํ
- ํต๊ณ: ๋งค์ถ, ๋ง์กฑ๋, ํ๋ถ๋ฅ ๋ถ์
- ์ฌ๋ฌด๊ด๋ฆฌ: ๋งค์ถ, ์ ์ฐ, ํ๋ถ ๊ด๋ฆฌ
- Next.js 14 (apps) - React ๊ธฐ๋ฐ ํ์คํ ํ๋ ์์ํฌ
- React 18 (admin) - ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Tailwind CSS - ์ ํธ๋ฆฌํฐ ๊ธฐ๋ฐ CSS ํ๋ ์์ํฌ
- Headless UI - ์ ๊ทผ์ฑ ์ค์ฌ ์ปดํฌ๋ํธ
- Lucide React - ๋ชจ๋ ์์ด์ฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Framer Motion - ๋ถ๋๋ฌ์ด ์ ๋๋ฉ์ด์
- Zustand - ๊ฒฝ๋ ์ํ ๊ด๋ฆฌ
- React Query - ์๋ฒ ์ํ ๊ด๋ฆฌ
- TypeScript - ํ์ ์์ ์ฑ
- ESLint - ์ฝ๋ ํ์ง ๊ด๋ฆฌ
- Prettier - ์ฝ๋ ํฌ๋งทํ
- Node.js 18.0 ์ด์
- Yarn 1.22.0 ์ด์
- Git
# ๋ฃจํธ ๋๋ ํ ๋ฆฌ์์
yarn install
# ๊ณ ๊ฐ/๋งค๋์ ์ฑ + ๊ด๋ฆฌ์ ์ฑ ๋์ ์คํ
yarn dev
# ๊ณ ๊ฐ/๋งค๋์ ์ฉ ์ฑ (http://localhost:4000)
yarn dev:apps
# ๊ด๋ฆฌ์์ฉ ์ฑ (http://localhost:5001)
yarn dev:admin
# ์ฒ์ ํ ๋ฒ๋ง ์คํ
yarn setup-https
# HTTPS๋ก ๊ฐ๋ฐ ์๋ฒ ์คํ
yarn dev:apps:https
yarn dev:admin:https
์ฑ | URL | ์ค๋ช |
---|---|---|
Apps (๊ณ ๊ฐ/๋งค๋์ ์ฉ) | http://localhost:3000 | ๋ฉ์ธ ์ ํ๋ฆฌ์ผ์ด์ |
Admin (๊ด๋ฆฌ์์ฉ) | http://localhost:3001 | ๊ด๋ฆฌ์ ๋์๋ณด๋ |
- ์ผ๊ด๋ ๋์์ธ: ํต์ผ๋ ์์, ํฐํธ, ๊ฐ๊ฒฉ
- ์ ๊ทผ์ฑ: WCAG 2.1 AA ์ค์
- ๋คํฌ ๋ชจ๋: ์ฌ์ฉ์ ์ ํธ๋์ ๋ฐ๋ฅธ ํ ๋ง ๋ณ๊ฒฝ
- ๊ตญ์ ํ: ๋ค๊ตญ์ด ์ง์ ์ค๋น
- ์ง๊ด์ ๋ค๋น๊ฒ์ด์ : ์ฌ์ด ๋ฉ๋ด ๊ตฌ์กฐ
- ๋น ๋ฅธ ๋ก๋ฉ: ์ต์ ํ๋ ์ด๋ฏธ์ง ๋ฐ ์ฝ๋
- ์ค๋ฅ ์ฒ๋ฆฌ: ์นํ์ ์ธ ์ค๋ฅ ๋ฉ์์ง
- ํผ๋๋ฐฑ: ์ฌ์ฉ์ ์ก์ ์ ๋ํ ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ
NEXT_PUBLIC_API_URL=http://localhost:9091
NEXT_PUBLIC_GOOGLE_CLIENT_ID=your_google_client_id
NEXT_PUBLIC_KAKAO_CLIENT_ID=your_kakao_client_id
REACT_APP_API_URL=http://localhost:9093
REACT_APP_GOOGLE_CLIENT_ID=your_google_client_id
# ์ ์ฒด ์ฑ ๋น๋
yarn build
# ๊ฐ๋ณ ์ฑ ๋น๋
yarn build:apps
yarn build:admin
# Docker ๋ฐฐํฌ
docker-compose build
docker-compose up -d
# ์ ์ ๋ฐฐํฌ
yarn workspace apps export
yarn workspace admin build
# ์ ์ฒด ํ
์คํธ ์คํ
yarn test
# ๊ฐ๋ณ ์ฑ ํ
์คํธ
yarn workspace apps test
yarn workspace admin test
# ๋ฆฐํธ ๊ฒ์ฌ
yarn lint
# ์ฝ๋ ํฌ๋งทํ
yarn format
# ์บ์ ์ ๋ฆฌ
yarn clean
-
ํฌํธ ์ถฉ๋
# ์ฌ์ฉ ์ค์ธ ํฌํธ ํ์ธ lsof -i :3000 lsof -i :3001
-
์์กด์ฑ ๋ฌธ์
# node_modules ์ญ์ ํ ์ฌ์ค์น rm -rf node_modules yarn install
-
์บ์ ๋ฌธ์
# ๋ชจ๋ ์บ์ ์ ๋ฆฌ yarn clean yarn cache clean
๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ค์์ ํ์ธํด์ฃผ์ธ์:
- Node.js ๋ฒ์ ํ์ธ
- ์์กด์ฑ ์ค์น ์ํ ํ์ธ
- ํ๊ฒฝ ๋ณ์ ์ค์ ํ์ธ
- ๋ธ๋ผ์ฐ์ ์ฝ์ ์๋ฌ ํ์ธ