๋ก์ปฌ ์ฃผ์ : http://localhost:5173
๋ฐฐํฌ ์ฃผ์ : https://sobok.shop
๋ณธ ํ๋ก์ ํธ๋ ์๋ฆฌ๋ฅผ ํ๊ณ ์ถ์ง๋ง ์ฅ๋ณด๊ธฐ์ ๋ฒ๊ฑฐ๋ก์, ์์ฌ๋ฃ ๋ญ๋น, ์์ ๋ถ๊ท ํ ๋ฑ์ผ๋ก ์ธํด ์๋ฆฌ๋ฅผ ์ค์ฒํ์ง ๋ชปํ๋ 1์ธ ๊ฐ๊ตฌ๋ฅผ ์ํ ์์ฌ๋ฃ ํ๋ ์ด์ ๋ฐฐ๋ฌ ์๋น์ค์ ๋๋ค.
ํ๋ ์ด๋ฐ์ดํฐ 8๊ธฐ 3์กฐ Final Project : Sobok(์๋ณต) ๋ฐฐ๋ฌ ์์คํ
๊ฐ๋ฐ ๊ธฐ๊ฐ : 2025. 6. 21 ~ 2025. 8. 13
| ๊ฐํ๋ (Devy17) |
๊นํ์ง (vbnmopas) |
ํ์ข
๊ท (HanJongKyun) |
๊น์์ (SUEYOUNG14) |
์ ์นํ (youthdonut) |
|---|---|---|---|---|
| https://github.com/Devy17 | https://github.com/vbnmopas | https://github.com/HanJongKyun | https://github.com/SUEYOUNG14 | https://github.com/youthdonut |
| Infra | Backend | Backend | Frontend | Frontend |
- Node.js 22.14.0
- Npm 11.3.0
- React 19.1.0
- Redux 9.2.0
- Vite 6.3.5
$ git clone https://github.com/playdata-8th-full-stack-baedal-service/sobok-fe.git
$ cd sobok-fe
$ npm install
$ npm run dev
-
์ฌ์ฉ์ ํ์ด์ง: ์์ฌ๋ฃ ๊ฒ์, ์ฃผ๋ฌธ ๊ธฐ๋ฅ, ๊ฒ์๊ธ ์์ฑ ๋ฐ ์กฐํ
-
๊ฐ๊ฒ ํ์ด์ง : ์ฃผ๋ฌธ ์ ์, ์ฌ๊ณ ๊ด๋ฆฌ
-
๋ผ์ด๋ ํ์ด์ง : ๋ฐฐ๋ฌ ํํฉ ์กฐํ
-
๊ด๋ฆฌ์ ํ์ด์ง: ์์ฌ๋ฃ ๋ฐ ์๋ฆฌ ๋ฑ๋ก, ์ ์ฒด ์๋น์ค ๊ด๋ฆฌ
| ์ฌ์ฉ์ ๋ฉ์ธํ์ด์ง | ๋ผ์ด๋ ๋ฉ์ธํ์ด์ง |
|---|---|
![]() |
![]() |
| ๊ฐ๊ฒ ๋ฉ์ธํ์ด์ง | ๊ด๋ฆฌ์ ๋ฉ์ธํ์ด์ง |
![]() |
![]() |
GitHub Actions๋ฅผ ํตํด CI/CD๊ฐ ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
GitHub ๋ ํฌ์งํ ๋ฆฌ์ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
Node.js 22๋ฒ์ ์ ์ฌ์ฉํฉ๋๋ค.
npm install ๋ช
๋ น์ด๋ก ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
npm run build๋ก React ํ๋ก์ ํธ๋ฅผ ๋น๋ํฉ๋๋ค. CI=false๋ฅผ ์ง์ ํ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์ค๋ฅ๋ก ์ฒ๋ฆฌํ์ง ์๋๋ก ์ค์
๋น๋๋ ์ ์ ํ์ผ(dist ํด๋)์ S3์ ์
๋ก๋ํฉ๋๋ค. --deleteํ๋๊ทธ๋ฅผ ํตํด S3์์ ์ ๊ฑฐ๋ ํ์ผ๋ ๋ฐ์
๋ฐฐํฌ ํ CloudFront ์บ์๋ฅผ ๋ฌดํจํํ์ฌ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ด ์ฆ์ ๋ฐ์๋๋๋ก ํฉ๋๋ค.
-
AWS_ACCESS_KEY_ID : AWS ์ก์ธ์ค ํค
-
AWS_SECRET_ACCESS_KEY : AWS ์ํฌ๋ฆฟ ํค
-
AWS_REGION : AWS ๋ฆฌ์
-
S3_BUCKET : ๋ฐฐํฌ ๋์ S3 ๋ฒํท ์ด๋ฆ
-
CF_DISTRIBUTION_ID : CloudFront ๋ฐฐํฌ ID
CloudFront๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, S3์ ์ ํ์ผ์ด ์ ๋ก๋๋์ด๋ CloudFront์ ์บ์ ๋๋ฌธ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ๋ก ๋ฐ์๋์ง ์์ ์ ์์ต๋๋ค.
โ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด GitHub Actions์์ CloudFront ์บ์ ๋ฌดํจํ(Invaldation)๋ฅผ ์๋์ผ๋ก ์ํํฉ๋๋ค.
๋น๋๋ ์ ์ ํ์ผ์ dist/ ๋๋ ํ ๋ฆฌ์ ์์ฑ๋๋ฉฐ, ํด๋น ํด๋์ ํ์ผ๋ค์ด S3 ๋ฒํท์ ์
๋ก๋๋ฉ๋๋ค.
์บ์ ๋ฌดํจํ ๊ฒฝ๋ก๋ "/*"๋ก ์ง์ ๋์ด ์์ด, ์ ์ฒด ํ์ผ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์๋ฉ๋๋ค.
ํ์ ์ ์ฑ๋ฅ ํฅ์์ ์ํด ๋ฌดํจํ ๋ฒ์๋ฅผ ํน์ ๊ฒฝ๋ก๋ก ์ ํํ ์ ์์ต๋๋ค.
๐ฆsobok-fe
โฃ ๐.github
โ โฃ ๐ISSUE_TEMPLATE : Issue ๊ด๋ฆฌ ํ
ํ๋ฆฟ
โ โ โฃ ๐feature.yml
โ โ โฃ ๐fix.yml
โ โ โ ๐refactor.yml
โ โฃ ๐workflows
โ โ โ ๐main.yml
โ โ ๐pull_request_template.md
โฃ ๐src
โ โฃ ๐assets
โ โฃ ๐common : ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ ์ ์ฅ
โ โ โฃ ๐base : ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ ์, ์ฌ๋ฌ ์คํ์ผ, ํจ์, ๋ฏน์ค์ธ, ํฐํธ ์คํ์ผ ์ ์ฅ
โ โ โฃ ๐components : ๊ณตํต ๋ฒํผ, input ๋ฑ์ ๊ณตํต ์์
โ โ โฃ ๐forms : formํ์์ ๋ค์ด๊ฐ๋ ๊ณตํต ์์
โ โ โฃ ๐hooks : ์ ํ๋ณ ํ ์คํธ ๋ฉ์์ง ๊ด๋ จ ํ์ผ
โ โ โฃ ๐modals : ๋ชจ๋ฌ ๊ด๋ฆฌ ํ์ผ
โ โ โฃ ๐styles : ํฐํธ ๋ฑ์ ์ ์ญ์ ์ผ๋ก ์ ์ฉ๋๋ ์คํ์ผ ํ์ผ
โ โ โ ๐utils : ์ฌ๋ฌ ์ปดํฌ๋ํธ์ ์ฌ์ฉํ๋ ๋ก์ง ํ์ผ
โ โฃ ๐layout : ๊ณตํต ํค๋ ๋ฐ ํธํฐ ๊ด๋ฆฌ
โ โฃ ๐pages
โ โ โฃ ๐admin : ๊ด๋ฆฌ์ ๊ด๋ จ ํ์ด์ง ์ปดํฌ๋ํธ
โ โ โฃ ๐auth : auth ๊ด๋ จ ํ์ด์ง ์ปดํฌ๋ํธ
โ โ โฃ ๐hub : ๊ฐ๊ฒ ๊ด๋ จ ํ์ด์ง ์ปดํฌ๋ํธ
โ โ โฃ ๐rider : ๋ผ์ด๋ ๊ด๋ จ ํ์ด์ง ์ปดํฌ๋ํธ
โ โ โ ๐user : ์ฌ์ฉ์ ๊ด๋ จ ํ์ด์ง ์ปดํฌ๋ํธ
โ โฃ ๐queries
โ โฃ ๐router : ๋ผ์ฐ๋ ์ค์ ํ์ผ
โ โฃ ๐services : API ์์ฒญ ๋ฐ ์ธ์ฆ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ axios ์ธ์คํด์ค์ ๋ฐฑ์๋ ํธ์คํธ ์ค์ ์ ํฌํจํ ์ ํธ๋ฆฌํฐ ํ์ผ
โ โฃ ๐store : ์ฑ ์ ์ญ ์ํ ๊ด๋ฆฌ์ ๊ด๋ จ๋ Redux store ๋ฐ slice ๋ชจ๋์ด ์์นํ ํ์ผ
โ โฃ ๐.env : ํ๊ฒฝ ๋ณ์๋ค์ ์ ์ฅํ๋ ํ๊ฒฝ ์ค์ ํ์ผ
โ โฃ ๐App.jsx
โ โฃ ๐index.css
โ โฃ ๐main.jsx
โ โ ๐reset.css : ๋ธ๋ผ์ฐ์ ๊ฐ ๊ธฐ๋ณธ ์คํ์ผ ์ฐจ์ด๋ฅผ ์์ ๊ธฐ ์ํด ์ฌ์ฉํ๋ CSS ์ด๊ธฐํ ํ์ผ
โฃ ๐.gitignore
โฃ ๐LICENSE : ํ๋ก์ ํธ์ ์ฌ์ฉ, ์์ , ๋ฐฐํฌ์ ๋ํ ๊ถํ๊ณผ ์กฐ๊ฑด์ ๋ช
์ํ ๋ผ์ด์ ์ค ํ์ผ
โฃ ๐README.md
โฃ ๐index.html
โฃ ๐package-lock.json
โฃ ๐package.json
โ ๐vite.config.js




