Skip to content

๐Ÿ› ๏ธ Vite + React + TS๋ฅผ ์ด์šฉํ•˜์—ฌ ์ œ์ž‘ํ•œ ํ•œ์–‘๋Œ€ํ•™๊ต ์—๋ฆฌ์นด ๊ฑด์ถ•ํ•™๋ถ€ ๋ชจํ˜•์ œ์ž‘์‹ค ์˜ˆ์•ฝ์‹œ์Šคํ…œ 'HEAR'์˜ FE ์ž…๋‹ˆ๋‹ค.

Notifications You must be signed in to change notification settings

JeonggonCho/HEAR-FE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

hear_intro

HEAR

HYU ERICA Architecture Reservation
ํ•œ์–‘๋Œ€ํ•™๊ต ์—๋ฆฌ์นด ๊ฑด์ถ•ํ•™๋ถ€ ๋ชจํ˜•์ œ์ž‘์‹ค ๊ธฐ๊ธฐ ์˜ˆ์•ฝ ์‹œ์Šคํ…œ


๋ฐฐํฌ๋งํฌ

https://hyue-hear.com

ํ…Œ์ŠคํŠธ์šฉ ๊ณ„์ •


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

๐Ÿ” ๊ฐœ์š”

๊ธฐ์กด์ˆ˜๊ธฐ์˜ˆ์•ฝ
๋ฌธ์ œ์  - ์ˆ˜๊ธฐ ์˜ˆ์•ฝ ๋ฐฉ์‹

ํ•œ์–‘๋Œ€ ์—๋ฆฌ์นด ๊ฑด์ถ•ํ•™๊ณผ์—์„œ ๋Œ€ํ•™์› ์กฐ๊ต๋กœ์„œ ๋ชจํ˜•์ œ์ž‘์‹ค ๊ด€๋ฆฌ ์—…๋ฌด๋ฅผ ๋งก์•˜์—ˆ์œผ๋ฉฐ, ๋ชจํ˜•์ œ์ž‘์‹ค์„ ์ด์šฉํ•˜๋ ค๋Š” ํ•™์ƒ๋“ค์—๊ฒŒ ์˜ˆ์•ฝ์„ ์ˆ˜๊ธฐ๋กœ ๋ฐ›๊ณ  ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋งค์ผ ์•„์นจ๋งˆ๋‹ค ์˜ˆ์•ฝ ์‹ ์ฒญ์„œ๋ฅผ ๊ฒŒ์‹œํ•˜๊ณ  ์ €๋…์— ์ˆ˜๊ฑฐํ•ด์„œ ์˜ˆ์•ฝ ํ˜„ํ™ฉ์„ ์ •๋ฆฌ ํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์—ˆ์œผ๋ฉฐ, ํ•™์ƒ๋“ค๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์˜ˆ์•ฝ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์˜คํ”ˆ๋Ÿฐ์„ ํ•˜๋Š” ์ƒํ™ฉ๋„ ๋ฐœ์ƒํ–ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์˜ˆ์•ฝํ•˜๊ณ  ๊ธฐ๊ธฐ๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ต์œก์„ ์ด์ˆ˜ํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ต์œก์˜ ๊ฒฝ์šฐ ๊ตฌ๊ธ€ํผ์„ ์ด์šฉํ–ˆ๋‹ค. ๊ธฐ๊ธฐ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ํ•™์ƒ๋“ค์—๊ฒŒ ๊ณต์ง€ํ•ด์•ผ ํ•  ์ƒํ™ฉ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ์ฆ‰๊ฐ์ ์ธ ์ „๋‹ฌ์ด ์‰ฝ์ง€ ์•Š์•˜๋‹ค.

๐Ÿ˜ก ๋ฌธ์ œ์ 

1. ์ˆ˜๊ธฐ ์˜ˆ์•ฝ ๋ฐฉ์‹์˜ ๋น„ํšจ์œจ์„ฑ
2. ๋งค์ผ ์˜ˆ์•ฝ ์‹ ์ฒญ์„œ ๊ด€๋ฆฌ
3. ๊ต์œก์€ ๊ตฌ๊ธ€ํผ์œผ๋กœ ์ง„ํ–‰
4. ๊ณต์ง€์‚ฌํ•ญ ์ „๋‹ฌ์˜ ์–ด๋ ค์›€

๐Ÿ‘ ๋ชฉํ‘œ

์˜ˆ์•ฝ์— ๋Œ€ํ•œ ์œ ์ € ๊ฒฝํ—˜์ด ์ข‹์ง€ ์•Š์•˜์œผ๋ฉฐ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ชจํ˜•์ œ์ž‘์‹ค์˜ ์˜ˆ์•ฝ, ๊ต์œก, ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ํ•œ๋ฒˆ์— ์‰ฝ๊ฒŒ ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์•ฝ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค์–ด ๋ณด๊ธฐ๋กœ ํ•˜์˜€๋‹ค.



2. ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์„ค์ •

ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ์„ค์ • ๊ฐ€์ด๋“œ (ํด๋ฆญํ•˜์—ฌ ํŽผ์น˜๊ธฐ)
  • ์„œ๋ฒ„์™€ DB, ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
  1. git clone ์ง„ํ–‰
https://github.com/JeonggonCho/HEAR-FE.git

  1. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์œผ๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
$ npm install

  1. ๋กœ์ปฌ์—์„œ ํ”„๋กœ์ ํŠธ ์‹คํ–‰ํ•˜๊ธฐ
$ npm run dev


3. ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜

  • commit -m '์ปค๋ฐ‹ ํƒ€์ž… : ์ปค๋ฐ‹ ์„ค๋ช…'
ํƒ€์ž… ์˜๋ฏธ
add ์ƒˆ๋กœ์šด ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€
feat ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
refactor ๊ธฐ๋Šฅ ๋ณ€ํ™” ์—†์ด ์ฝ”๋“œ ์ˆ˜์ •
style UI ๋ฐ ์Šคํƒ€์ผ ์ˆ˜์ •
fix ์—๋Ÿฌ ๋ฐ ์ด์Šˆ, ๋ฒ„๊ทธ ํ•ด๊ฒฐ
docs ๋ฌธ์„œ ์ž‘์„ฑ
chore ๊ธฐํƒ€ ์ˆ˜์ •


4. ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ™‹๐Ÿป ํšŒ์›

  • ํšŒ์›๊ฐ€์ž… (ํ•œ์–‘๋Œ€ ์ด๋ฉ”์ผ ๊ฒ€์ฆ)
  • ๋กœ๊ทธ์ธ ๋ฐ ๋กœ๊ทธ์•„์›ƒ (JWT ํ™œ์šฉ)
  • ํšŒ์› ํ”„๋กœํ•„
  • ์—ญํ• (ํ•™์ƒ, ์กฐ๊ต, ๊ด€๋ฆฌ์ž)์— ๋”ฐ๋ฅธ ๊ถŒํ•œ ๋ถ„๋ฆฌ
    • ํ•™์ƒ : ์˜ˆ์•ฝํ•˜๊ธฐ, ๋ฌธ์˜ํ•˜๊ธฐ, ํ”ผ๋“œ๋ฐฑ ์ž‘์„ฑ ๋“ฑ์˜ ๊ถŒํ•œ
    • ์กฐ๊ต ๋ฐ ๊ด€๋ฆฌ์ž : ๊ณต์ง€์‚ฌํ•ญ ์ž‘์„ฑ, ์œ ์ € ๊ด€๋ฆฌ, ๊ธฐ๊ธฐ ๊ด€๋ฆฌ, ์˜ˆ์•ฝ ๊ด€๋ฆฌ ๋“ฑ์˜ ๊ถŒํ•œ

๐Ÿ“– ์˜จ๋ณด๋”ฉ(์‚ฌ์šฉ๋ฒ•)

  • ๊ธฐ๊ธฐ(๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ, 3D ํ”„๋ฆฐํ„ฐ, ์—ด์„ , ํ†ฑ, ์‚ฌ์ถœ ์„ฑํ˜•๊ธฐ, CNC)์˜ ์ด์šฉ ๊ทœ์น™, ์‚ฌ์šฉ๋ฒ• ๋“ฑ์„ ์•ˆ๋‚ด

โœ๏ธ ๊ต์œก(ํ€ด์ฆˆ)

  • ๊ธฐ๊ธฐ๋ฅผ ์ด์šฉ ๊ถŒํ•œ์„ ์œ„ํ•œ ๊ต์œก ์ง„ํ–‰
    • ๋ฌธ์ œ ์œ ํ˜•์€ ์ฃผ๊ด€์‹, ๊ฐ๊ด€์‹ ๋ชจ๋‘ ํฌํ•จ
  • ๊ต์œก์—์„œ ์ปคํŠธ๋ผ์ธ ์ ์ˆ˜ ์ด์ƒ ํš๋“ ์‹œ, ์ด์šฉ ๊ถŒํ•œ ๋ถ€์—ฌ

