An open API service indexing awesome lists of open source software.

https://github.com/bekcodingaddict/fastpizza

The Fast React Pizza app is a modern, multi-page pizza ordering web application built using React and a variety of supporting technologies. The main purpose of this project is to provide a fully functional pizza ordering system where users can browse pizza options, add items to a cart, view detailed orders, and manage their profiles.
https://github.com/bekcodingaddict/fastpizza

Last synced: 11 months ago
JSON representation

The Fast React Pizza app is a modern, multi-page pizza ordering web application built using React and a variety of supporting technologies. The main purpose of this project is to provide a fully functional pizza ordering system where users can browse pizza options, add items to a cart, view detailed orders, and manage their profiles.

Awesome Lists containing this project

README

          

# ๐Ÿ• Fast Pizza React ์•ฑ์ด๋ž€?

> [!NOTE]
> Fast Pizza React ์•ฑ์€ React๋กœ ๊ตฌ์ถ•๋œ ํ˜„๋Œ€์ ์ธ ๋‹ค์ค‘ ํŽ˜์ด์ง€ ํ”ผ์ž ์ฃผ๋ฌธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ์ด ์•ฑ์€ ์‚ฌ์šฉ์ž๊ฐ€ ํ”ผ์ž ์˜ต์…˜์„ ํƒ์ƒ‰ํ•˜๊ณ , ํ•ญ๋ชฉ์„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ถ”๊ฐ€ํ•˜๊ณ , ๊ณ„์ •์„ ๋งŒ๋“ค์ง€ ์•Š๊ณ ๋„ ์ฃผ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ํŽธ๋ฆฌํ•œ ํ”Œ๋žซํผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์•ฑ์€ ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ด๋ฉฐ ํ”ผ์ž๋ฅผ ์‚ฌ๋ž‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

### ํ”„๋กœ์ ํŠธ ์š”๊ตฌ์‚ฌํ•ญ:
- [x] ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ”๋‰ด์—์„œ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”ผ์ž๋ฅผ ์ฃผ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๐Ÿ•
- [x] ์‚ฌ์šฉ์ž ๊ณ„์ •๊ณผ ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์‚ฌ์šฉ์ž๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์ด๋ฆ„์„ ์ž…๋ ฅ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค โœ๏ธ
- [x] ํ”ผ์ž ๋ฉ”๋‰ด๋Š” ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ API์—์„œ ๋กœ๋“œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค ๐ŸŒ
- [x] ์‚ฌ์šฉ์ž๋Š” ์ฃผ๋ฌธํ•˜๊ธฐ ์ „์— ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์—ฌ๋Ÿฌ ํ”ผ์ž๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ›’
- [x] ์ฃผ๋ฌธ์—๋Š” ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„, ์ „ํ™”๋ฒˆํ˜ธ ๋ฐ ์ฃผ์†Œ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค ๐Ÿ“
- [x] ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด, GPS ์œ„์น˜๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ฐฐ๋‹ฌ์„ ๋” ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ“
- [x] ์‚ฌ์šฉ์ž๋Š” ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ฐ€๊ฒฉ์— 20%๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ "์šฐ์„  ์ฃผ๋ฌธ"์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค โšก
- [x] ์ฃผ๋ฌธ์€ API๋กœ ์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ๋ฅผ (์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ+์„ ํƒํ•œ ํ”ผ์ž) ํฌํ•จํ•œ POST ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค ๐Ÿ’Œ
- [x] ๊ฒฐ์ œ๋Š” ๋ฐฐ๋‹ฌ ์‹œ ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ฒฐ์ œ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค ๐Ÿ’ณโŒ
- [x] ๊ฐ ์ฃผ๋ฌธ์€ ๊ณ ์œ ํ•œ ID๋ฅผ ๋ถ€์—ฌ๋ฐ›์œผ๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋‚˜์ค‘์— ์ฃผ๋ฌธ ID๋กœ ์ฃผ๋ฌธ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ”ข
- [x] ์‚ฌ์šฉ์ž๋Š” ์ฃผ๋ฌธ์„ ํ•œ ํ›„์—๋„ "์šฐ์„  ์ฃผ๋ฌธ"์œผ๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค โœ…

