PLIMAP์ ์ง๋ ์ ์ฅ์์ ์ด์ธ๋ฆฌ๋ ์์ ์ ํ์ผ๋ก ๋จ๊ธฐ๊ณ , ์ฃผ๋ณ ์ฅ์์์ ๋ค๋ฅธ ์ฌ๋์ด ๋จ๊ธด ์์ ์ ๋ฐ๊ฒฌํ๋ ์น ์๋น์ค์ ๋๋ค.
์ด ์ ์ฅ์๋ PLIMAP ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ํ ํ์ ํ๊ฒฝ๊ณผ ์ปจ๋ฒค์ ์ ๊ด๋ฆฌํฉ๋๋ค.
| ๋ด๋น ์์ญ | ์ฃผ์ ํ๋ฉด/์ ๋ฌด | ๋ด๋น์ |
|---|---|---|
| ์ธ์ฆ/ํ๋กํ | ๋ก๊ทธ์ธ, ํ์๊ฐ์ , ๋๋ค์, ํ๋กํ ์ฌ์ง | @JeongGyul |
| ๋ฉ์ธ ์ง๋ | ์ง๋ ์ถ์ฒ, ํ์ฌ ์์น, ํ ํ์ | @L0521 |
| ํ ๋ฑ๋ก | ์ฅ์ ์ ํ, ์ง๋ ์ ํ, ๋ ธ๋ ๊ฒ์, ์์ธ ์ ๋ ฅ, ๋ฑ๋ก ์๋ฃ | @kim3360 |
| ํ ์กฐํ | ์ฅ์ ๊ฒ์, ๊ฑฐ๋ฆฌ ์กฐ๊ฑด UI, ํ ์ ํ, ๊ณก ์์ธ ์ ๋ณด | @onebone |
| ๊ตฌ๋ถ | ๊ธฐ์ |
|---|---|
| Framework | React |
| Language | TypeScript |
| Build Tool | Vite |
| Package Manager | pnpm |
| Styling | Tailwind CSS |
| UI Registry | shadcn/ui |
| State Management | Zustand |
| API Client | axios |
| Server State | TanStack Query |
| Routing | React Router |
| Map API | Google Maps |
| Place Search / Geocoding | Kakao Local |
| Code Convention | ESLint, Prettier |
src/
api/
hooks/
features/
auth/
map/
pin/
profile/
routes/
store/
types/
utils/
main: ๋ฐฐํฌ ๊ธฐ์ค ๋ธ๋์นdevelop: ๊ฐ๋ฐ ํตํฉ ๋ธ๋์นfeat/{issue-number}-{title}: ๊ธฐ๋ฅ ์์ ๋ธ๋์น
์์:
feat/58-savings-recommendation
feat: ๊ธฐ๋ฅ ์ถ๊ฐfix: ๋ฒ๊ทธ ์์ refactor: ๋ฆฌํฉํ ๋งstyle: ์คํ์ผ ์์ chore: ์ค์ ๋ฐ ๊ธฐํ ์์
- ๊ธฐ๋ฅ ๋จ์ PR ์์ฑ
featureโdevelopโmainํ๋ฆ์ผ๋ก ๋ณํฉ- PR ์์ฑ ์ ์๋ ๋ช ๋ น์ด๋ก ์ฝ๋ ํ์ธ
pnpm lint:fix
pnpm formatpnpm install
pnpm dev์ด ์ ์ฅ์๋ develop ๋ธ๋์น push ๋๋ GitHub Actions ์๋ ์คํ์ผ๋ก ํ
์คํธ์ฉ GHCR ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ๋ค ๋ฐฐํฌ ์๋ฒ์ Docker Compose ์๋น์ค๋ก ๋ฐฐํฌํฉ๋๋ค. ์ค์ ์น ์๋น์ค ๋ฐฐํฌ๋ ๋ณ๋๋ก Vercel์์๋ ์งํํฉ๋๋ค.
| ์ด๋ฆ | ์ค๋ช | ์์ |
|---|---|---|
DEPLOY_HOST_USER |
SSH ์ ์ ์ฌ์ฉ์ | deploy |
VITE_API_BASE_URL |
ํ๋ก ํธ์๋๊ฐ ํธ์ถํ API ์ฃผ์ | https://api.example.com |
์ด์ ์ค์ ๊ฐ์ ๋์ผํ ์ด๋ฆ์ GitHub Secret๊ณผ Variable์ด ๋ชจ๋ ์์ผ๋ฉด Secret์ ์ฐ์ ์ฌ์ฉํ๊ณ , ๊ฐ์ด ์์ผ๋ฉด Variable, ๊ธฐ๋ณธ๊ฐ ์์๋ก ์ ์ฉํฉ๋๋ค. ๋จ, DEPLOY_HOST, DEPLOY_HOST_KNOWN_HOSTS, DEPLOY_HOST_SSH_KEY, GHCR_PULL_TOKEN, VITE_GOOGLE_MAPS_API_KEY, VITE_KAKAO_REST_API_KEY๋ Secret๋ง ์ฌ์ฉํฉ๋๋ค.
| ์ด๋ฆ | ์ค๋ช | ์์ |
|---|---|---|
DEPLOY_HOST |
๋ฐฐํฌ ๋์ ์๋ฒ ํธ์คํธ ๋๋ IP | |
DEPLOY_HOST_KNOWN_HOSTS |
๋ฐฐํฌ ์๋ฒ์ pinned known_hosts ๊ฐ | |
DEPLOY_HOST_SSH_KEY |
๋ฐฐํฌ ์๋ฒ์ ์ ์ํ SSH private key | |
DEPLOY_HOST_PORT |
SSH ํฌํธ | 22 |
DEPLOY_PATH |
์๋ฒ ๋ฐฐํฌ ๋๋ ํฐ๋ฆฌ | /opt/plimap-web |
HOST_PORT |
์๋ฒ์์ ๋ ธ์ถํ ์น ํฌํธ | 3000 |
GHCR_PULL_USERNAME |
์๋ฒ์์ GHCR ์ด๋ฏธ์ง๋ฅผ pullํ ๊ณ์ | |
GHCR_PULL_TOKEN |
GHCR pull ๊ถํ์ด ์๋ ํ ํฐ | |
VITE_GOOGLE_MAPS_API_KEY |
Google Maps API ํค | |
VITE_KAKAO_REST_API_KEY |
Kakao Local REST API ํค |
VITE_๋ก ์์ํ๋ ๊ฐ์ GitHub Secrets๋ก ๊ด๋ฆฌํ๋๋ผ๋ ํ๋ก ํธ์๋ ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์๋ ํฌํจ๋ ์ ์์ต๋๋ค.
pnpm build
env GHCR_OWNER=owner IMAGE_TAG=test HOST_PORT=3000 docker compose -f docker-compose.prod.yml config- ๋ก๊ทธ์ธ
- ์นด์นด์ค ํ์๊ฐ์
- ๊ตฌ๊ธ ํ์๊ฐ์
- ํ๋กํ ๋๋ค์ ์ค์
- ํ๋กํ ์ฌ์ง ๋ฑ๋ก
- ์ถ์ฒ์ ๋ฐ๋ฅธ ๋ฉ์ธ ์ง๋ ํ๋ฉด
- ํ์ฌ ์์น ๊ธฐ๋ฐ ์ง๋ ํ์
- ์ง๋ ์ ํ ํ์
- ๋ฑ๋กํ๊ธฐ ๋ฒํผ ์ง์
- ๋ฑ๋กํ๊ธฐ ๋ฒํผ ์ ํ
- ์ฅ์ ๊ฒ์ ๋๋ ์ง๋์์ ์์น ์ ํ
- ํ ๋ฑ๋ก ๊ฐ๋ฅ ์ฌ๋ถ ํ์ธ
- ๋ ธ๋ ๊ฒ์
- ์์ธ ์ ๋ณด ์ ๋ ฅ
- ๋ฑ๋ก ์๋ฃ
- ์ฅ์ ๊ฒ์
- ์ํ๋ ์ฅ์ ์ ํ
- 500m ์ด๋ด/๋ฐ ์ฌ๋ถ์ ๋ฐ๋ฅธ UI ์ฒ๋ฆฌ
- ํ ์ ํ
- ๊ณก ์์ธ ์ ๋ณด ํ์ธ