๐Ÿ“† ์˜ˆ์•ฝ

  • ๊ธฐ๊ธฐ ๋ณ„๋กœ ์˜ˆ์•ฝ์˜ ๊ทœ์น™์ด ์ƒ์ดํ•˜๋ฉฐ ์ด์— ๋”ฐ๋ผ์„œ ์˜ˆ์•ฝ ์ง„ํ–‰
    • ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ต์œก ์ด์ˆ˜ ํ•™์ƒ์— ํ•œํ•˜์—ฌ ์˜ˆ์•ฝ ๊ฐ€๋Šฅ
    • ์ž์„ธํ•œ ์ด์šฉ ๊ทœ์น™ ๋ฐ ์‚ฌ์šฉ ์ˆ˜์น™๋“ค์€ ์˜จ๋ณด๋”ฉ(์‚ฌ์šฉ๋ฒ•) ํŽ˜์ด์ง€์— ์ƒ์„ธํžˆ ์•ˆ๋‚ด
    • ๊ฐ„๋‹จํ•œ ๊ทœ์น™์€ ์•„๋ž˜์™€ ๊ฐ™์Œ
      • ๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ : 1ํšŒ ์‹ ์ฒญ์— 1์‹œ๊ฐ„ ์‚ฌ์šฉ / 1์ผ ์ตœ๋Œ€ 2ํšŒ, 1์ฃผ์ผ ์ตœ๋Œ€ 4ํšŒ๊นŒ์ง€ ์˜ˆ์•ฝ ๊ฐ€๋Šฅ(์˜ˆ์•ฝ ๊ฐ€๋Šฅ ํšŸ์ˆ˜ ๋ฆฌ์…‹ ์ž๋™ํ™”) ...
      • 3D ํ”„๋ฆฐํ„ฐ : ๊ธฐ๊ธฐ ๋‹น 1๋ช… ์”ฉ, ํ•˜๋ฃจ 8์‹œ๊ฐ„ ์ด์šฉ ๊ฐ€๋Šฅ ...
      • ์—ด์„  : ์„ค๊ณ„ ์ŠคํŠœ๋””์˜ค ๋‹น 1๋Œ€ ์”ฉ, ์ผ์ฃผ์ผ ๋Œ€์—ฌ ๊ฐ€๋Šฅ(๋™์ผํ•œ ์ŠคํŠœ๋””์˜ค ํ•™์ƒ๋“ค์„ ๋™์‹œ์— ์˜ˆ์•ฝ ์ฒ˜๋ฆฌ) ...
      • ํ†ฑ : ์•ˆ์ „ ์žฅ๋น„ ์ฐฉ์šฉ ํ›„ ์ด์šฉ ...
      • ์‚ฌ์ถœ ์„ฑํ˜•๊ธฐ : ๊ถŒ์žฅ ์žฌ๋ฃŒ๋งŒ ์ด์šฉ ๊ฐ€๋Šฅ ...
      • CNC : 4ํ•™๋…„ ์ด์ƒ, ์กฐ๊ต ํŒ๋‹จ ํ•˜์— ์ด์šฉ ๊ฐ€๋Šฅ ...

๐Ÿ’ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ

  • ๊ณต์ง€์‚ฌํ•ญ, ๋ฌธ์˜, ํ”ผ๋“œ๋ฐฑ, ๋Œ“๊ธ€ ์ž‘์„ฑ ๊ฐ€๋Šฅ
    • ๊ณต์ง€์‚ฌํ•ญ : ๋ชจํ˜•์ œ์ž‘์‹ค ๊ด€ํ•œ ์ฃผ์š” ์‚ฌํ•ญ ๊ณต์ง€
    • ๋ฌธ์˜ : ํ•™์ƒ๋“ค์ด ์กฐ๊ต์—๊ฒŒ ๋ฌธ์˜ ์‚ฌํ•ญ ์š”์ฒญ
    • ํ”ผ๋“œ๋ฐฑ : ์œ ์ €(ํ•™์ƒ, ์กฐ๊ต)๋“ค์ด ๊ด€๋ฆฌ์ž(๊ฐœ๋ฐœ์ž)์—๊ฒŒ ์˜ˆ์•ฝ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ ์ „๋‹ฌ

๐Ÿ“ ๊ด€๋ฆฌ

  • ํ•™์ƒ : ๋‚ด ์˜ˆ์•ฝ, ์ด์šฉ ๋‚ด์—ญ, ๋ฌธ์˜ ๋‚ด์—ญ, ๊ฒฝ๊ณ  ๋‚ด์—ญ
  • ์กฐ๊ต ๋ฐ ๊ด€๋ฆฌ์ž : ์˜ˆ์•ฝ ๊ด€๋ฆฌ, ์œ ์ € ๊ด€๋ฆฌ, ๊ธฐ๊ธฐ ๊ด€๋ฆฌ, ๊ต์œก(ํ€ด์ฆˆ) ๊ด€๋ฆฌ

โš™๏ธ ์‹œ์Šคํ…œ ์„ค์ •

  • ํ…Œ๋งˆ(๋‹คํฌ๋ชจ๋“œ, ๋ผ์ดํŠธ๋ชจ๋“œ) ๋ฐ ๋‹ค๊ตญ์–ด(ํ•œ๊ตญ์–ด, ์˜์–ด, ์ค‘๊ตญ์–ด) ์„ค์ •์„ ์ง€์›


5. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

Frontend

react_logo React (v18.2.0)

  • ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜์˜ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•œ UI ๊ฐœ๋ฐœ์— ์œ ๋ฆฌํ•˜๋‹ค.
  • ๊ฐ€์ƒ DOM๊ณผ SPA๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—…๋ฐ์ดํŠธ์™€ ๋ Œ๋”๋ง์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

vite_logo Vite

  • ๊ฐœ๋ฐœ ์„œ๋ฒ„์˜ ๋น ๋ฅธ ์‹œ์ž‘๊ณผ ํ•ซ ๋ชจ๋“ˆ ๊ต์ฒด(HMR)๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ ์†๋„์— ์œ ๋ฆฌํ•˜๋‹ค.
  • ๋ฒˆ๋“ค๋ง ๊ณผ์ •์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ ์ค‘์— ์ฆ‰๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

emotion_logo Emotion

  • CSS-in-JS๋กœ, ์Šคํƒ€์ผ์„ ์ปดํฌ๋„ŒํŠธ์™€ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
  • ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์—ฌ์ฃผ๋ฉฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ๋™์  ์Šคํƒ€์ผ๋ง์ด ์šฉ์ดํ•˜๋‹ค.

zod_logo zod

  • TypeScript์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฒ€์ฆํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค.
  • ์Šคํ‚ค๋งˆ ์ •์˜๊ฐ€ ์ง๊ด€์ ์ด๊ณ , ๋Ÿฐํƒ€์ž„์—์„œ๋„ ํƒ€์ž… ๊ฒ€์ฆ์„ ํ†ตํ•ด ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

react-hook-form_logo react-hook-form

  • TypeScript ์ง€์›๊ณผ ํ•จ๊ป˜ ํผ์˜ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ฉด์„œ๋„ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

dnd_logo react-beautiful-dnd

  • ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ, ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์‚ฌ์šฉ์„ฑ์ด ๋›ฐ์–ด๋‚˜๊ณ , ์• ๋‹ˆ๋ฉ”์ด์…˜๊ณผ ์ƒํ˜ธ์ž‘์šฉ์ด ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ํ•œ๋‹ค.
  • ๋ณต์žกํ•œ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ๋กœ์ง์„ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

npm_logo react-helmet-async

  • ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋™์  ๋ฉ”ํƒ€ ํƒœ๊ทธ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด SEO์— ๋„์›€์„ ์ค€๋‹ค.
  • ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ž‘๋™ํ•˜์—ฌ ์„ฑ๋Šฅ ์ €ํ•˜ ์—†์ด ํŽ˜์ด์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.

swiper_logo swiper

  • ๋ชจ๋ฐ”์ผ์—์„œ ๋ฐ์Šคํฌํƒ‘๊นŒ์ง€ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ์ž‘๋™ํ•˜๋Š” ์Šฌ๋ผ์ด๋” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ์šฉ์ดํ•˜๊ณ , ๋‹ค์–‘ํ•œ ํ„ฐ์น˜ ์ด๋ฒคํŠธ์™€ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ง€์›ํ•œ๋‹ค.

zustand_logo Zustand

  • ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, Redux๋ณด๋‹ค ๊ฐ„ํŽธํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Backend

express_logo Express.js

  • Node.js ์œ„์—์„œ ๋น ๋ฅด๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋ผ์šฐํŒ…, ๋ฏธ๋“ค์›จ์–ด, ๋ชจ๋ธ ์‚ฌ์šฉ์ด ์šฉ์ดํ•˜์—ฌ RESTful API๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

mongodb_logo mongoDB / mongoose

  • ์Šคํ‚ค๋งˆ๊ฐ€ ์—†๋Š” NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ, ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•˜๋‹ค.
  • Mongoose๋Š” MongoDB์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์‰ฝ๊ฒŒ ํ•˜๊ณ , ์Šคํ‚ค๋งˆ ๊ฒ€์ฆ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.

npm_logo bcrypt.js

  • ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณด์•ˆ์— ํ•„์ˆ˜์ ์ธ ํ•ด์‹œ ํ•จ์ˆ˜๋“ค์„ ์ œ๊ณตํ•˜๋ฉฐ ์•”ํ˜ธํ™”๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ €์žฅ ๋ฐ ์ธ์ฆ ๊ณผ์ •์—์„œ ์•ˆ์ „์„ฑ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค.

nodemailer_logo nodemailer

  • ์ด๋ฉ”์ผ ๋ฐœ์†ก ๊ธฐ๋Šฅ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ๋‹ค์–‘ํ•œ ์ด๋ฉ”์ผ ์„œ๋น„์Šค์™€ ํ†ตํ•ฉ์ด ์šฉ์ดํ•˜๋‹ค.
  • SMTP๋ฅผ ํ†ตํ•ด ์ด๋ฉ”์ผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
  • SMTP(Simple Mail Transfer Protocol) : ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์ด๋ฉ”์ผ์„ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํ† ์ฝœ

agenda_logo agenda

  • ์ž‘์—… ์˜ˆ์•ฝ๊ณผ ์‹คํ–‰์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜๋‹ค.
  • MongoDB์™€ ํ†ตํ•ฉํ•˜์—ฌ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—…์„ ์˜ˆ์•ฝํ•˜๊ณ , ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Deployment

s3_logo S3

  • ์ •์  ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…์— ์ตœ์ ํ™”๋˜์–ด HTML, CSS, JS ํŒŒ์ผ์„ ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์‚ฌ์šฉ๋Ÿ‰ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณผ๊ธˆ์ด ๋˜๋ฉฐ, ์•ˆ์ •์ ์ธ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

