Code Monkey home page Code Monkey logo

incourserun-commerce's Introduction

๐ŸงดCommerce

ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

์ธ์ฝ”์Šค๋Ÿฐ์—์„œ ์ง„ํ–‰ํ•œ ํ™”์žฅํ’ˆ ์ปค๋จธ์Šค ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.
๐Ÿ‘‰ ์‚ฌ์ดํŠธ ๋ฐ”๋กœ๊ฐ€๊ธฐ: https://incourserun.cf ๋ฐฐํฌ ์ค‘๋‹จ

Github Repo

๊ฐœ๋ฐœ ๊ธฐ๊ฐ„ ๋ฐ ์ธ์›

  • ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„: 2022.06.13 ~ 2022.07.29
  • ๊ฐœ๋ฐœ ์ธ์›
    • Frontend: 1๋ช… (๋ฐ•ํƒœ์ค€)
    • Backend: 2๋ช… (๋ชจ์ฐฝ์ผ, ์ตœ๋ณด๋ฏธ)

์‚ฌ์šฉ ๊ธฐ์ˆ 

Frontend

Backend

Server

Common

๊ตฌํ˜„ ๊ธฐ๋Šฅ

๐Ÿ” ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…

  • 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

API ๋ช…์„ธ์„œ

https://api.incourserun.cf/swagger/

0. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

commerce

*backend

  • ./app
    • [App name]
      • migrations
      • views.pyorviewsets.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

1. ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ํด๋”

1) app

์žฅ๊ณ ์˜ app ํด๋”๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

urls.py๋Š” app์˜ API url๋“ค์„ config/urls/api ์— ์—ฐ๊ฒฐํ•  url๋“ค์„ ์„ค์ •ํ•œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

(1) app

app ํด๋”๋Š” ๋ชจ๋ธ(model.py)๊ณผ ๊ทธ ๋ชจ๋ธ์˜ API(views.py) ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋ธ์˜ ์ข…์†์ ์ธ ๋ชจ๋ธ์„ ํ•จ๊ป˜ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. app ํด๋”๋Š” ๋ชจ๋ธ ํ˜น์€ ๊ธฐ๋Šฅ์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

app ํด๋”์˜ ํ•˜์œ„ ํด๋”๋กœ migrations ํด๋”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. DB์™€ ๊ด€๋ จ๋œ ํŒŒ์ผ๋กœ, ์ˆ˜์ •ํ•  ๊ฒฝ์šฐ DB ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

2) config

config ํด๋”๋Š” ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์„ฑ ํŒŒ์ผ๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ํด๋”์ž…๋‹ˆ๋‹ค.

(1) settings

settings ํด๋”๋Š” ํ”„๋กœ์ ํŠธ์˜ ์„ธํŒ… ํŒŒ์ผ๋“ค์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

(2) urls

urls๋Š” ๋ฃจํŠธ urls ํด๋”์ž…๋‹ˆ๋‹ค. hosts.py๋กœ ์„œ๋ธŒ ๋„๋ฉ”์ธ์— ๋”ฐ๋ผ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

3) .ebextension

Elastic Beanstalk ๊ด€๋ จ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

4) .github/workflow

Github action ๊ด€๋ จ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

2. app ๊ธฐ๋ณธ ๊ตฌ์„ฑ ํŒŒ์ผ

1) views.py(viewsets.py)

API๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

2) urls.py

views.py์—์„œ ๊ตฌํ˜„๋œ API๋“ค์„ ์–ด๋–ค url์—์„œ ํ˜ธ์ถœํ•  ๊ฒƒ์ธ์ง€ ๋ช…์‹œ๋˜์–ด ์žˆ๋Š” ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ์˜ url์€

{project name}.co.kr/api/v1/{app name}/...

ํ˜•ํƒœ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. (*ํ”„๋กœ์ ํŠธ์— ๋”ฐ๋ผ ๋ณ€๋™ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

3) serializers.py

API ๋ณ„๋กœ ํ•„์š”ํ•œ serailizer๋“ค์„ ๊ตฌํ˜„ํ•œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

Django Rest Framework์˜ serializer๋Š” DB์—์„œ ์กฐํšŒํ•œ object๋ฅผ JSON ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜, Request์˜ JSON ๋ฐ์ดํ„ฐ๋ฅผ python data type์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

4) models.py

๋ชจ๋ธ(table)์ด ์„ ์–ธ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

5) admins.py

๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€์—์„œ ํ•ด๋‹น ๋ชจ๋ธ์˜ ํŽ˜์ด์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•  ๊ฒƒ์ธ์ง€ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

6) signals.py

app ๋ชจ๋ธ์˜ ๋ฐ์ดํ„ฐ ์ˆ˜์ • ํ˜น์€ ์ƒ์„ฑ์— ๋”ฐ๋ผ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

3. app ํด๋” ๋ณ„ ์„ค๋ช…

1) user

  • ์‚ฌ์šฉ์ž ๊ด€๋ จ ๋ชจ๋ธ์ด ์žˆ๋Š” ์•ฑ
  • ๋ชจ๋ธ
    • User: ์‚ฌ์šฉ์ž ๋ชจ๋ธ
    • Social: ์†Œ์…œ๋กœ๊ทธ์ธ ๋ชจ๋ธ
    • Withdrawal: ํƒˆํ‡ด ๋ชจ๋ธ

2) product

  • ์ƒํ’ˆ ๊ด€๋ จ ๋ชจ๋ธ์ด ์žˆ๋Š” ์•ฑ
  • ๋ชจ๋ธ
    • Product: ์ƒํ’ˆ ๋ชจ๋ธ

3) cart

  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ด€๋ จ ๋ชจ๋ธ์ด ์žˆ๋Š” ์•ฑ
  • ๋ชจ๋ธ
    • Cart: ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ชจ๋ธ

4) order

  • ์ฃผ๋ฌธ ๊ด€๋ จ ๋ชจ๋ธ์ด ์žˆ๋Š” ์•ฑ
  • ๋ชจ๋ธ
    • Order: ์ฃผ๋ฌธ ๋ชจ๋ธ
    • OrderProduct: ์ฃผ๋ฌธ-์ƒํ’ˆ ๋ชจ๋ธ
  • Custom Command
    • seed_orders.py: ์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ ์ž๋™ ์ƒ์„ฑ ์ปค๋งจ๋“œ

5) review

  • ๋ฆฌ๋ทฐ ๊ด€๋ จ ๋ชจ๋ธ์ด ์žˆ๋Š” ์•ฑ
  • ๋ชจ๋ธ
    • Review
    • Photo
    • Reply

incourserun-commerce's People

Contributors

bomichoi avatar mochangil avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.