### Features and Pages

| Featured Categories | Necessary pages | URL Params |
| ------------------- | ----------------- | --------------- |
| User | HomePage | / |
| Menu | Pizza menu | /menu |
| Cart | Cart | /cart |
| Order | Placing new order | /order/new |
| Order | Looking up order | /order/:orderId |

### Technologies & Tools:


JavaScriptย 
HTMLย 
CSSย 
Reactย 
Reactย 
Reactย 
npmย 

## Fast Pizza ์•ฑ์˜ ์ฃผ์š” ๊ธฐ๋Šฅ๋“ค:
### ๐Ÿ›’ ํ”ผ์ž ๋ฉ”๋‰ด
- ํ”ผ์ž ๋ฉ”๋‰ด๋Š” ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ API๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ์ตœ์‹  ๋ฉ”๋‰ด๋ฅผ ํ•ญ์ƒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
### ๐Ÿ‘ค ์‚ฌ์šฉ์ž ๊ณ„์ • ๋ฐ ๋กœ๊ทธ์ธ ๋ถˆํ•„์š”
- ์‚ฌ์šฉ์ž๋Š” ์ฃผ๋ฌธ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ„์ •์„ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์•ฑ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์ด๋ฆ„๋งŒ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
### ๐Ÿฝ๏ธ ๋‹ค์ˆ˜์˜ ํ”ผ์ž ์ฃผ๋ฌธ ๊ฐ€๋Šฅ
- ์‚ฌ์šฉ์ž๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”ผ์ž๋ฅผ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์ถ”๊ฐ€ํ•˜์—ฌ ์ฃผ๋ฌธ์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์ฃผ๋ฌธ์„ ์œ ์—ฐํ•˜๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
### ๐Ÿ“ ์œ„์น˜ ์„œ๋น„์Šค
- ๋ฐฐ๋‹ฌ์„ ๋” ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž๋Š” GPS ์œ„์น˜๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ •ํ™•ํ•œ ๋ฐฐ๋‹ฌ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
### ๐Ÿ’ณ ์šฐ์„ ์ˆœ์œ„ ์ฃผ๋ฌธ
- ์‚ฌ์šฉ์ž๋Š” ์ถ”๊ฐ€ ์š”๊ธˆ 20%๋ฅผ ์ง€๋ถˆํ•˜๊ณ  ์ฃผ๋ฌธ์„ "์šฐ์„ ์ˆœ์œ„"๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด, ๋น ๋ฅธ ๋ฐฐ๋‹ฌ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
### ๐Ÿ“ฆ ๊ณ ์œ  ์ฃผ๋ฌธ ID
- ๋ชจ๋“  ์ฃผ๋ฌธ์€ ๊ณ ์œ ํ•œ ID๋ฅผ ๋ถ€์—ฌ๋ฐ›์•„, ์‚ฌ์šฉ์ž๊ฐ€ ๋‚˜์ค‘์— ์ฃผ๋ฌธ์„ ์ถ”์ ํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
### ๐Ÿ“ฑ ์ฃผ๋ฌธ ์–‘์‹
- ์ฃผ๋ฌธ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž๋Š” ์ด๋ฆ„, ์ „ํ™”๋ฒˆํ˜ธ, ์ฃผ์†Œ๋งŒ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์•ฑ ๋‚ด์—์„œ๋Š” ๊ฒฐ์ œ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๊ฒฐ์ œ๋Š” ๋ฐฐ๋‹ฌ ์‹œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
### ๐Ÿ›‘ ์ฃผ๋ฌธ ํ›„ ์šฐ์„ ์ˆœ์œ„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
- ์ฃผ๋ฌธ์ด ์™„๋ฃŒ๋œ ํ›„์—๋„ ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ์ฃผ๋ฌธ์„ "์šฐ์„ ์ˆœ์œ„"๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์–ด, ์ฃผ๋ฌธ ๊ด€๋ฆฌ์— ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

