์ธ์ฝ์ค๋ฐ์์ ์งํํ ํ์ฅํ ์ปค๋จธ์ค ์น ์ดํ๋ฆฌ์ผ์ด์
ํ๋ก์ ํธ์
๋๋ค.
๐ ์ฌ์ดํธ ๋ฐ๋ก๊ฐ๊ธฐ: https://incourserun.cf ๋ฐฐํฌ ์ค๋จ
- Frontend: https://github.com/INCOURSE-RUN/2-incourserun-commerce-fe
- Backend: https://github.com/INCOURSE-RUN/2-incourserun-commerce-be
- ๊ฐ๋ฐ ๊ธฐ๊ฐ: 2022.06.13 ~ 2022.07.29
- ๊ฐ๋ฐ ์ธ์
- Frontend: 1๋ช (๋ฐํ์ค)
- Backend: 2๋ช (๋ชจ์ฐฝ์ผ, ์ต๋ณด๋ฏธ)
- Kakao ๊ณ์ ์์ ๋ก๊ทธ์ธ์ผ๋ก ๊ฐํธํ๊ฒ ํ์๊ฐ์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ดํ ํ์๊ฐ์ ํ์ด์ง์์ ์ถ๊ฐ์ ๋ณด๋ฅผ ์์ฑํ์ฌ ํ์๊ฐ์ ์ ์๋ฃํ๊ณ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค.
๐ ์นด์นด์ค ๋ก๊ทธ์ธ ์ํ์ค ๋ค์ด์ด๊ทธ๋จ
๐ ๋ก๊ทธ์ธ โ ํ์๊ฐ์
โ ๋ฉ์ธํ์ด์ง โ ๋ก๊ทธ์์
- ๋ฉ๋ด๋ฐ๋ฅผ ์ด์ด์ ํ, ์ํ๋ณด๊ธฐ, ๋ง์ดํ์ด์ง๋ก ์ด๋ํ ์ ์์ต๋๋ค.
-
์ํ ๋ชฉ๋ก
- ์ํ ๋ชฉ๋ก์ ์ํ์นด๋๋ค์ ๋ณด๊ณ ์ํ์ ๊ฐ๋ตํ ์ ๋ณด๋ฅผ ์ ์ ์์ต๋๋ค.
- ์ํ์นด๋๋ฅผ ํด๋ฆญํ๋ฉด ์ํ ์์ธํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
-
์ํ ์์ธํ์ด์ง
- ์ํ์ ์์ธ์ ๋ณด, ๊ตฌ๋งค์ ๋ณด ๊ทธ๋ฆฌ๊ณ ๋ฆฌ๋ทฐ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๐ ๋ฉ์ธํ์ด์ง โ ์ํ๋ชฉ๋ก โ ์์ธํ์ด์ง
- ์ฅ๋ฐ๊ตฌ๋์์ ์ํ๋ณด๊ธฐ์์ ๋ด์ ์ํ๋ค์ ํ์ธํ ์ ์์ต๋๋ค.
- ์ฃผ๋ฌธํ ์ํ์ ์ ํ ๋ฐ ์๋ ๋ณ๊ฒฝ์ ํ๊ณ ๊ฒฐ์ ํ๊ธฐ ๋ฒํผ์ ๋๋ฌ ์ฃผ๋ฌธ๊ฒฐ์ ๋ก ๋์ด๊ฐ๋๋ค.
๐ ์ฅ๋ฐ๊ตฌ๋ ์ ์ฒด์ญ์ โ ๋น ์ฅ๋ฐ๊ตฌ๋ โ ์ํ๋ชฉ๋ก์์ ์ฅ๋ฐ๊ตฌ๋ ๋ด๊ธฐ
- ์ํ์ ํ โ ๋ฐ๋ก๊ตฌ๋งค ๋๋ ์ฅ๋ฐ๊ตฌ๋ โ ๊ฒฐ์ ํ๊ธฐ๋ก ์ฃผ๋ฌธ์ ์งํํ ์ ์์ต๋๋ค.
๐ ์ฅ๋ฐ๊ตฌ๋ โ ์ฃผ๋ฌธ โ ๋ฉ์ธํ์ด์ง
๐ ์ํ ์์ธํ์ด์ง โ ๋ฐ๋ก๊ตฌ๋งค โ ์ฃผ๋ฌธ๋ชฉ๋ก
- ํ์์ ๋ณด ์์
- ํ๋กํ์ฌ์ง, ๋๋ค์ ๋ฑ์ ํ์์ ๋ณด๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
- ์ฃผ๋ฌธ๋ด์ญ
- ๋ ์ง๋ณ, ์ฃผ๋ฌธ๋ณ๋ก ์ฃผ๋ฌธ๋ด์ญ์ ํ์ธํ ์ ์์ต๋๋ค.
- ๋ด์ํ ๋ฆฌ๋ทฐ
- ๋ฐฐ์ก์๋ฃ๋ ์ํ์ ๋ํด ๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- ์ฃผ๋ฌธ๋ณ๋ก ๊ฐ ์ํ์ ๋ํด 1ํ๋ง ์์ฑ ๊ฐ๋ฅํฉ๋๋ค.
- ํ์ํํด
- ํํด ์ฌ์ ๋ฐ '์ธ์ฝ์ค๋ฐ' ํ ์คํธ๋ฅผ ์ ๋ ฅํด์ผ ํํด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ํํดํ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ํํด ์ฌ์ ๊ฐ ์ ์ฅ๋๊ณ ์ฌ์ฉ์ ์ ๋ณด๋ ์ด๊ธฐํ๋๋ฉฐ, ์นด์นด์ค ๊ณ์ ์ฐ๋๋ ์๋์ผ๋ก ํด์ ๋ฉ๋๋ค.
- ๋ก๊ทธ์์
- ๋ก๊ทธ์์ ์ '๋ก๊ทธ์์ ํ์๊ฒ ์ต๋๊น?'๋ผ๋ ํ์ ์ฐฝ์ด ๋น๋๋ค.
- ํ์ธ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ก๊ทธ์์๋๊ณ ๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก ๋์ด๊ฐ๋๋ค.
๐ ๋ก๊ทธ์ธ โ ๋ง์ดํ์ด์ง โ ํ์์ ๋ณด์์ โ ๋ก๊ทธ์์
๐ ๋ฉ์ธํ์ด์ง โ ๋ง์ดํ์ด์ง โ ์ฃผ๋ฌธ๋ด์ญ โ ์ฃผ๋ฌธ์ทจ์ โ ๋ฆฌ๋ทฐ์์ฑ โ ๋ฆฌ๋ทฐ๋ด์ญ
๐ ๋ง์ดํ์ด์ง โ ํํด โ ์ฌ๊ฐ์
ํ๋ก ํธ์๋์์๋ ์ด๋ฐ์ ์ ๊ณ ๋ คํ์์ด์!
- Chakra UI๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐํธํ๊ณ ์ง๊ด์ ์ธ UI ์ปดํฌ๋ํธ ์์ฑ
- ์ ์ญ์ํ ์ต์ํ ๋ฐ Redux Tool Kit์ ์ฌ์ฉํ์ฌ ์ ์ญ State๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ
- React Hook Form์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ ์ถํ form ๊ด๋ฆฌ ๋ฐ ์ ํจ์ฑ ๊ฒ์ฌ
- ์ ์ญ axios instance๋ฅผ ์ฌ์ฉํ์ฌ API ํต์ ๋ฐ ๋ก๊ทธ์ธ token ๊ด๋ฆฌ
๋ฐฑ์๋์์๋ ์ด๋ฐ์ ์ ๊ณ ๋ คํ์์ด์!
- REST API ์ค๊ณ ๊ท์น์ ์ค์
- ์ผ๊ด์ฑ, ์ฌ์ฉ์ฑ์ ๊ณ ๋ คํ API ์ค๊ณ
- Validation, Permission์ ๊ผผ๊ผผํ๊ฒ ๊ฒ์ฌ
- ๊ด๋ฆฌ์ ํ์ด์ง์์ ํ์ํ ๋ฐ์ดํฐ๋ค์ ์ฝ๊ฒ ์ฐพ์๋ณผ ์ ์๋๋ก ๊ธฐ๋ฅ ์ถ๊ฐ
- Ubuntu 20.04.4 LTS
- python 3.8
- pip 21.2.4
- Django 3.2.7
- Django Rest Framework 3.12.4
https://api.incourserun.cf/swagger/
commerce
*backend
./app
[App name]
migrations
views.py
orviewsets.py
urls.py
serializers.py
models.py
signals.py
admins.py
urls.py
./config
settings
base.py
dev.py
prod.py
*AWS ๋ฐฐํฌ ๋ฐ ์๋ฒ ์ธํ
.ebextension
.github/workflow
์ฅ๊ณ ์ app ํด๋๋ค์ด ์์ต๋๋ค.
urls.py๋ app์ API url๋ค์ config/urls/api ์ ์ฐ๊ฒฐํ url๋ค์ ์ค์ ํ ํ์ผ์ ๋๋ค.
app ํด๋๋ ๋ชจ๋ธ(model.py)๊ณผ ๊ทธ ๋ชจ๋ธ์ API(views.py) ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ธ์ ์ข ์์ ์ธ ๋ชจ๋ธ์ ํจ๊ป ํฌํจํ๊ณ ์์ต๋๋ค. app ํด๋๋ ๋ชจ๋ธ ํน์ ๊ธฐ๋ฅ์ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค.
app ํด๋์ ํ์ ํด๋๋ก migrations ํด๋๊ฐ ์์ต๋๋ค. DB์ ๊ด๋ จ๋ ํ์ผ๋ก, ์์ ํ ๊ฒฝ์ฐ DB ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
config ํด๋๋ ํ๋ก์ ํธ์ ๊ตฌ์ฑ ํ์ผ๋ค์ ๊ด๋ฆฌํ๋ ํด๋์ ๋๋ค.
settings ํด๋๋ ํ๋ก์ ํธ์ ์ธํ ํ์ผ๋ค์ ๊ด๋ฆฌํฉ๋๋ค.
urls๋ ๋ฃจํธ urls ํด๋์ ๋๋ค. hosts.py๋ก ์๋ธ ๋๋ฉ์ธ์ ๋ฐ๋ผ ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค.
Elastic Beanstalk ๊ด๋ จ ํ์ผ์ด ์์ต๋๋ค.
Github action ๊ด๋ จ ํ์ผ์ด ์์ต๋๋ค.
API๊ฐ ๊ตฌํ๋์ด ์๋ ํ์ผ์ ๋๋ค.
views.py์์ ๊ตฌํ๋ API๋ค์ ์ด๋ค url์์ ํธ์ถํ ๊ฒ์ธ์ง ๋ช ์๋์ด ์๋ ํ์ผ์ ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ก์ ํธ์ url์
{project name}.co.kr/api/v1/{app name}/...
ํํ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. (*ํ๋ก์ ํธ์ ๋ฐ๋ผ ๋ณ๋ ๋ ์ ์์ต๋๋ค.)
API ๋ณ๋ก ํ์ํ serailizer๋ค์ ๊ตฌํํ ํ์ผ์ ๋๋ค.
Django Rest Framework์ serializer๋ DB์์ ์กฐํํ object๋ฅผ JSON ํํ๋ก ๋ณํํ๊ฑฐ๋, Request์ JSON ๋ฐ์ดํฐ๋ฅผ python data type์ผ๋ก ๋ณํํฉ๋๋ค.
๋ชจ๋ธ(table)์ด ์ ์ธ๋์ด ์์ต๋๋ค.
๊ด๋ฆฌ์ ํ์ด์ง์์ ํด๋น ๋ชจ๋ธ์ ํ์ด์ง๋ฅผ ์ด๋ป๊ฒ ๊ตฌ์ฑํ ๊ฒ์ธ์ง ๊ตฌํ๋์ด ์์ต๋๋ค.
app ๋ชจ๋ธ์ ๋ฐ์ดํฐ ์์ ํน์ ์์ฑ์ ๋ฐ๋ผ ์คํ๋๋ ํจ์๊ฐ ๊ตฌํ๋์ด ์์ต๋๋ค.
- ์ฌ์ฉ์ ๊ด๋ จ ๋ชจ๋ธ์ด ์๋ ์ฑ
- ๋ชจ๋ธ
- User: ์ฌ์ฉ์ ๋ชจ๋ธ
- Social: ์์ ๋ก๊ทธ์ธ ๋ชจ๋ธ
- Withdrawal: ํํด ๋ชจ๋ธ
- ์ํ ๊ด๋ จ ๋ชจ๋ธ์ด ์๋ ์ฑ
- ๋ชจ๋ธ
- Product: ์ํ ๋ชจ๋ธ
- ์ฅ๋ฐ๊ตฌ๋ ๊ด๋ จ ๋ชจ๋ธ์ด ์๋ ์ฑ
- ๋ชจ๋ธ
- Cart: ์ฅ๋ฐ๊ตฌ๋ ๋ชจ๋ธ
- ์ฃผ๋ฌธ ๊ด๋ จ ๋ชจ๋ธ์ด ์๋ ์ฑ
- ๋ชจ๋ธ
- Order: ์ฃผ๋ฌธ ๋ชจ๋ธ
- OrderProduct: ์ฃผ๋ฌธ-์ํ ๋ชจ๋ธ
- Custom Command
- seed_orders.py: ์ฃผ๋ฌธ ๋ฐ์ดํฐ ์๋ ์์ฑ ์ปค๋งจ๋
- ๋ฆฌ๋ทฐ ๊ด๋ จ ๋ชจ๋ธ์ด ์๋ ์ฑ
- ๋ชจ๋ธ
- Review
- Photo
- Reply