- ๐ ํ๋ก์ ํธ ๊ฐ์
- ๐ค ํ์
- ๐ก ์ฃผ์ ๊ธฐ๋ฅ
- ๐ฅ๏ธ ํ๋ฉด UI
- โ๏ธ ๊ธฐ์ ์คํ & ์ํคํ ์ฒ
- ๐งช QA & UT
- โญ ์ค์น ๋ฐ ์คํ
Important
Solepli(์ ํ๋ฆฌ)๋ 'ํผ๋๋ฌ'๊ฐ ํผ์ ๋ฐฉ๋ฌธํ๊ธฐ ์ข์ ์ฅ์๋ฅผ ์ฝ๊ณ ํธ๋ฆฌํ๊ฒ ์ฐพ์ ์ ์๋๋ก ๋ง๋ ์ฅ์ ์ถ์ฒ ๋ฐ ํ๋ ์ด์ ์๋น์ค์ ๋๋ค.
2-30๋๋ฅผ ์ค์ฌ์ผ๋ก ํผ์ ์๊ฐ์ ์ฆ๊ธฐ๋ ํ๋์ด ์ผ์ํ๋๊ณ ์์ง๋ง, ๊ธฐ์กด ์ง๋ ์๋น์ค๋ '1์ธ ์ด์ฉ์'๋ผ๋ ์ํฉ์ ์ถฉ๋ถํ ๊ณ ๋ คํ์ง ์์ ํผ์ ๋ฐฉ๋ฌธํ๊ธฐ ์ข์ ๊ณณ์ธ์ง ํ๋จํ๊ธฐ ์ด๋ ต๋ค๋ ๋ฌธ์ ์์ ์ถ๋ฐํ์ต๋๋ค.
์ฌ์ฉ์๋ ์ฅ์๋ฅผ ํ์ํ๊ณ ์ ์ฅํ ์ ์์ผ๋ฉฐ, ์์ ์ ๊ฒฝํ์ ๊ธ๊ณผ ์ฌ์ง์ผ๋ก ๊ธฐ๋กํ๊ณ ๊ณต์ ํ ์ ์์ต๋๋ค. ๋ํ ๋๋ง์ ํผ๋ ์ฝ์ค๋ฅผ ์ง์ ์์ฑํ๊ฑฐ๋ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ง๋ ์ฝ์ค๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
ํ์๋ฏผ Frontend Leader |
์ํฌ์ Frontend Dev |
์ดํํธ Frontend Dev |
- ์ง์ญยท์ฅ์ยท์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ์ ๋ ํธ(ํ๋ ์ด์ ๊ฒ์๋ฌผ)๋ฅผ ๊ฒ์ํ๊ณ ์ด๋
- ๋ค๋ ์จ ์ฅ์์ ๋ํ ๊ฒฝํ์ ๊ธ๊ณผ ์ฌ์ง์ผ๋ก ๊ธฐ๋ก
- ๋ค๋ฅธ ์ฌ์ฉ์์ ์ ๋ ํธ๋ฅผ ์ ์ฅํ๊ฑฐ๋, ์ ๋ ํธ ์ ์ฅ์๋ค์ ์ ๋ฃจํธ๋ก ํ ๋ฒ์ ์ ์ฅ
- ๋ค์ด๋ฒ ์ง๋ API ๊ธฐ๋ฐ ์ปค์คํ ๋ง์ปค ๋ ๋๋ง ๋ฐ ์นดํ ๊ณ ๋ฆฌ ํ์
- 1์ธ ๋ฐฉ๋ฌธ์ ๋ฆฌ๋ทฐ ๊ธฐ๋ฐ์ ๋ถ์๊ธฐยท1์ธ ์ด์ฉ ํ๊ทธ๋ก ์ฅ์ ์ ๋ณด ์์ฝ ์ ๊ณต
- ํค์๋/์ง์ญ ๊ฒ์, ํ์ฌ ์์น ๊ธฐ๋ฐ ์ฃผ๋ณ ์ฅ์ ์ถ์ฒ
- ์ ๋งตยท์ ๋ ํธ์์ ๋ชจ์ ์ฅ์๋ก ๋๋ง์ ํผ๋ ์ฝ์ค ์์ฑ
- ์ฅ์ ์ถ๊ฐ ์ ๋์ ์ ์ง๋์ ์ค์๊ฐ ์๊ฐํ, ์ฅ์๋ณ ๋ฉ๋ชจ ์์ฑ
- ์ถ๊ฐํ ์ฅ์ ๊ทผ์ฒ์ ์ธ๊ธฐ ์ฅ์ ์ถ์ฒ
- ์ ์ฅํ ์ฅ์ยท์ ๋ ํธยท์์ฑํ ์ ๋ ํธ๋ฅผ ํ ๊ณณ์์ ๊ด๋ฆฌ
- ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด ์ ์ฅ ํญ๋ชฉ์ ํด๋์ฒ๋ผ ๊ทธ๋ฃนํ
ํผ์ ๋ฐฉ๋ฌธํ๊ธฐ ์ข์ ์ฅ์๋ฅผ ํ์ยท๊ธฐ๋กยท๊ณต์ ํ๋ ์ ํ๋ฆฌ์ ํต์ฌ ํ๋ฉด์ ๋๋ค.
| SOLLECT_HOME | SOLLECT_WRITE | SOLLECT_DETAIL |
|---|---|---|
![]() |
![]() |
![]() |
| SOLMAP_HOME & SOLMAP_SEARCH | SOLMAP_DETAIL | SOLMAP_REVIEW |
|---|---|---|
![]() |
![]() |
![]() |
| SOLROUTE_LIST & SOLROUTE_DETAIL | SOLROUTE_CREATE |
|---|---|
![]() |
![]() |
| SOLMARK_HOME | PROFILE |
|---|---|
![]() |
![]() |
Tip
Vite ๊ธฐ๋ฐ์ ๊ฐ๋ฒผ์ด ๋น๋ ํ๊ฒฝ ์์์, Zustand์ React Query๋ก ํด๋ผ์ด์ธํธ/์๋ฒ ์ํ๋ฅผ ๋ถ๋ฆฌํด ๊ด๋ฆฌํ์ต๋๋ค.
- Vite: ๋น ๋ฅธ HMR๊ณผ ๋น๋ ์๋๋ฅผ ์ํ ๋ฒ๋ค๋ฌ
- React 19 / TypeScript: ์ปดํฌ๋ํธ ๊ธฐ๋ฐ UI ๋ฐ ํ์ ์์ ์ฑ ํ๋ณด
- Tailwind CSS v4: ์ ํธ๋ฆฌํฐ ํด๋์ค ๊ธฐ๋ฐ์ ๋น ๋ฅธ ์คํ์ผ๋ง
- Zustand: ๋ง์ปค, ๊ฒ์, ๋ฐํ ์ํธ ๋ฑ ๋๋ฉ์ธ๋ณ ํด๋ผ์ด์ธํธ ์ํ ๊ด๋ฆฌ
- React Query: ์๋ฒ ์ํ ์บ์ฑ ๋ฐ API ์ฐ๋ (
@tanstack/react-query) - Axios: API ํต์ ํด๋ผ์ด์ธํธ
- Naver Maps API: ์ง๋ ๋ ๋๋ง, ์ปค์คํ ๋ง์ปค, bounds/zoom ์ ์ด
- @hello-pangea/dnd: ์ ๋ฃจํธ ์ฅ์ ์์ ๋ณ๊ฒฝ ๋๋๊ทธ์ค๋๋กญ
- yet-another-react-lightbox: ์ด๋ฏธ์ง ๋ผ์ดํธ๋ฐ์ค
- react-router-dom: ํด๋ผ์ด์ธํธ ๋ผ์ฐํ
- ESLint & Prettier: ์ฝ๋ ํ์ง ์ ์ง ๋ฐ ํ ์ปจ๋ฒค์ ์๋ ์ ์ฉ
- vite-plugin-svgr: SVG๋ฅผ React ์ปดํฌ๋ํธ๋ก ๋ณํํ์ฌ ๊ด๋ฆฌ
src
โโโ api # ๋๋ฉ์ธ๋ณ API ๋ชจ๋ (mapApi, placeApi, reviewApi, solrouteApi ...)
โโโ auth # ์ธ์ฆ ๊ด๋ จ ๋ก์ง
โโโ components # ๊ณตํต/๋๋ฉ์ธ ์ปดํฌ๋ํธ
โโโ hooks # ์ปค์คํ
ํ
โโโ layout # ๋ ์ด์์ ์ปดํฌ๋ํธ
โโโ pages # ๋ผ์ฐํธ ๋จ์ ํ์ด์ง (Solmap, SollectPage, SolmarkPage ...)
โโโ routes # ๋ผ์ฐํฐ ์ค์ ๋ฐ ์ธ์ฆ ๊ฐ๋
โโโ store # Zustand ์คํ ์ด (mapStore, markerStore, searchStore ...)
โโโ utils # ์ ํธ ํจ์
Naver Cloud Map API์ ํต์ ํ๋ React + TypeScript ์ ํ๋ฆฌ์ผ์ด์ ์ GitHub Actions๋ก ๋น๋ํด Docker ์ด๋ฏธ์ง๋ก ๋ง๋ค๊ณ , Google Cloud Platform(Workload Identity Federation ๊ธฐ๋ฐ ์ธ์ฆ)์ Cloud Run์ ๋ฐฐํฌํ๋ ๊ตฌ์กฐ์ ๋๋ค.
- CI/CD: GitHub Actions๋ก Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํด Artifact Registry์ Push, Cloud Run์ผ๋ก ๋ฐฐํฌ
- ์ธ์ฆ: Workload Identity Federation์ ํตํด ๋ณ๋์ ํค ํ์ผ ์์ด GitHub Actions์์ GCP ๋ฆฌ์์ค์ ์ ๊ทผ
- ๋ฐฐํฌ ๋ฆฌ์ :
asia-northeast3
์๋น์ค ์ ์ ๋ฐฐํฌ ์ , ๊ธฐ๋ฅ๋ณ QA ์ ๊ฒํ์ ํจ๊ป ์ค์ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ UT(User Test)๋ฅผ ์งํํด ํ๋ฉด๋ณ ๊ฐ์ ์ฌํญ์ ๋์ถํ์ต๋๋ค.
- Sollect: ์ ๋ ํธ ๊ฐ๋ก ์คํฌ๋กค ์ ํด๋ฆญ๋๋ ๋ฏํ ๋ชจ์ ๊ฐ์ , ๊ฒ์ ๊ฒฐ๊ณผ ์ธ๋ค์ผ๊ณผ ์ฃผ์ ๋งค์นญ ์ค๋ฅ ์์ ๋ฑ
- Solmap: ์ง๋ ์ด๋ ์ '์ด ์ง์ญ์์ ๊ฒ์' ๋ฒํผ ๊ฐ์์ฑ ๊ฐ์ , ๋ฐํ ์ํธ ์คํฌ๋กค ์ค ์ง๋ ์๋ก๊ณ ์นจ ๋ฐฉ์ง, ๊ฒ์ ๊ฒฐ๊ณผ ์์ ์ ์ถ์ฒ ์ฅ์ ๋ ธ์ถ ์์ , ์ฃผ์ ์์ด์ฝ ํฌ๊ธฐ ํ๋ ๋ฑ
- Solroute / Profile: ํ๋ฉด๋ณ ์ฐ์ ์์ยท๊ฐ๋ฐ ๋์ด๋๋ฅผ ํจ๊ป ๊ธฐ๋กํด ๋ฐฑ๋ก๊ทธ๋ก ๊ด๋ฆฌ
๋ฐ๊ฒฌ๋ ๋ฌธ์ ๋ ์ฐ์ ์์์ ๊ฐ๋ฐ ๋์ด๋๋ฅผ ํจ๊ป ๊ธฐ๋กํด ๋ฐฑ๋ก๊ทธ๋ก ๊ด๋ฆฌํ์ผ๋ฉฐ, ์ด๋ ์ถํ ๊ฐ์ ์์ ์ ๊ธฐ์ค์ด ๋์์ต๋๋ค.
Warning
ํ๋ก์ ํธ ์คํ ์ ์ ๋ฐ๋์ ์๋ ํ๊ฒฝ์ ํ์ธํด์ฃผ์ธ์.
- Node.js 18 ์ด์
- npm
# ํ๊ฒฝ ํ์ธ
node -v
npm -v- Repository ํด๋ก
git clone https://github.com/Solepli/Solepli-frontend.git
cd Solepli-frontend- ์์กด์ฑ ์ค์น
npm install- ๊ฐ๋ฐ ์๋ฒ ์คํ
npm run devNote
๋ค์ด๋ฒ ์ง๋ API ๋ฑ ์ธ๋ถ ์๋น์ค ์ฐ๋์ ์ํ ํ๊ฒฝ ๋ณ์(.env) ์ค์ ์ด ๋ณ๋๋ก ํ์ํฉ๋๋ค.
npm run build # ํ์
์ฒดํฌ + ํ๋ก๋์
๋น๋
npm run lint # ESLint ๊ฒ์ฌ
npm run preview # ๋น๋ ๊ฒฐ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ










