jindonyy / vending-machine

web vending machine project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

πŸ’πŸ‹ Dony's Fruit Vending Machine πŸ₯πŸ«

μ½”λ“œμŠ€μΏΌλ“œ 개인 ν”„λ‘œμ νŠΈμ΄λ‹€.
μ‚¬μš©μžκ°€ 지갑에 μžˆλŠ” λˆμ„ μž…λ ₯ λ˜λŠ” ν΄λ¦­ν•˜μ—¬, μ›ν•˜λŠ” μ œν’ˆμ„ 선택할 수 μžˆλ‹€.
μ‹€μ œ 자판기의 μž‘λ™ 원리와 λΉ„μŠ·ν•˜κ²Œ μž‘λ™ν•˜λ„λ‘ κ΅¬ν˜„ν•˜λŠ” 것이 λͺ©ν‘œμ˜€λ‹€.

2022.05.09 ~ 05.20 κΉŒμ§€ μ•½ 2μ£Όκ°„ μ§„ν–‰λ˜μ—ˆλ‹€.
μžμ„Έν•œ λ‚΄μš©μ€ Wikiμ—μ„œλ„ 확인할 수 μžˆλ‹€.


πŸ›  Skills




React

  • μΊ‘μŠν™”λœ μ»΄ν¬λ„ŒνŠΈλ‘œ μƒνƒœκ΄€λ¦¬λ₯Ό ν•  수 μžˆμ–΄ λ³΅μž‘ν•œ UI도 효과적으둜 ꡬ성할 수 μžˆλ‹€.
  • Router의 κΈ°λŠ₯으둜 SPA(Single Page Application)κ°€λŠ₯ν•˜λ‹€.

Styled Components

  • Scss라이브러리 μ„€μΉ˜ 없이 Scss 문법을 μ‚¬μš©ν•  수 μžˆλ‹€.
  • 자유둜운 CSS μ»€μŠ€ν…€ μ»΄ν¬λ„ŒνŠΈλ₯Ό λ§Œλ“€ 수 μžˆλ‹€.
  • μ»΄ν¬λ„ŒνŠΈμ˜ propsλ₯Ό μ°Έμ‘°ν•  수 있으며, props의 값에 따라 μŠ€νƒ€μΌμ„ λ‹€λ₯΄κ²Œ μ½”λ”© ν•  수 μžˆλ‹€.


βœ… Demo

site

dony vending machine πŸ’

video

2022-05-21.2.59.41.mov


✨ Feature

  • μ‹€μ œ 자판기의 λ™μž‘ 원리와 κ°™κ²Œ κ΅¬ν˜„ν•΄λ³Έλ‹€.
    • κΈˆμ•‘μ„ μž…λ ₯ν•˜λ©΄ 진행화면에 κΈˆμ•‘μ΄ ν‘œμ‹œλœλ‹€.
    • 동전/μ§€νμ˜ κ°œμˆ˜μ™€ μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” κΈˆμ•‘μ΄ μž…λ ₯되면 κ°€μž₯ κ°€κΉŒμš΄ κΈˆμ•‘μœΌλ‘œ μžλ™λ³΄μ •λ˜μ–΄ μž…λ ₯λœλ‹€.
    • νˆ¬μž…λœ κΈˆμ•‘μ΄ 만쑱되면 ꡬ맀할 수 μžˆλŠ” μƒν’ˆλ“€λ§Œ ν‘œμ‹œλœλ‹€.
    • μž¬κ³ κ°€ μ—†λŠ” μƒν’ˆμ€ μ„ νƒλ˜μ§€ μ•ŠλŠ”λ‹€.
    • λͺ¨λ“  μ΄λ²€νŠΈλŠ” 자판기의 λ©”μ‹œμ§€ 창에 ν‘œμ‹œλ˜μ–΄μ•Ό ν•œλ‹€.
    • μƒν’ˆμ„ μ„ νƒν•˜λ©΄ 2초 뒀에 배좜되고, μž”λˆμ΄ λ°˜ν™˜λœλ‹€.
    • λˆμ„ νˆ¬μž…ν•œ ν›„ 5초 λ™μ•ˆ μž…λ ₯이 μ—†μœΌλ©΄ νˆ¬μž…λœ κΈˆμ•‘μ€ μžλ™ λ°˜ν™˜λ˜κ³ , 지갑에 λ‹€μ‹œ 돈이 μ±„μ›Œμ§„λ‹€.
    • 5초 μ•ˆμ— μƒν’ˆμ„ μ„ νƒν•˜λ©΄ μƒν’ˆμ΄ λ‚˜μ˜€κ³ , νˆ¬μž…λœ κΈˆμ•‘μ„ μΆ”κ°€λ‘œ λ„£μœΌλ©΄ μžλ™λ°˜ν™˜ λ˜κΈ°κΉŒμ§€ λ‹€μ‹œ 5μ΄ˆλ™μ•ˆ κΈ°λ‹€λ¦°λ‹€.
    • μžνŒκΈ°μ—μ„œ κΈˆμ•‘μ„ μž…λ ₯ν•˜λ©΄ 지갑 νŽ˜μ΄μ§€μ—μ„œλ„ μ‹€μ‹œκ°„μœΌλ‘œ λ°˜μ˜λ˜μ–΄ 보여진닀.
    • μ§€κ°‘μ—μ„œ κΈˆμ•‘μ„ ν΄λ¦­ν•˜λ©΄ μ§€κ°‘μ—μ„œ κΈˆμ•‘μ€ 쀄어듀고, 자판기 νŽ˜μ΄μ§€μ—μ„œ μž…λ ₯ν•œ κΈˆμ•‘μ΄ 보여진닀.
  • Context, useReducer 등을 μ΄μš©ν•˜μ—¬ μƒνƒœ κ΄€λ¦¬ν•˜κΈ°
  • Routerλ₯Ό μ‚¬μš©ν•˜μ—¬ SPA κ΅¬ν˜„
  • custom Hook μ‚¬μš©ν•΄λ³΄κΈ°