cloudfront_logo CloudFront

  • CDN(Content Delivery Network)์„ ํ™œ์šฉํ•ด ์—ฃ์ง€ ๋กœ์ผ€์ด์…˜์— ๋น ๋ฅธ ์ปจํ…์ธ  ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ฆฌ์†Œ์Šค ์บ์‹ฑ์„ ํ†ตํ•ด ์„œ๋ฒ„์˜ ๋ถ€๋‹ด์„ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • HTTPS๋ฅผ ์ง€์›ํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.


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

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋ณด๊ธฐ (ํด๋ฆญํ•˜์—ฌ ํŽผ์น˜๊ธฐ)
src
 โ”œโ”€ api
 โ”‚ โ”œโ”€ auth
 โ”‚ โ”‚ โ”œโ”€ fetchUserApi.ts
 โ”‚ โ”‚ โ”œโ”€ fetchWarningsApi.ts
 โ”‚ โ”‚ โ”œโ”€ findPasswordApi.ts
 โ”‚ โ”‚ โ”œโ”€ signInApi.ts
 โ”‚ โ”‚ โ”œโ”€ signUpApi.ts
 โ”‚ โ”‚ โ”œโ”€ unregisterUserApi.ts
 โ”‚ โ”‚ โ”œโ”€ updatePasswordApi.ts
 โ”‚ โ”‚ โ””โ”€ updateUserApi.ts
 โ”‚ โ”œโ”€ comment
 โ”‚ โ”‚ โ””โ”€ commentApis.ts
 โ”‚ โ”œโ”€ education
 โ”‚ โ”‚ โ””โ”€ educationApis.ts
 โ”‚ โ”œโ”€ feedback
 โ”‚ โ”‚ โ”œโ”€ createFeedbackApi.ts
 โ”‚ โ”‚ โ”œโ”€ deleteFeedbackApi.ts
 โ”‚ โ”‚ โ”œโ”€ fetchFeedbackApi.ts
 โ”‚ โ”‚ โ”œโ”€ fetchFeedbacksApi.ts
 โ”‚ โ”‚ โ””โ”€ updateFeedbackApi.ts
 โ”‚ โ”œโ”€ inquiry
 โ”‚ โ”‚ โ”œโ”€ createInquiryApi.ts
 โ”‚ โ”‚ โ”œโ”€ deleteInquiryApi.ts
 โ”‚ โ”‚ โ”œโ”€ fetchInquiriesApi.ts
 โ”‚ โ”‚ โ”œโ”€ fetchInquiryApi.ts
 โ”‚ โ”‚ โ””โ”€ updateInquiryApi.ts
 โ”‚ โ”œโ”€ machine
 โ”‚ โ”œโ”€ notice
 โ”‚ โ”œโ”€ reservation
 โ”‚ โ””โ”€ axiosInstance.ts
 โ”‚
 โ”œโ”€ components
 โ”‚ โ”œโ”€ account
 โ”‚ โ”‚ โ”œโ”€ DeleteAccount
 โ”‚ โ”‚ โ”œโ”€ FindPasswordForm
 โ”‚ โ”‚ โ”œโ”€ LogoutAccount
 โ”‚ โ”‚ โ”œโ”€ ProfileCard
 โ”‚ โ”‚ โ”œโ”€ SignInForm
 โ”‚ โ”‚ โ”œโ”€ SignUpForm
 โ”‚ โ”‚ โ”œโ”€ StatusCard
 โ”‚ โ”‚ โ”œโ”€ UpdateAccount
 โ”‚ โ”‚ โ”œโ”€ UpdateAssistantAccountForm
 โ”‚ โ”‚ โ”œโ”€ UpdatePassword
 โ”‚ โ”‚ โ”œโ”€ UpdatePasswordForm
 โ”‚ โ”‚ โ”œโ”€ UpdateStudentAccountForm
 โ”‚ โ”‚ โ””โ”€ WarningList
 โ”‚ โ”œโ”€ comment
 โ”‚ โ”‚ โ”œโ”€ CommentDropdown
 โ”‚ โ”‚ โ”œโ”€ CommentListItem
 โ”‚ โ”‚ โ”œโ”€ Comments
 โ”‚ โ”‚ โ”œโ”€ DeleteComment
 โ”‚ โ”‚ โ”œโ”€ LikeComment
 โ”‚ โ”‚ โ””โ”€ UpdateComment
 โ”‚ โ”œโ”€ common
 โ”‚ โ”‚ โ”œโ”€ ArrowBack
 โ”‚ โ”‚ โ”œโ”€ ArrowForward
 โ”‚ โ”‚ โ”œโ”€ Backdrop
 โ”‚ โ”‚ โ”œโ”€ BottomSheet
 โ”‚ โ”‚ โ”‚ โ”œโ”€ BasicBottomSheet.tsx
 โ”‚ โ”‚ โ”‚ โ”œโ”€ BottomSheetBody.tsx
 โ”‚ โ”‚ โ”‚ โ”œโ”€ BottomSheetHeader.tsx
 โ”‚ โ”‚ โ”‚ โ”œโ”€ BottomSheetPortal.tsx
 โ”‚ โ”‚ โ”‚ โ””โ”€ BottomSheetTrigger.tsx
 โ”‚ โ”‚ โ”œโ”€ Button
 โ”‚ โ”‚ โ”œโ”€ Calendar
 โ”‚ โ”‚ โ”œโ”€ Card
 โ”‚ โ”‚ โ”œโ”€ Carousel
 โ”‚ โ”‚ โ”œโ”€ Chart
 โ”‚ โ”‚ โ”œโ”€ ChatBubble
 โ”‚ โ”‚ โ”œโ”€ Divider
 โ”‚ โ”‚ โ”œโ”€ Dropdown
 โ”‚ โ”‚ โ”‚ โ”œโ”€ DropdownItem.tsx
 โ”‚ โ”‚ โ”‚ โ”œโ”€ DropdownMenu.tsx
 โ”‚ โ”‚ โ”‚ โ”œโ”€ DropdownTrigger.tsx
 โ”‚ โ”‚ โ”‚ โ””โ”€ MoreDropdown.tsx
 โ”‚ โ”‚ โ”œโ”€ EmailVerification
 โ”‚ โ”‚ โ”œโ”€ Empty
 โ”‚ โ”‚ โ”œโ”€ ErrorBoundary
 โ”‚ โ”‚ โ”‚ โ”œโ”€ GlobalErrorBoundary.tsx
 โ”‚ โ”‚ โ”‚ โ””โ”€ LocalErrorBoundary.tsx
 โ”‚ โ”‚ โ”œโ”€ Flex
 โ”‚ โ”‚ โ”œโ”€ FloatingButton
 โ”‚ โ”‚ โ”œโ”€ Gallery
 โ”‚ โ”‚ โ”œโ”€ Grid
 โ”‚ โ”‚ โ”œโ”€ HeadTag
 โ”‚ โ”‚ โ”œโ”€ Header
 โ”‚ โ”‚ โ”‚ โ”œโ”€ HeaderCenter.tsx
 โ”‚ โ”‚ โ”‚ โ”œโ”€ HeaderLeft.tsx
 โ”‚ โ”‚ โ”‚ โ””โ”€ HeaderRight.tsx
 โ”‚ โ”‚ โ”œโ”€ Icon
 โ”‚ โ”‚ โ”œโ”€ Image
 โ”‚ โ”‚ โ”œโ”€ Input
 โ”‚ โ”‚ โ”œโ”€ InputMessage
 โ”‚ โ”‚ โ”œโ”€ Label
 โ”‚ โ”‚ โ”œโ”€ Link
 โ”‚ โ”‚ โ”œโ”€ LoadingLoop
 โ”‚ โ”‚ โ”œโ”€ Modal
 โ”‚ โ”‚ โ”‚ โ”œโ”€ ConfirmModal.tsx
 โ”‚ โ”‚ โ”‚ โ”œโ”€ MapModal.tsx
 โ”‚ โ”‚ โ”‚ โ”œโ”€ ModalBody.tsx
 โ”‚ โ”‚ โ”‚ โ”œโ”€ ModalFooter.tsx
 โ”‚ โ”‚ โ”‚ โ”œโ”€ ModalHeader.tsx
 โ”‚ โ”‚ โ”‚ โ”œโ”€ ModalPortal.tsx
 โ”‚ โ”‚ โ”‚ โ””โ”€ ModalTrigger.tsx
 โ”‚ โ”‚ โ”œโ”€ Nav
 โ”‚ โ”‚ โ”œโ”€ ProfileImage
 โ”‚ โ”‚ โ”œโ”€ ProgressBar
 โ”‚ โ”‚ โ”œโ”€ ScrollToTop
 โ”‚ โ”‚ โ”œโ”€ Select
 โ”‚ โ”‚ โ”œโ”€ SideMenu
 โ”‚ โ”‚ โ”œโ”€ Tab
 โ”‚ โ”‚ โ”œโ”€ Textarea
 โ”‚ โ”‚ โ”œโ”€ Timer
 โ”‚ โ”‚ โ”œโ”€ Toast
 โ”‚ โ”‚ โ”œโ”€ Toggle
 โ”‚ โ”‚ โ””โ”€ UserInfoModal
 โ”‚ โ”‚ โ”‚ โ””โ”€ UserInfoModalContent.tsx
 โ”‚ โ”œโ”€ education
 โ”‚ โ”‚ โ”œโ”€ EducationListItem
 โ”‚ โ”‚ โ”œโ”€ EducationSideMenuContent
 โ”‚ โ”‚ โ”œโ”€ GradingAnswerListItem
 โ”‚ โ”‚ โ”œโ”€ ResetEducation
 โ”‚ โ”‚ โ””โ”€ SubmitEducation
 โ”‚ โ”œโ”€ feedback
 โ”‚ โ”‚ โ”œโ”€ CreateFeedbackForm
 โ”‚ โ”‚ โ”œโ”€ DeleteFeedback
 โ”‚ โ”‚ โ”œโ”€ FeedbackDropdown
 โ”‚ โ”‚ โ”œโ”€ FeedbackList
 โ”‚ โ”‚ โ”œโ”€ InquiryFeedbackListItem
 โ”‚ โ”‚ โ”œโ”€ LikeFeedback
 โ”‚ โ”‚ โ”œโ”€ UpdateFeedback
 โ”‚ โ”‚ โ””โ”€ UpdateFeedbackForm
 โ”‚ โ”œโ”€ home
 โ”‚ โ”‚ โ”œโ”€ AssistantCard
 โ”‚ โ”‚ โ”œโ”€ CafeSiteCard
 โ”‚ โ”‚ โ”œโ”€ CncReservationConditionContent
 โ”‚ โ”‚ โ”œโ”€ FeedbackCard
 โ”‚ โ”‚ โ”œโ”€ HeatReservationConditionContent
 โ”‚ โ”‚ โ”œโ”€ HomeHeader
 โ”‚ โ”‚ โ”œโ”€ LaserReservationConditionContent
 โ”‚ โ”‚ โ”œโ”€ NoticeCard
 โ”‚ โ”‚ โ”œโ”€ PrinterReservationConditionContent
 โ”‚ โ”‚ โ”œโ”€ ReservationCard
 โ”‚ โ”‚ โ”œโ”€ SawReservationConditionContent
 โ”‚ โ”‚ โ””โ”€ VacuumReservationConditionContent
 โ”‚ โ”œโ”€ inquiry
 โ”‚ โ”‚ โ”œโ”€ CreateInquiryForm
 โ”‚ โ”‚ โ”œโ”€ DeleteInquiry
 โ”‚ โ”‚ โ”œโ”€ InquiryDropdown
 โ”‚ โ”‚ โ”œโ”€ InquiryList
 โ”‚ โ”‚ โ”œโ”€ LikeInquiry
 โ”‚ โ”‚ โ”œโ”€ UpdateInquiry
 โ”‚ โ”‚ โ””โ”€ UpdateInquiryForm
 โ”‚ โ”œโ”€ management
 โ”‚ โ”‚ โ”œโ”€ AddMachine
 โ”‚ โ”‚ โ”œโ”€ DeleteMachine
 โ”‚ โ”‚ โ”œโ”€ DeleteUser
 โ”‚ โ”‚ โ”œโ”€ EducationManagementEndDateSetting
 โ”‚ โ”‚ โ”œโ”€ EducationManagementMenu
 โ”‚ โ”‚ โ”œโ”€ EducationManagementMenuContent
 โ”‚ โ”‚ โ”œโ”€ EducationManagementSave
 โ”‚ โ”‚ โ”œโ”€ EducationManagementSideMenu
 โ”‚ โ”‚ โ”œโ”€ EducationManagementStartDateSetting
 โ”‚ โ”‚ โ”œโ”€ HandoverUser
 โ”‚ โ”‚ โ”œโ”€ MachineListItem
 โ”‚ โ”‚ โ”œโ”€ MachineManageCard
 โ”‚ โ”‚ โ”œโ”€ NewMachineContent
 โ”‚ โ”‚ โ”œโ”€ OptionListContent
 โ”‚ โ”‚ โ”œโ”€ OptionListItem
 โ”‚ โ”‚ โ”œโ”€ QuestionListContent
 โ”‚ โ”‚ โ”œโ”€ QuestionListItem
 โ”‚ โ”‚ โ”œโ”€ TimeListContent
 โ”‚ โ”‚ โ”œโ”€ TimeListItem
 โ”‚ โ”‚ โ”œโ”€ UsersManagementFilter
 โ”‚ โ”‚ โ””โ”€ UsersManagementFilterContent
 โ”‚ โ”œโ”€ notice
 โ”‚ โ”‚ โ”œโ”€ DeleteNotice
 โ”‚ โ”‚ โ”œโ”€ NoticeDropdown
 โ”‚ โ”‚ โ””โ”€ NoticeListItem
 โ”‚ โ”œโ”€ reservation
 โ”‚ โ”‚ โ”œโ”€ CncReservationForm
 โ”‚ โ”‚ โ”œโ”€ CncSelect
 โ”‚ โ”‚ โ”œโ”€ CncSelectBottomSheetContent
 โ”‚ โ”‚ โ”œโ”€ DeleteReservation
 โ”‚ โ”‚ โ”œโ”€ DeleteSelectedReservations
 โ”‚ โ”‚ โ”œโ”€ LaserSelect
 โ”‚ โ”‚ โ”œโ”€ LaserSelectBottomSheetContent
 โ”‚ โ”‚ โ”œโ”€ PrinterSelectContent
 โ”‚ โ”‚ โ”œโ”€ ReservationListItem
 โ”‚ โ”‚ โ”œโ”€ RoomMap
 โ”‚ โ”‚ โ”œโ”€ SawReservationForm
 โ”‚ โ”‚ โ”œโ”€ SawSelect
 โ”‚ โ”‚ โ”œโ”€ SawSelectBottomSheetContent
 โ”‚ โ”‚ โ”œโ”€ VacuumReservationForm
 โ”‚ โ”‚ โ”œโ”€ VacuumSelect
 โ”‚ โ”‚ โ””โ”€ VacuumSelectBottomSheetContent
 โ”‚ โ””โ”€ skeleton
 โ”‚   โ””โ”€ CardLoading
 โ”‚
 โ”œโ”€ constants
 โ”‚ โ”œโ”€ instruction
 โ”‚ โ”‚ โ”œโ”€ cncInstruction.ts
 โ”‚ โ”‚ โ”œโ”€ heatInstruction.ts
 โ”‚ โ”‚ โ”œโ”€ laserInstruction.ts
 โ”‚ โ”‚ โ”œโ”€ printerInstruction.ts
 โ”‚ โ”‚ โ”œโ”€ sawInstruction.ts
 โ”‚ โ”‚ โ””โ”€ vacuumInstruction.ts
 โ”‚ โ”œโ”€ buttonCategories.ts
 โ”‚ โ”œโ”€ calendarCategories.ts
 โ”‚ โ”œโ”€ cardCategories.ts
 โ”‚ โ”œโ”€ educationCategories.ts
 โ”‚ โ”œโ”€ feedbackCategories.ts
 โ”‚ โ”œโ”€ filterCategories.ts
 โ”‚ โ”œโ”€ headerCategories.ts
 โ”‚ โ”œโ”€ inputCategories.ts
 โ”‚ โ”œโ”€ inquiryCategories.ts
 โ”‚ โ”œโ”€ machineCategories.ts
 โ”‚ โ”œโ”€ messageCategories.ts
 โ”‚ โ”œโ”€ navCategories.ts
 โ”‚ โ”œโ”€ pageDescriptionCategories.ts
 โ”‚ โ”œโ”€ placeholderCategories.ts
 โ”‚ โ””โ”€ regex.ts
 โ”‚
 โ”œโ”€ context
 โ”‚ โ”œโ”€ CommentContext.ts
 โ”‚ โ”œโ”€ EducationContext.ts
 โ”‚ โ”œโ”€ EducationManagementContext.ts
 โ”‚ โ”œโ”€ UsersManagementContext.ts
 โ”‚ โ””โ”€ UsersManagementFilterContext.ts
 โ”‚
 โ”œโ”€ hooks
 โ”‚ โ”œโ”€ useAuth.ts
 โ”‚ โ”œโ”€ useCheckbox.ts
 โ”‚ โ”œโ”€ useDebounce.ts
 โ”‚ โ”œโ”€ useDropdown.ts
 โ”‚ โ”œโ”€ useListCollapse.ts
 โ”‚ โ”œโ”€ useModal.ts
 โ”‚ โ”œโ”€ useRequest.ts
 โ”‚ โ”œโ”€ useRolling.ts
 โ”‚ โ”œโ”€ useScrollbarSize.ts
 โ”‚ โ”œโ”€ useTextarea.ts
 โ”‚ โ””โ”€ useToggle.ts
 โ”‚
 โ”œโ”€ layouts
 โ”‚ โ””โ”€ Layout
 โ”‚
 โ”œโ”€ pages
 โ”‚ โ”œโ”€ auth
 โ”‚ โ”‚ โ”œโ”€ AccountPage
 โ”‚ โ”‚ โ”œโ”€ FindPasswordPage
 โ”‚ โ”‚ โ”œโ”€ MyWarningPage
 โ”‚ โ”‚ โ”œโ”€ SettingPage
 โ”‚ โ”‚ โ”œโ”€ SignInPage
 โ”‚ โ”‚ โ”œโ”€ SignUpDonePage
 โ”‚ โ”‚ โ”œโ”€ SignUpPage
 โ”‚ โ”‚ โ”œโ”€ ThemeSettingPage
 โ”‚ โ”‚ โ”œโ”€ UpdateAccountPage
 โ”‚ โ”‚ โ””โ”€ UpdatePasswordPage
 โ”‚ โ”œโ”€ education
 โ”‚ โ”‚ โ”œโ”€ EducationEndPage
 โ”‚ โ”‚ โ”œโ”€ EducationIntroductionPage
 โ”‚ โ”‚ โ””โ”€ EducationStartPage
 โ”‚ โ”œโ”€ feedback
 โ”‚ โ”‚ โ”œโ”€ CreateFeedbackPage
 โ”‚ โ”‚ โ”œโ”€ FeedbackDetailPage
 โ”‚ โ”‚ โ”œโ”€ FeedbackPage
 โ”‚ โ”‚ โ””โ”€ UpdateFeedbackPage
 โ”‚ โ”œโ”€ home
 โ”‚ โ”‚ โ”œโ”€ HomePage
 โ”‚ โ”‚ โ”œโ”€ NotFoundPage
 โ”‚ โ”‚ โ”œโ”€ NotificationPage
 โ”‚ โ”‚ โ””โ”€ SplashPage
 โ”‚ โ”œโ”€ inquiry
 โ”‚ โ”‚ โ”œโ”€ CreateInquiryPage
 โ”‚ โ”‚ โ”œโ”€ InquiryDetailPage
 โ”‚ โ”‚ โ”œโ”€ InquiryPage
 โ”‚ โ”‚ โ”œโ”€ MyInquiriesPage
 โ”‚ โ”‚ โ””โ”€ UpdateInquiryPage
 โ”‚ โ”œโ”€ instructions
 โ”‚ โ”‚ โ”œโ”€ InstructionPage
 โ”‚ โ”‚ โ”œโ”€ cnc
 โ”‚ โ”‚ โ”‚ โ”œโ”€ InstructionCnc
 โ”‚ โ”‚ โ”‚ โ”œโ”€ Introduction
 โ”‚ โ”‚ โ”‚ โ””โ”€ Work
 โ”‚ โ”‚ โ”œโ”€ heat
 โ”‚ โ”‚ โ”‚ โ”œโ”€ InstructionHeat
 โ”‚ โ”‚ โ”‚ โ””โ”€ Introduction
 โ”‚ โ”‚ โ”œโ”€ laser
 โ”‚ โ”‚ โ”‚ โ”œโ”€ After
 โ”‚ โ”‚ โ”‚ โ”œโ”€ InstructionLaser
 โ”‚ โ”‚ โ”‚ โ”œโ”€ Introduction
 โ”‚ โ”‚ โ”‚ โ”œโ”€ Preparation
 โ”‚ โ”‚ โ”‚ โ””โ”€ Usage
 โ”‚ โ”‚ โ”œโ”€ printer
 โ”‚ โ”‚ โ”‚ โ”œโ”€ After
 โ”‚ โ”‚ โ”‚ โ”œโ”€ InstructionPrinter
 โ”‚ โ”‚ โ”‚ โ”œโ”€ Introduction
 โ”‚ โ”‚ โ”‚ โ”œโ”€ Preparation
 โ”‚ โ”‚ โ”‚ โ””โ”€ Usage
 โ”‚ โ”‚ โ”œโ”€ saw
 โ”‚ โ”‚ โ”‚ โ”œโ”€ After
 โ”‚ โ”‚ โ”‚ โ”œโ”€ InstructionSaw
 โ”‚ โ”‚ โ”‚ โ””โ”€ Warning
 โ”‚ โ”‚ โ”œโ”€ vacuum
 โ”‚ โ”‚ โ”‚ โ”œโ”€ InstructionVacuum
 โ”‚ โ”‚ โ”‚ โ”œโ”€ Introduction
 โ”‚ โ”‚ โ”‚ โ”œโ”€ Preparation
 โ”‚ โ”‚ โ”‚ โ””โ”€ Usage
 โ”‚ โ”‚ โ””โ”€ instruction.style.ts
 โ”‚ โ”œโ”€ management
 โ”‚ โ”‚ โ”œโ”€ EducationManagementPage
 โ”‚ โ”‚ โ”œโ”€ MachinesManagementPage
 โ”‚ โ”‚ โ”œโ”€ ReservationsManagementPage
 โ”‚ โ”‚ โ””โ”€ UsersManagementPage
 โ”‚ โ”œโ”€ notice
 โ”‚ โ”‚ โ”œโ”€ CreateNoticePage
 โ”‚ โ”‚ โ”œโ”€ NoticeDetailPage
 โ”‚ โ”‚ โ”œโ”€ NoticePage
 โ”‚ โ”‚ โ””โ”€ UpdateNoticePage
 โ”‚ โ””โ”€ reservation
 โ”‚   โ”œโ”€ MyReservationsPage
 โ”‚   โ”œโ”€ MyUsagePage
 โ”‚   โ”œโ”€ ReservationCnc
 โ”‚   โ”œโ”€ ReservationDonePage
 โ”‚   โ”œโ”€ ReservationHeat
 โ”‚   โ”œโ”€ ReservationLaser
 โ”‚   โ”œโ”€ ReservationPrinter
 โ”‚   โ”œโ”€ ReservationSaw
 โ”‚   โ””โ”€ ReservationVacuum
 โ”‚
 โ”œโ”€ routes
 โ”‚ โ”œโ”€ AppRoute.tsx
 โ”‚ โ””โ”€ PrivateRoute.tsx
 โ”‚
 โ”œโ”€ schemata
 โ”‚ โ”œโ”€ BoardSchemaProvider.ts
 โ”‚ โ”œโ”€ EducationSchemaProvider.ts
 โ”‚ โ”œโ”€ MachineSchemaProvider.ts
 โ”‚ โ”œโ”€ QuestionSchemaProvider.ts
 โ”‚ โ”œโ”€ UserSchemaProvider.ts
 โ”‚ โ””โ”€ WarningSchemaProvider.ts
 โ”‚
 โ”œโ”€ store
 โ”‚ โ”œโ”€ useAuthStore.ts
 โ”‚ โ”œโ”€ useErrorStore.ts
 โ”‚ โ”œโ”€ useThemeStore.ts
 โ”‚ โ”œโ”€ useToastStore.ts
 โ”‚ โ””โ”€ useUserStore.ts
 โ”‚
 โ”œโ”€ styles
 โ”‚ โ”œโ”€ emotion.d.ts
 โ”‚ โ”œโ”€ global.ts
 โ”‚ โ””โ”€ theme.ts
 โ”‚
 โ”œโ”€ tests
 โ”‚
 โ”œโ”€ types
 โ”‚ โ”œโ”€ authResponse.ts
 โ”‚ โ”œโ”€ comment.ts
 โ”‚ โ”œโ”€ componentProps.ts
 โ”‚ โ”œโ”€ education.ts
 โ”‚ โ”œโ”€ machine.ts
 โ”‚ โ”œโ”€ navCategory.ts
 โ”‚ โ”œโ”€ reservation.ts
 โ”‚ โ”œโ”€ tab.ts
 โ”‚ โ”œโ”€ user.ts
 โ”‚ โ””โ”€ warning.ts
 โ”‚
 โ”œโ”€ util
 โ”‚ โ”œโ”€ calculateDate.ts
 โ”‚ โ”œโ”€ generateCalendar.ts
 โ”‚ โ”œโ”€ generateLinksAndLineBreaks.ts
 โ”‚ โ”œโ”€ getReservationRate.ts
 โ”‚ โ”œโ”€ getScrollbarSize.ts
 โ”‚ โ”œโ”€ getTimeStamp.ts
 โ”‚ โ”œโ”€ hexToRgb.ts
 โ”‚ โ”œโ”€ isEmailValid.ts
 โ”‚ โ”œโ”€ isNumber.ts
 โ”‚ โ””โ”€ stripHtml.ts
 โ”‚
 โ”œโ”€ App.css
 โ”œโ”€ App.tsx
 โ”œโ”€ index.css
 โ””โ”€ main.tsx


