/bmart-6

πŸ›’ λ°˜μ‘ν˜• λͺ¨λ°”일 μ›ΉμœΌλ‘œ μ‚¬μš©μžμ—κ²Œ μ•±κ³Ό μœ μ‚¬ν•œ UX κ²½ν—˜μ„ μ œκ³΅ν•˜λ©° μž¬μ‚¬μš©μ„±μ΄ 높은 μ»΄ν¬λ„ŒνŠΈμ™€ μ•ˆμ •μ μΈ μƒνƒœ 관리λ₯Ό λͺ©ν‘œλ‘œ ν•˜κ³  μžˆλŠ” μ‡Όν•‘ μ„œλΉ„μŠ€

Primary LanguageTypeScript

πŸ›’ Bmart

version

μ†Œκ°œ

Bmart ν”„λ‘œμ νŠΈλŠ” λ°°λ‹¬μ˜ 민쑱의 Bmart λͺ¨λ°”일 μ•± μ„œλΉ„μŠ€λ₯Ό λ°˜μ‘ν˜• λͺ¨λ°”일 μ›ΉμœΌλ‘œ ν΄λ‘ ν•˜λ©΄μ„œ μ‚¬μš©μžμ—κ²Œ μ•±κ³Ό μœ μ‚¬ν•œ κ²½ν—˜μ„ μ œκ³΅ν•˜λ©° μž¬μ‚¬μš©μ„±μ΄ 높은 μ»΄ν¬λ„ŒνŠΈμ™€ μ•ˆμ •μ μΈ μƒνƒœ 관리λ₯Ό λͺ©ν‘œλ‘œ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

배포

배포 링크


ν”„λ‘œμ νŠΈ ꡬ쑰

|-- github
    |-- workflows // github actions
|-- client
    |-- public
        |-- aseets // images
        index.html
    |-- src
        |-- apis
        |-- commons
            constants.ts
            svgs.tsx
        |-- components // UI Components
            |-- large
            |-- medium
            |-- small
        |-- contexts
            |-- user // user context
        |-- hooks // custom hooks
        |-- libs // libraries
        |-- pages // page components
        |-- styles // common & global styles
        |-- tyles // common types
        |-- utils // util functions..
	App.tsx
|-- scripts // deploy scripts
|-- server
    |-- bin // www
    |-- controllers
    |-- lib
    |-- middlewares // express middlewares
    |-- models // sequelize models
    |-- routes // routing
    |-- seeder // dummy data
    |-- utils // constants & utils functions
    app.js
 

μž¬μ‚¬μš©μ„± 높은 UI μ»΄ν¬λ„ŒνŠΈ

UI μ»΄ν¬λ„ŒνŠΈ ꡬ쑰

Atomic Design Pattern을 μ°Έκ³ ν•˜μ—¬ μ§€κΈˆ ν”„λ‘œμ νŠΈμ—μ„œμ˜ μž¬μ‚¬μš©μ„±μ— μ΄ˆμ μ„ λ‘” 3개의 계측을 가진 μ»΄ν¬λ„ŒνŠΈ ꡬ쑰λ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

  • small: ν•˜μœ„μ— μžˆλŠ” μ»΄ν¬λ„ŒνŠΈκ°€ ν˜„μž¬ ν”„λ‘œμ νŠΈμ—μ„œ μž¬μ‚¬μš©λ  여지가 μ—†λŠ” μ»΄ν¬λ„ŒνŠΈ
  • medium: small ν˜Ήμ€ medium μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‘°ν•©ν•œ μ»΄ν¬λ„ŒνŠΈ
  • large: small, medium을 μ‘°ν•©ν•΄μ„œ λ§Œλ“  μ»΄ν¬λ„ŒνŠΈ

νŽ˜μ΄μ§€ λ‹¨μœ„ μƒνƒœ 관리 및 μƒν’ˆ 관리 CustomHook

각 νŽ˜μ΄μ§€μ— ν•„μš”ν•œ 데이터와 μƒνƒœ κ΄€λ¦¬λŠ” pageμ—μ„œ 이루어지고 μ»΄ν¬λ„ŒνŠΈλŠ” 받은 데이터λ₯Ό λ Œλ”λ§ν•˜λŠ” 역할을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. 특히 νŽ˜μ΄μ§€λ§ˆλ‹€ λ‹€λ₯Έ μ’…λ₯˜μ˜ μƒν’ˆ λ¦¬μŠ€νŠΈκ°€ ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ— 이λ₯Ό μš”μ²­ν•˜κ³  관리할 수 μžˆλŠ” useProducts customHook을 κ΅¬ν˜„ν•˜μ—¬ 각 νŽ˜μ΄μ§€μ—μ„œ μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.

  const [{ products, status }, productDispatch] = useProducts({ categoryId: params.categoryId });

μ„€μΉ˜ κ°€μ΄λ“œ

ν”„λ‘œμ νŠΈ κ°€μ Έμ˜€κΈ°

git clone https://github.com/woowa-techcamp-2020/bmart-6.git

ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œ λΉŒλ“œν•˜κΈ°

cd client
npm install
npm run build

μ„œλ²„ μ½”λ“œ μ‹€ν–‰ν•˜κΈ°

⚠️ server/.env에 λ‹€μŒ ν™˜κ²½ λ³€μˆ˜κ°€ λ“±λ‘λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
IS_DEMOλ₯Ό true둜 μ„€μ •ν•˜λ©΄ μ‹€ν–‰ν•  λ•Œ λ§ˆλ‹€ ν…Œμ΄ν„°λ² μ΄μŠ€κ°€ μ΄ˆκΈ°ν™”λ˜κ³  μ€€λΉ„λœ 데이터가 μΆ”κ°€λ©λ‹ˆλ‹€.

PORT=3000
IS_DEMO=true
DB_HOST={λ°μ΄ν„°λ² μ΄μŠ€ μ£Όμ†Œ}
DB_USER={λ°μ΄ν„°λ² μ΄μŠ€ μ‚¬μš©μž}
DB_PW={λ°μ΄ν„°λ² μ΄μŠ€ μ‚¬μš©μž λΉ„λ°€λ²ˆν˜Έ}
DB_NAME={λ°μ΄ν„°λ² μ΄μŠ€ 이름}
JWT_SECRET={μž„μ˜μ˜ JWT SECRET KEY}
cd server
npm install
npm start

μ„œλ²„κ°€ 싀행됐닀면 http://localhost:3000 μ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.


ν˜‘μ—… λ‚΄μš©

λ‹€μŒκ³Ό 같은 κ·œμΉ™κ³Ό λ””μžμΈμ— 따라 ν˜‘μ—…μ„ μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.


νŒ€μ›