πŸ“‚ Directory Tree

β”œβ”€β”€ πŸ“‚ src
β”‚   β”œβ”€β”€ App.jsx
β”‚   β”œβ”€β”€ App.style.js
β”‚   β”œβ”€β”€ GlobalStyles.js
β”‚   β”œβ”€β”€ πŸ“‚ components
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ orderArea
β”‚   β”‚   β”‚   β”œβ”€β”€ History.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ History.style.js
β”‚   β”‚   β”‚   β”œβ”€β”€ MoneySlot.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ MoneySlot.style.js
β”‚   β”‚   β”‚   β”œβ”€β”€ OrderArea.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ OrderArea.style.js
β”‚   β”‚   β”‚   β”œβ”€β”€ ProductHole.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ProductHole.style.js
β”‚   β”‚   β”‚   β”œβ”€β”€ PutBtn.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ PutBtn.style.js
β”‚   β”‚   β”‚   β”œβ”€β”€ ReturnBtn.jsx
β”‚   β”‚   β”‚   └── ReturnBtn.style.js
β”‚   β”‚   β”œβ”€β”€ πŸ“‚ productsArea
β”‚   β”‚   β”‚   β”œβ”€β”€ Product.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Product.style.js
β”‚   β”‚   β”‚   β”œβ”€β”€ ProductsArea.jsx
β”‚   β”‚   β”‚   └── ProductsArea.style.js
β”‚   β”‚   └── πŸ“‚ wallet
β”‚   β”‚       β”œβ”€β”€ AmountWrap.jsx
β”‚   β”‚       β”œβ”€β”€ AmountWrap.style.js
β”‚   β”‚       β”œβ”€β”€ MoneyItem.jsx
β”‚   β”‚       └── MoneyItem.style.js
β”‚   β”œβ”€β”€ πŸ“‚ constant
β”‚   β”‚   └── constant.js
β”‚   β”œβ”€β”€ πŸ“‚ contexts
β”‚   β”‚   β”œβ”€β”€ FinalPayProvider.jsx
β”‚   β”‚   β”œβ”€β”€ HistoryProvider.jsx
β”‚   β”‚   β”œβ”€β”€ SelectedProductProvider.jsx
β”‚   β”‚   β”œβ”€β”€ VMTimerProvider.jsx
β”‚   β”‚   └── WalletProvider.jsx
β”‚   β”œβ”€β”€ πŸ“‚ data
β”‚   β”‚   β”œβ”€β”€ products.js
β”‚   β”‚   └── wallet.js
β”‚   β”œβ”€β”€ πŸ“‚ hooks
β”‚   β”‚   β”œβ”€β”€ useInputPay.jsx
β”‚   β”‚   └── useVMState.jsx
β”‚   β”œβ”€β”€ index.jsx
β”‚   β”œβ”€β”€ πŸ“‚ layout
β”‚   β”‚   └── GNB
β”‚   β”‚       β”œβ”€β”€ GNB.jsx
β”‚   β”‚       └── GNB.style.js
β”‚   β”œβ”€β”€ πŸ“‚ pages
β”‚   β”‚   β”œβ”€β”€ VendingMachine.jsx
β”‚   β”‚   β”œβ”€β”€ VendingMachine.style.js
β”‚   β”‚   β”œβ”€β”€ Wallet.jsx
β”‚   β”‚   └── Wallet.style.js
β”‚   └── πŸ“‚ helpers
β”‚       └── helper.js
β”œβ”€β”€ .gitignore
β”œβ”€β”€ .prettierrc
β”œβ”€β”€ jsconfig.json
β”œβ”€β”€ package.json
β”œβ”€β”€ package.lock.json
└── README.md

About

web vending machine project


Languages

Language:JavaScript 97.9%Language:HTML 2.1%