7. API ๋ช…์„ธ์„œ

๐Ÿ™‹๐Ÿป ํšŒ์›

API ๋ณด๊ธฐ (ํด๋ฆญํ•˜์—ฌ ํŽผ์น˜๊ธฐ)
๊ธฐ๋Šฅ ๋ฉ”์„œ๋“œ ์š”์ฒญ url
ํ”„๋กœํ•„ ์กฐํšŒ GET /users/
๋ชจ๋“  ์œ ์ € ์ •๋ณด ์กฐํšŒ GET /users/all/
์กฐ๊ต ์ •๋ณด ์กฐํšŒ GET /users/assistant/
๊ฒฝ๊ณ  ๋ชฉ๋ก ์กฐํšŒ GET /users/warnings/
์ด๋ฉ”์ผ ์ค‘๋ณต ํ™•์ธ GET /users/check-email/
ํŠน์ • ์œ ์ € ์ •๋ณด ์กฐํšŒ GET /users/:userId/
์ด๋ฉ”์ผ ์ธ์ฆ๋ฒˆํ˜ธ ์ „์†ก POST /users/send-verification-code/
์ด๋ฉ”์ผ ์ธ์ฆ๋ฒˆํ˜ธ ํ™•์ธ POST /users/verify-email-code/
๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ํ™•์ธ ํ›„, ์•ก์„ธ์Šค ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ POST /users/refresh-token/
ํšŒ์›๊ฐ€์ž… POST /users/signup/
๋กœ๊ทธ์ธ POST /users/login/
๋‚ด ์ •๋ณด ์ˆ˜์ • PATCH /users/
๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆ˜์ • PATCH /users/password/
๋ชจ๋“  ์œ ์ €์˜ ๊ฒฝ๊ณ  ์ดˆ๊ธฐํ™” PATCH /users/warning/
๋ชจ๋“  ์œ ์ €์˜ ๊ต์œก ์ด์ˆ˜ ์ดˆ๊ธฐํ™” PATCH /users/education/
๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ PATCH /users/find-password/
์กฐ๊ต ์—ญํ•  ์ธ์ˆ˜์ธ๊ณ„ PATCH /users/handover-assistant/:targetUserId/
๊ฒฝ๊ณ  ๋ถ€๊ณผ PATCH /users/warning/add/:userId/
๊ฒฝ๊ณ  ๋ฉด์ œ PATCH /users/warning/minus/:userId/
๊ต์œก ์ด์ˆ˜ ์ฒ˜๋ฆฌ PATCH /users/education/pass/:userId/
๊ต์œก ๋ฏธ์ด์ˆ˜ ์ฒ˜๋ฆฌ PATCH /users/education/reset/:userId/
ํšŒ์›ํƒˆํ‡ด(์‚ญ์ œ) DELETE /users/:targetUserId/