## ๐ŸŽ‰ ์„ฑ์ทจ
### ๐Ÿ“ฆ ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋งˆ์Šคํ„ฐ
- ๊ฐœ๋ฐœ ๋ฐ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด dependencies์™€ devDependencies๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
### ๐Ÿš€ ์›ํ™œํ•œ ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์šฐ
- ๋น ๋ฅธ ๊ฐœ๋ฐœ ๋ฐ ํšจ์œจ์ ์ธ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•ด vite๋ฅผ ํ†ตํ•ฉํ•˜๊ณ  dev, build, preview ๋ช…๋ น์–ด๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
### ๐ŸŽจ Tailwind CSS ์‚ฌ์šฉ์ž ์ •์˜
- tailwindcss์™€ prettier-plugin-tailwindcss๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•„๋ฆ„๋‹ต๊ณ  ์ž˜ ์ •๋ฆฌ๋œ ์Šคํƒ€์ผ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
### ๐Ÿ›  ESLint ๋ฐ Prettier ์„ค์ •
- eslint, eslint-config-react-app, prettier์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์„ค์ •ํ•˜์—ฌ ๊นจ๋—ํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ๋ณด์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.
### โš›๏ธ React ๊ณ ๊ธ‰ ์ง€์‹
- react, react-dom, react-router-dom, react-redux๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ๋™์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์ˆ™๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

## ๐Ÿ“š ๋ฐฐ์šด ์ 
### ๐Ÿ”„ ๋ชจ๋“ˆํ˜• ์•„ํ‚คํ…์ฒ˜์˜ ์ค‘์š”์„ฑ
- ํ™•์žฅ ๊ฐ€๋Šฅํ•œ redux-toolkit ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋ชจ๋“ˆํ˜• ์•„ํ‚คํ…์ฒ˜์˜ ์ด์ ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.
### ๐Ÿ“ ๋ฆฐํŠธ ๊ทœ์น™์˜ ์ •ํ™•์„ฑ
- ์—„๊ฒฉํ•œ ESLint ๊ทœ์น™ (--max-warnings 0)์ด ๊ทœ์œจ์„ ๊ฐ•ํ™”ํ•˜๊ณ  ๊ฐ„๊ณผ๋œ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค.
### โšก ์„ฑ๋Šฅ ์ตœ์ ํ™”
- Vite์˜ ๋น ๋ฅธ ๋นŒ๋“œ ์‹œ๊ฐ„๊ณผ ํ•ซ ๋ชจ๋“ˆ ๊ต์ฒด๊ฐ€ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.
### ๐Ÿ“š CSS ์ตœ์ ํ™”
- autoprefixer์™€ PostCSS์˜ ๊ฐ•๋ ฅํ•จ์„ ํƒ๊ตฌํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ € ๊ฐ„ CSS ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.
### ๐Ÿ”— ๋ผ์šฐํŒ… ๋ฐ ์ƒํƒœ ๊ด€๋ฆฌ ์ˆ™๋‹ฌ
- ๋ณต์žกํ•œ ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ (react-router-dom)๊ณผ redux๋ฅผ ํ†ตํ•œ ํšจ์œจ์ ์ธ ๊ธ€๋กœ๋ฒŒ ์ƒํƒœ ๊ด€๋ฆฌ ๊ธฐ์ˆ ์„ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.
### ๐Ÿšจ ๋””๋ฒ„๊น… ๊ธฐ์ˆ 
- vite-plugin-eslint๊ณผ ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ ๊ฐœ๋ฐœ ์ค‘์— ๋ฌธ์ œ๋ฅผ ํƒ์ง€ํ•˜์—ฌ ๋””๋ฒ„๊น…์„ ๊ฐ„์†Œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„

## Problems & Challanges
| Error & Problem Title | Status | Difficult | Date |
|--|--|--|--|
|[๐ŸŽจ TailwindCSS Conflicts](https://github.com/BekCodingAddict/FastPizza/blob/master/Problems/TailwindCSS-Conflicts.md) | ![solved](https://img.shields.io/badge/solved-blue) | low | Oct 3, 2024 |

## UI Screenshots