๐Ÿ’ฌ ๋ฌธ์˜

API ๋ณด๊ธฐ (ํด๋ฆญํ•˜์—ฌ ํŽผ์น˜๊ธฐ)
๊ธฐ๋Šฅ ๋ฉ”์„œ๋“œ ์š”์ฒญ url
๋ชจ๋“  ๋ฌธ์˜ ๋ชฉ๋ก ์กฐํšŒ GET /inquiries/
๋‚ด ๋ฌธ์˜ ๋ชฉ๋ก ์กฐํšŒ GET /inquiries/me/
๋ฌธ์˜ ๋””ํ…Œ์ผ ์กฐํšŒ GET /inquiries/:inquiryId/
์ƒˆ ๋ฌธ์˜ ์ž‘์„ฑ POST /inquiries/new/
๋ฌธ์˜ ์ข‹์•„์š” POST /inquiries/like/:inquiryId/
๋ฌธ์˜ ์ˆ˜์ • PATCH /inquiries/:inquiryId/
๋ฌธ์˜ ์‚ญ์ œ DELETE /inquiries/:inquiryId/

๐Ÿค” ํ”ผ๋“œ๋ฐฑ

API ๋ณด๊ธฐ (ํด๋ฆญํ•˜์—ฌ ํŽผ์น˜๊ธฐ)
๊ธฐ๋Šฅ ๋ฉ”์„œ๋“œ ์š”์ฒญ url
๋ชจ๋“  ํ”ผ๋“œ๋ฐฑ ๋ชฉ๋ก ์กฐํšŒ GET /feedback/
ํ”ผ๋“œ๋ฐฑ ๋””ํ…Œ์ผ ์กฐํšŒ GET /feedback/:feedbackId/
์ƒˆ ํ”ผ๋“œ๋ฐฑ ์ž‘์„ฑ POST /feedback/new/
ํ”ผ๋“œ๋ฐฑ ์ข‹์•„์š” POST /feedback/like/:feedbackId/
ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ • PATCH /feedback/:feedbackId/
ํ”ผ๋“œ๋ฐฑ ์‚ญ์ œ DELETE /feedback/:feedbackId/

๐Ÿ“„ ๊ณต์ง€์‚ฌํ•ญ

API ๋ณด๊ธฐ (ํด๋ฆญํ•˜์—ฌ ํŽผ์น˜๊ธฐ)
๊ธฐ๋Šฅ ๋ฉ”์„œ๋“œ ์š”์ฒญ url
๋ชจ๋“  ๊ณต์ง€์‚ฌํ•ญ ๋ชฉ๋ก ์กฐํšŒ GET /notices/
์ตœ์‹  ๊ณต์ง€์‚ฌํ•ญ ์กฐํšŒ GET /notices/latest/
๊ณต์ง€์‚ฌํ•ญ ๋””ํ…Œ์ผ ์กฐํšŒ GET /notices/:noticeId/
์ƒˆ ๊ณต์ง€์‚ฌํ•ญ ์ž‘์„ฑ POST /notices/new/
๊ณต์ง€์‚ฌํ•ญ ์ˆ˜์ • PATCH /notices/:noticeId/
๊ณต์ง€์‚ฌํ•ญ ์‚ญ์ œ DELETE /notices/:noticeId/

๐Ÿ“ ๋Œ“๊ธ€

API ๋ณด๊ธฐ (ํด๋ฆญํ•˜์—ฌ ํŽผ์น˜๊ธฐ)
๊ธฐ๋Šฅ ๋ฉ”์„œ๋“œ ์š”์ฒญ url
์ƒˆ ๋Œ“๊ธ€ ์ž‘์„ฑ POST /comments/
๋Œ“๊ธ€ ์ข‹์•„์š” POST /comments/like/:commentId/
๋Œ“๊ธ€ ์ˆ˜์ • PATCH /comments/:commentId/
๋Œ“๊ธ€ ์‚ญ์ œ DELETE /comments/:commentId/

๐Ÿ› ๏ธ ๊ธฐ๊ธฐ

API ๋ณด๊ธฐ (ํด๋ฆญํ•˜์—ฌ ํŽผ์น˜๊ธฐ)
๊ธฐ๋Šฅ ๋ฉ”์„œ๋“œ ์š”์ฒญ url
๊ธฐ๊ธฐ ํ™œ์„ฑํ™” ์ƒํƒœ ์กฐํšŒ GET /machines/status/
๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ์ •๋ณด ์กฐํšŒ GET /machines/lasers/
3D ํ”„๋ฆฐํ„ฐ ์ •๋ณด ์กฐํšŒ GET /machines/printers/
์—ด์„  ์ •๋ณด ์กฐํšŒ GET /machines/heats/
ํ†ฑ ์ •๋ณด ์กฐํšŒ GET /machines/saws/
์‚ฌ์ถœ ์„ฑํ˜•๊ธฐ ์ •๋ณด ์กฐํšŒ GET /machines/vacuums/
CNC ์ •๋ณด ์กฐํšŒ GET /machines/cncs/
๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ์‹œ๊ฐ„ ์ •๋ณด ์กฐํšŒ GET /machines/lasers/times/
๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ์ƒ์„ฑ POST /machines/lasers/
3D ํ”„๋ฆฐํ„ฐ ์ƒ์„ฑ POST /machines/printers/
๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ์‹œ๊ฐ„ ์ƒ์„ฑ POST /machines/lasers/times/
๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ์‹œ๊ฐ„ ์ˆ˜์ • PATCH /machines/lasers/times/
๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ์ˆ˜์ • PATCH /machines/lasers/:laserId/
3D ํ”„๋ฆฐํ„ฐ ์ˆ˜์ • PATCH /machines/printers/:printerId/
์—ด์„  ์ˆ˜์ • PATCH /machines/heats/:heatId/
ํ†ฑ ์ˆ˜์ • PATCH /machines/saws/:sawId/
์‚ฌ์ถœ ์„ฑํ˜•๊ธฐ ์ˆ˜์ • PATCH /machines/vacuums/:vacuumId/
CNC ์ˆ˜์ • PATCH /machines/cncs/:cncId/
๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ์‚ญ์ œ DELETE /machines/lasers/:laserId/
3D ํ”„๋ฆฐํ„ฐ ์‚ญ์ œ DELETE /machines/printers/:printerId/
๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ์‹œ๊ฐ„ ์‚ญ์ œ DELETE /machines/lasers/times/:laserTimeId/

๐Ÿ“† ์˜ˆ์•ฝ

API ๋ณด๊ธฐ (ํด๋ฆญํ•˜์—ฌ ํŽผ์น˜๊ธฐ)
๊ธฐ๋Šฅ ๋ฉ”์„œ๋“œ ์š”์ฒญ url
๋ชจ๋“  ์˜ˆ์•ฝ ํ˜„ํ™ฉ ์กฐํšŒ GET /reservations/all/
๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ๊ธฐ๊ธฐ ๋‹น ์˜ˆ์•ฝ ๊ฐ€๋Šฅ ์‹œ๊ฐ„ ์กฐํšŒ GET /reservations/lasers/
3D ํ”„๋ฆฐํ„ฐ ์˜ˆ์•ฝ ํ˜„ํ™ฉ ์กฐํšŒ GET /reservations/printers/
์—ด์„  ์˜ˆ์•ฝ ํ˜„ํ™ฉ ์กฐํšŒ GET /reservations/heats/
ํ†ฑ ์˜ˆ์•ฝ ํ˜„ํ™ฉ ์กฐํšŒ GET /reservations/saws/
์‚ฌ์ถœ ์„ฑํ˜•๊ธฐ ์˜ˆ์•ฝ ํ˜„ํ™ฉ ์กฐํšŒ GET /reservations/vacuums/
CNC ์˜ˆ์•ฝ ํ˜„ํ™ฉ ์กฐํšŒ GET /reservations/cncs/
๋‚ด ์˜ˆ์•ฝ ๋‚ด์—ญ ์กฐํšŒ GET /reservations/me/
๋‚ด ์ด์šฉ ๋‚ด์—ญ ์กฐํšŒ GET /reservations/history/
๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ์˜ˆ์•ฝ POST /reservations/lasers/
3D ํ”„๋ฆฐํ„ฐ ์˜ˆ์•ฝ POST /reservations/printers/
์—ด์„  ์˜ˆ์•ฝ POST /reservations/heats/
ํ†ฑ ์˜ˆ์•ฝ POST /reservations/saws/
์‚ฌ์ถœ ์„ฑํ˜•๊ธฐ ์˜ˆ์•ฝ POST /reservations/vacuums/
CNC ์˜ˆ์•ฝ POST /reservations/cncs/
์˜ˆ์•ฝ ์ทจ์†Œ DELETE /reservations/

โœ๏ธ ๊ต์œก(ํ€ด์ฆˆ)

API ๋ณด๊ธฐ (ํด๋ฆญํ•˜์—ฌ ํŽผ์น˜๊ธฐ)
๊ธฐ๋Šฅ ๋ฉ”์„œ๋“œ ์š”์ฒญ url
๊ต์œก ๋ฌธ์ œ ๋ฐ ์„ค์ • ์กฐํšŒ GET /education/
๊ต์œก ์„ค์ • ์กฐํšŒ GET /education/settings/
๊ต์œก ๋ฌธ์ œ ์กฐํšŒ GET /education/questions/
์œ ์ €์˜ ํ…Œ์ŠคํŠธ ์‘์‹œ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ™•์ธ ์กฐํšŒ GET /education/status/
์œ ์ €์˜ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ํ™•์ธ GET /education/result/
๋‹ต์•ˆ ์ œ์ถœ POST /education/check/
๊ต์œก ๋ฌธ์ œ ์ €์žฅ PATCH /education/
๊ต์œก ๋ฌธ์ œ ๊ฒŒ์‹œ ๋˜๋Š” ๋น„๊ฒŒ์‹œ PATCH /education/implementation/
๊ต์œก ์ปคํŠธ๋ผ์ธ ๋ฌธ์ œ ๊ฐœ์ˆ˜ ์„ค์ • PATCH /education/cut-off-point/
๊ต์œก ๋‚ ์งœ ์„ค์ • PATCH /education/date/


8. ๋””์ž์ธ ๋ชฉ์—…

ํ”ผ๊ทธ๋งˆ ๋ชฉ์—…

https://www.figma.com/design/U39GPUlT8z3KoOOaW7MiEl/HEAR?m=auto&t=HVueMdVK1sukZC6P-1



9. ๊ฐœ๋ฐœ ํ™”๋ฉด

์Šคํ”Œ๋ž˜์‰ฌ ํŽ˜์ด์ง€ / ํ™ˆ ํŽ˜์ด์ง€

Splash ํ™ˆ
splash home
- ์ผ์ •์‹œ๊ฐ„ ์ดํ›„, ํŽ˜์ด๋“œ ์•„์›ƒ
- session storage๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดˆ๊ธฐ์—๋งŒ ํ‘œ์‹œ
- ๊ธฐ๊ธฐ ์˜ˆ์•ฝ ํ˜„ํ™ฉ ํ™•์ธ ๊ฐ€๋Šฅ
- ๊ธฐ๊ธฐ ์•„์ด์ฝ˜ ํด๋ฆญ์œผ๋กœ ์˜ˆ์•ฝ ํŽ˜์ด์ง€ ์ด๋™
- ์ตœ๊ทผ ๊ณต์ง€์‚ฌํ•ญ ํ™•์ธ ๊ฐ€๋Šฅ
- ์กฐ๊ต ์ •๋ณด ์นด๋“œ ํ‘œ์‹œ
- ํ•™๊ณผ ์นดํŽ˜ ์‚ฌ์ดํŠธ(๋ถˆ๊ฝƒ๊ฑด์ถ•) ๋งํฌ
- ํ”ผ๋“œ๋ฐฑ ์ž‘์„ฑ ๋งํฌ

ํšŒ์› ํŽ˜์ด์ง€

๋กœ๊ทธ์ธ ํšŒ์›๊ฐ€์ž… ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ
login signin find_password
- ์‹ค์‹œ๊ฐ„ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ํ•œ์–‘๋Œ€ ์ด๋ฉ”์ผ๋งŒ ์ด์šฉ ๊ฐ€๋Šฅ - nodemailer๋ฅผ ์ด์šฉํ•œ ํ•œ์–‘๋Œ€ ์ด๋ฉ”์ผ ์ธ์ฆ
- ํ•™์ƒ ์ •๋ณด ์ž…๋ ฅ
- ๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ ์ œ๊ฑฐ ํ›„, ์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ด๋ฉ”์ผ๋กœ ์ „์†ก
ํ•™์ƒ ํ”„๋กœํ•„ ์กฐ๊ต ํ”„๋กœํ•„ ํšŒ์›์ •๋ณด ์ˆ˜์ •
student_profile assistant_profile change_profile
- ๊ธฐ๋ณธ ์ •๋ณด ๋ฐ ๊ต์œก ์ด์ˆ˜ ํ˜„ํ™ฉ, ๊ฒฝ๊ณ  ํšŸ์ˆ˜ ํ™•์ธ ๊ฐ€๋Šฅ
- ๋‚ด ์˜ˆ์•ฝ, ์ด์šฉ ๋‚ด์—ญ, ๋ฌธ์˜ ๋‚ด์—ญ, ๊ฒฝ๊ณ  ๋‚ด์—ญ ํ™•์ธ ๊ฐ€๋Šฅ
- ์กฐ๊ต ๊ธฐ๋ณธ ์ •๋ณด ํ™•์ธ ๊ฐ€๋Šฅ
- ์˜ˆ์•ฝ, ์œ ์ €, ๊ธฐ๊ธฐ, ๊ต์œก์˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ์ œ๊ณต
- ์ด๋ฆ„, ํ•™๋ฒˆ, ์ „ํ™”๋ฒˆํ˜ธ ์ˆ˜์ • ๊ฐ€๋Šฅ
ํ…Œ๋งˆ ๋ฐ ์–ธ์–ด ์„ค์ •
setting
- local storage๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ค์ • ๊ด€๋ฆฌ
- ๋ผ์ดํŠธ๋ชจ๋“œ์™€ ๋‹คํฌ๋ชจ๋“œ ํ…Œ๋งˆ ์ง€์›
- ๊ตํ™˜ํ•™์ƒ์„ ๊ณ ๋ คํ•ด ํ•œ๊ตญ์–ด, ์˜์–ด, ์ค‘๊ตญ์–ด ์ง€์›

์˜จ๋ณด๋”ฉ(์‚ฌ์šฉ๋ฒ•) ํŽ˜์ด์ง€

์‚ฌ์šฉ๋ฒ• ๋ชฉ๋ก ์‚ฌ์šฉ๋ฒ• ์ด๋ฏธ์ง€ ๋ทฐ์–ด
instruction_list instruction instruction_image_viewer
- ๋ชจํ˜• ์ œ์ž‘์‹ค ๊ธฐ๊ธฐ 6์ข…์— ๋Œ€ํ•œ ์ด์šฉ ์ˆ˜์น™ ๋ฐ ์ฃผ์˜์‚ฌํ•ญ ์•ˆ๋‚ด - ๊ธฐ๊ธฐ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํƒญ์„ ํ†ตํ•ด ๋ถ„๋ฅ˜ - ์ด๋ฏธ์ง€ ํด๋ฆญ ์‹œ, ๋ทฐ์–ด ์ฐฝ ์—ด๋ฆผ
- ํ™•๋Œ€ ๋ฐ ์ถ•์†Œ, ํฌ๊ธฐ ์ดˆ๊ธฐํ™” ๊ธฐ๋Šฅ ์ œ๊ณต

์˜ˆ์•ฝ ํŽ˜์ด์ง€

๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ์˜ˆ์•ฝ 3D ํ”„๋ฆฐํ„ฐ ์˜ˆ์•ฝ ์—ด์„  ์˜ˆ์•ฝ
reservation_laser
- ๊ธฐ๊ธฐ ๋ฐ ์‹œ๊ฐ„์„ ์„ ํƒ
- ์ตœ๋Œ€ ์ผ์ผ 2ํšŒ / ์ฃผ 4ํšŒ ์˜ˆ์•ฝ ๊ฐ€๋Šฅ
ํ†ฑ ์˜ˆ์•ฝ ์‚ฌ์ถœ ์„ฑํ˜•๊ธฐ ์˜ˆ์•ฝ CNC ์˜ˆ์•ฝ
reservation_saw reservation_vacuum reservation_cnc
- ๋‚ ์งœ ์„ ํƒ
- ์‹œ์ž‘ ์‹œ๊ฐ„๊ณผ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ ์„ค์ •
- ์‹œ์ž‘ ์‹œ๊ฐ„์ด ์ข…๋ฃŒ ์‹œ๊ฐ„์˜ ์ด์ „์ด ๋˜๋„๋ก ๊ฒ€์‚ฌ
- ์‹œ๊ฐ„์€ ์กฐ๊ต์— ์˜ํ•ด ๋ณ€๊ฒฝ ๋  ์ˆ˜ ์žˆ์Œ์„ ์•ˆ๋‚ด
- ๋‚ ์งœ ์„ ํƒ
- ์‹œ์ž‘ ์‹œ๊ฐ„๊ณผ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ ์„ค์ •
- ์‹œ์ž‘ ์‹œ๊ฐ„์ด ์ข…๋ฃŒ ์‹œ๊ฐ„์˜ ์ด์ „์ด ๋˜๋„๋ก ๊ฒ€์‚ฌ
- ์‹œ๊ฐ„์€ ์กฐ๊ต์— ์˜ํ•ด ๋ณ€๊ฒฝ ๋  ์ˆ˜ ์žˆ์Œ์„ ์•ˆ๋‚ด
- 4ํ•™๋…„ ์ด์ƒ๋งŒ ์ด์šฉ ๊ฐ€๋Šฅํ•จ์„ ํ™•์ธ์‹œํ‚ด
- ๋‹ฌ๋ ฅ ์ปดํฌ๋„ŒํŠธ๋กœ ๋‚ ์งœ ์„ ํƒ
- ์œ ์ €๊ฐ€ 4ํ•™๋…„ ์ด์ƒ์ด ์•„๋‹Œ ๊ฒฝ์šฐ, ์˜ˆ์•ฝ ๋ถˆ๊ฐ€๋Šฅ

์†Œํ†ต ํŽ˜์ด์ง€(๊ณต์ง€์‚ฌํ•ญ, ๋ฌธ์˜, ํ”ผ๋“œ๋ฐฑ)

๊ณต์ง€์‚ฌํ•ญ ์ž‘์„ฑ ๊ณต์ง€์‚ฌํ•ญ
writing_notice notice_detail
- ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ ์ž‘์„ฑ ๊ฐ€๋Šฅ
- ๋ณธ๋ฌธ์€ ์ตœ์†Œ 10์ž ์ด์ƒ ์ž‘์„ฑํ•˜๋„๋ก ์‹ค์‹œ๊ฐ„ ๊ฒ€์‚ฌ
- ๊ณต์ง€์‚ฌํ•ญ ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ์„ ํ™•์ธ ๊ฐ€๋Šฅ
- ๋Œ“๊ธ€ ์ž‘์„ฑ ๊ธฐ๋Šฅ
- ๋Œ“๊ธ€ ์ข‹์•„์š” ๊ธฐ๋Šฅ
๋ฌธ์˜ ๋ฐ ํ”ผ๋“œ๋ฐฑ ์ž‘์„ฑ ๋ฌธ์˜ ๋ฐ ํ”ผ๋“œ๋ฐฑ
writing_feedback inquiry_detail
- ์ œ๋ชฉ๊ณผ ์นดํ…Œ๊ณ ๋ฆฌ, ๋ณธ๋ฌธ์„ ์ž‘์„ฑ ๊ฐ€๋Šฅ
- ๋ณธ๋ฌธ์€ ์ตœ์†Œ 10์ž ์ด์ƒ ์ž‘์„ฑํ•˜๋„๋ก ์‹ค์‹œ๊ฐ„ ๊ฒ€์‚ฌ
- ๋ฌธ์˜ / ํ”ผ๋“œ๋ฐฑ์˜ ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ ํ™•์ธ ๊ฐ€๋Šฅ
- ๋Œ“๊ธ€ ์ž‘์„ฑ ๊ธฐ๋Šฅ
- ๋Œ“๊ธ€ ์ข‹์•„์š” ๊ธฐ๋Šฅ

๊ต์œก(ํ€ด์ฆˆ) ํŽ˜์ด์ง€

๊ต์œก(ํ€ด์ฆˆ) ์†Œ๊ฐœ ํ€ด์ฆˆ ํ’€๊ธฐ ํ€ด์ฆˆ ์ œ์ถœ ๋ฐ ๊ฒฐ๊ณผ
education_intro education education_check
- ๊ธฐ๊ฐ„, ๋Œ€์ƒ, ์ปคํŠธ๋ผ์ธ, ์ฃผ์˜์‚ฌํ•ญ์„ ์•ˆ๋‚ด
- ๊ต์œก ๊ธฐ๊ฐ„์— ํ•ด๋‹น ์‹œ, ๊ต์œก์ด ํ™œ์„ฑํ™” ๋จ
- ์ฃผ๊ด€์‹, ๋‹จ์ผ ์„ ํƒํ˜•, ๋‹ค์ค‘ ์„ ํƒํ˜• ๋ฌธ์ œ ์ถœ์ œ
- ๋‹ต์•ˆ ์ง€์šฐ๊ธฐ ๋ฐ ๋ชจ๋“  ๋‹ต์•ˆ ์ดˆ๊ธฐํ™” ๊ธฐ๋Šฅ ์ œ๊ณต
- ๋‹ต์•ˆ ์ œ์ถœ ์‹œ, ํ•™๋…„๊ณผ ๊ต์ˆ˜๋‹˜ ์ •๋ณด ์ˆ˜์ •ํ•˜๋„๋ก ์œ ๋„
- ์ปคํŠธ๋ผ์ธ ์ด์ƒ ์ •๋‹ต ์‹œ, ๊ต์œก ์ด์ˆ˜๋กœ ์ฒ˜๋ฆฌ ๋จ
- ์ •๋‹ต๊ณผ ์˜ค๋‹ต ์•ˆ๋‚ด

๊ด€๋ฆฌ ํŽ˜์ด์ง€

ํ•™์ƒ

์˜ˆ์•ฝ ์ด์šฉ
my_reservations
- ์œ ์ €๊ฐ€ ์˜ˆ์•ฝํ•œ ๊ธฐ๊ธฐ ๋ชฉ๋ก ํ™•์ธ ๊ฐ€๋Šฅ
- ๊ธฐ๊ธฐ ๋ณ„๋กœ ํ•„ํ„ฐ๋ง ๊ฐ€๋Šฅ
- ์ „์ฒด ๋˜๋Š” ์ผ๋ถ€ ์„ ํƒ์œผ๋กœ ์˜ˆ์•ฝ ์ทจ์†Œ ๊ฐ€๋Šฅ
๋ฌธ์˜ ๊ฒฝ๊ณ 
my_inquiries my_warnings
- ์œ ์ €์˜ ๋ฌธ์˜ ๋ชฉ๋ก ํ™•์ธ ๊ฐ€๋Šฅ - ์œ ์ €๊ฐ€ ๋ฐ›์€ ๊ฒฝ๊ณ  ๋ชฉ๋ก ํ™•์ธ ๊ฐ€๋Šฅ
- ์กฐ๊ต๊ฐ€ ๊ฒฝ๊ณ  ํšŸ์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด๋„ ๋‚ด์—ญ์€ ๋‚จ์Œ

์กฐ๊ต ๋ฐ ๊ด€๋ฆฌ์ž

์˜ˆ์•ฝ ์œ ์ €
manage_user
- ์ด๋ฆ„ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ
- ํ•™๋…„, ๊ฒฝ๊ณ  ํšŒ์ˆ˜, ๊ต์œก ์ด์ˆ˜์—ฌ๋ถ€ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ
- ์œ ์ € ์ •๋ณด ์ƒ์„ธ๋ณด๊ธฐ ์ œ๊ณต
- ์œ ์ € ๊ฒฝ๊ณ  ๋ถ€๊ณผ, ์œ ์ € ํƒˆํ‡ด, ์กฐ๊ต ์ธ์ˆ˜์ธ๊ณ„ ๊ธฐ๋Šฅ
๊ธฐ๊ธฐ ๊ต์œก
manage_machine
- ๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ๊ธฐ๊ธฐ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ
- ๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ์˜ˆ์•ฝ ์‹œ๊ฐ„ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ, ์ˆœ์„œ ๋ณ€๊ฒฝ
- 3D ํ”„๋ฆฐํ„ฐ ๊ธฐ๊ธฐ ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ
- ์—ด์„  ์šด์šฉ ๊ฐœ์ˆ˜ ์„ค์ •
- ๊ธฐ๊ธฐ ํ™œ์„ฑํ™” ์˜จ์˜คํ”„ ํ† ๊ธ€ ๋ฒ„ํŠผ ๊ธฐ๋Šฅ


10. ์ด์Šˆ

1. ํ† ๊ธ€ ๋ฒ„ํŠผ์„ ๋น ๋ฅด๊ฒŒ ์—ฐ์† ํด๋ฆญ ์‹œ, DB์˜ ์ƒํƒœ์™€ ํ† ๊ธ€ ์ƒํƒœ์˜ ์‹ฑํฌ๊ฐ€ ๋งž์ง€ ์•Š๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ

[๋ธ”๋กœ๊ทธ ์ „๋ฌธ ํ™•์ธํ•˜๊ธฐ]


2. ๋ชฉ๋ก ๋”๋ณด๊ธฐ(list collapse)์˜ ๋ถ€๋“œ๋Ÿฌ์šด ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ ์šฉํ•˜๊ธฐ


3. ๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ์‹œ๊ฐ„ ๋ชฉ๋ก ์ˆœ์„œ ์„ค์ •, ๊ต์œก(ํ€ด์ฆˆ)์˜ ๋ฌธ์ œ ์ˆœ์„œ ์„ค์ •์— ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ์ ์šฉํ•˜๊ธฐ


4. ๋ชจ๋‹ฌ ๋‹ซ๊ธฐ ๋ฒ„ํŠผ์ด ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ์—๋Ÿฌ ๋ฐœ์ƒ


5. ๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ์‹œ๊ฐ„ ๋ชฉ๋ก ์ˆœ์„œ ์„ค์ • ์‹œ, ๊ธฐ์กด ๋ ˆ์ด์ € ์ปคํŒ…๊ธฐ ์˜ˆ์•ฝ์ด ํ’€๋ ค๋ฒ„๋ฆฌ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ


6. react-helmet-async ์ ์šฉํ•˜๊ธฐ


7. ๋‚ด ์˜ˆ์•ฝ ๋‚ด์—ญ ์‚ญ์ œ ์‹œ, ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง ์ด์šฉํ•˜๊ธฐ


8. Toast ๋ฉ”์‹œ์ง€๊ฐ€ ํŽ˜์ด์ง€ ์ด๋™ ๋ฐ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์‹œ์—๋„ ํ‘œ์‹œ๋˜๋„๋ก ํ•˜๊ธฐ


9. ํ™ˆํ™”๋ฉด ๊ณต์ง€์‚ฌํ•ญ ๋ฌดํ•œ ๋กค๋ง ๊ตฌํ˜„ํ•˜๊ธฐ


10. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์บ˜๋ฆฐ๋” ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„ํ•˜๊ธฐ


11. useForm ํ›…์— 'mode : onChange' ์„ค์ •์„ ํ–ˆ๋Š”๋ฐ ์‹ค์‹œ๊ฐ„ ์ถ”์ ์ด ์•ˆ๋˜๋˜ ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ


12. useForm ํ›…์œผ๋กœ ํผ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜์—ฌ ์ƒˆ๋กœ๊ณ ์นจ ์‹œ์—๋„ ์œ ์ง€ํ•˜๋„๋ก ํ•˜๋ คํ–ˆ๋Š”๋ฐ ์ƒˆ๋กœ๊ณ ์นจ ์‹œ, ์„ธ์…˜์ด ์ดˆ๊ธฐํ™” ๋˜๊ฑฐ๋‚˜, ์„ธ์…˜์— ํผ์ด ์•ˆ ์ฑ„์›Œ์ง€๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ


13. ๋„์ปค ๋นŒ๋“œ ์บ์‹œ๋กœ ์ธํ•œ ๋ฌธ์ œ ๋ฐ AWS Cloudfront์˜ ์บ์‹ฑ์œผ๋กœ ์ธํ•œ ํŽ˜์ด์ง€ ์ ‘๊ทผ ์‹œ, ์—๋Ÿฌ ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ


About

๐Ÿ› ๏ธ Vite + React + TS๋ฅผ ์ด์šฉํ•˜์—ฌ ์ œ์ž‘ํ•œ ํ•œ์–‘๋Œ€ํ•™๊ต ์—๋ฆฌ์นด ๊ฑด์ถ•ํ•™๋ถ€ ๋ชจํ˜•์ œ์ž‘์‹ค ์˜ˆ์•ฝ์‹œ์Šคํ…œ 'HEAR'์˜ FE ์ž…๋‹ˆ๋‹ค.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published