Skip to content

llleahll/shoebox

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

149 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ฆ ์Šˆ๋ฐ•์Šค Spring Boot ์›น ํ”„๋กœ์ ํŠธ (Shoebox)

์˜จ๋ผ์ธ ์‹ ๋ฐœ ์‡ผํ•‘๋ชฐ์„ ์œ„ํ•œ Spring Boot Full-stack ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ UI์™€ ์•ˆ์ •์ ์ธ ๋ฐฑ์—”๋“œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ†ตํ•ด
์ƒํ’ˆ ๊ฒ€์ƒ‰๋ถ€ํ„ฐ ๊ฒฐ์ œ๊นŒ์ง€ ์›ํ™œํ•œ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ƒํ’ˆยทํšŒ์›ยท์ฃผ๋ฌธ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€๋„ ํฌํ•จ๋œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.


โœจ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

  • ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„: 2025.05.12 ~ 2025.05.23 (2์ฃผ)
  • ๊ฐœ๋ฐœ ํ˜•ํƒœ: ํŒ€ ํ”„๋กœ์ ํŠธ (8์ธ)
  • ๋‹ด๋‹น ์—…๋ฌด: ํ”„๋ก ํŠธ์—”๋“œ ๋ฉ”์ธ ํŽ˜์ด์ง€, ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€ ํ”„๋ก ํŠธ& ๋ฐฑ์—”๋“œ ํšŒ์›๊ด€๋ฆฌ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ, UI/UX ๊ธฐํš ์ฐธ์—ฌ

๐Ÿ”ง ๊ธฐ์ˆ  ์Šคํƒ & ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • Frontend: Thymeleaf, HTML5, CSS3, JavaScript
  • Backend: Java (JDK 17), Spring Boot 3.4.5, Spring Security, MyBatis, JPA
  • Database: Oracle XE 18c, ๊ณต๊ณต API
  • Version Control: GitHub, Git Flow
  • Tools & IDE: IntelliJ IDEA, STS4, Eclipse, VS Code, Gradle, SQL Developer, Figma, Photoshop
  • OS: Windows 11

๐Ÿš€ ์„œ๋น„์Šค ๊ธฐ๋Šฅ ์š”์•ฝ

1. ๊ณ„์ • & ํ”„๋กœํ•„

  • ์ด๋ฉ”์ผ, ์†Œ์…œ ๋กœ๊ทธ์ธ ์ง€์›
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ • / ์•„์ด๋”” ์ฐพ๊ธฐ
  • ๊ฐœ์ธ ํ”„๋กœํ•„: ์ฃผ๋ฌธ ๋‚ด์—ญ, ์ ๋ฆฝ๊ธˆยท์ฟ ํฐ, ๋ฆฌ๋ทฐ/Q&A ๊ธฐ๋ก ํ™•์ธ ๊ฐ€๋Šฅ

2. ์‡ผํ•‘ ์—ฌ์ •

  1. ํƒ์ƒ‰ํ•˜๊ธฐ
    • ์นดํ…Œ๊ณ ๋ฆฌ / ๋ธŒ๋žœ๋“œ / ์„ฑ๋ณ„ / ์—ฐ๋ น๋Œ€ ๋ณ„ ์ƒํ’ˆ ํ•„ํ„ฐ
    • ์ •๋ ฌ ์˜ต์…˜(์‹ ์ƒํ’ˆ, ํ• ์ธ์œจ, ์ธ๊ธฐ์ˆœ) ์ œ๊ณต
  2. ์ƒํ’ˆ ์‚ดํŽด๋ณด๊ธฐ
    • ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋“œ, ์˜ต์…˜(์ƒ‰์ƒยท์‚ฌ์ด์ฆˆ) ์„ ํƒ, ์žฌ๊ณ  ํ™•์ธ
    • ์‹ค๊ตฌ๋งค์ž ํ›„๊ธฐ, ํ‰์ , Q&A ์—ด๋žŒ ๊ฐ€๋Šฅ
  3. ์žฅ๋ฐ”๊ตฌ๋‹ˆ & ์œ„์‹œ๋ฆฌ์ŠคํŠธ
    • ์„ ํƒ ์ƒํ’ˆ ๋‹ด๊ธฐ / ์‚ญ์ œ / ์ˆ˜๋Ÿ‰ ๋ณ€๊ฒฝ
    • ์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ์ฆ‰์‹œ ์ฃผ๋ฌธ ๊ฐ€๋Šฅ

3. ๊ฒฐ์ œ & ๋ฐฐ์†ก

  • ๋‹ค์–‘ํ•œ ๊ฒฐ์ œ์ˆ˜๋‹จ (์นด๋“œ, ๊ฐ„ํŽธ๊ฒฐ์ œ, ๋ฌดํ†ต์žฅ์ž…๊ธˆ)
  • ์ฟ ํฐ/ํฌ์ธํŠธ ๋™์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๋ฐฐ์†ก์ง€ ๊ด€๋ฆฌ ๋ฐ ๋ฐฐ์†ก ์ƒํƒœ ์‹ค์‹œ๊ฐ„ ํ™•์ธ
  • ์ฃผ๋ฌธ ์ทจ์†Œ / ํ™˜๋ถˆ ์ ˆ์ฐจ ์ œ๊ณต

4. ์ปค๋ฎค๋‹ˆํ‹ฐ & ์ฐธ์—ฌ

  • ์ƒํ’ˆ ํ›„๊ธฐ ์ž‘์„ฑ + ๋ณ„์  ๋“ฑ๋ก
  • ๋ฌธ์˜(Q&A) ๋“ฑ๋ก ๋ฐ ๋‹ต๋ณ€ ํ™•์ธ
  • ์ด๋ฒคํŠธ / ํ”„๋กœ๋ชจ์…˜ ์ฐธ์—ฌ ๊ฐ€๋Šฅ

5. ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€

  • ์ƒํ’ˆ ๋“ฑ๋กยท์ˆ˜์ •ยทํ• ์ธ์œจ/์žฌ๊ณ  ๊ด€๋ฆฌ
  • ํšŒ์› ๋“ฑ๊ธ‰ ์กฐ์ • ๋ฐ ํฌ์ธํŠธยท์ฟ ํฐ ์ง€๊ธ‰
  • ์ด๋ฒคํŠธ, ๊ณต์ง€, ๋ฐฐ๋„ˆ, ํŒ์—… ๋“ฑ ํ”„๋กœ๋ชจ์…˜ ๊ด€๋ฆฌ
  • ๋ฆฌ๋ทฐ ๋ธ”๋ผ์ธ๋“œ ์ฒ˜๋ฆฌ & ์‹ ๊ณ  ๋Œ€์‘
  • Q&A ๋ฐ 1:1 ๋ฌธ์˜ ๋‹ต๋ณ€ ๊ด€๋ฆฌ
  • ๋งค์ถœ/ํšŒ์› ํ†ต๊ณ„ ๋Œ€์‹œ๋ณด๋“œ ์ œ๊ณต

๐Ÿ’ป ์‹คํ–‰ ํ™”๋ฉด

๐Ÿ›๏ธ ๋ฉ”์ธ ์„œ๋น„์Šค

  • ๋ฉ”์ธ โ†’ ์ƒํ’ˆ ์ƒ์„ธ โ†’ ์žฅ๋ฐ”๊ตฌ๋‹ˆ โ†’ ๊ฒฐ์ œ โ†’ ์ฃผ๋ฌธ ์™„๋ฃŒ
์ „์ฒด ์„œ๋น„์Šค ํ๋ฆ„

๐Ÿ› ๏ธ โญ ๋‹ด๋‹น ํ™”๋ฉด (๋ฉ”์ธ Frontend + ๊ด€๋ฆฌ์ž Frontend + Backend)

1๏ธโƒฃ ์นดํ…Œ๊ณ ๋ฆฌ ํŽ˜์ด์ง€

์นดํ…Œ๊ณ ๋ฆฌ ํŽ˜์ด์ง€
  • ์ƒํ’ˆ ํ•„ํ„ฐ, ์ •๋ ฌ, ๋ฆฌ์ŠคํŠธ ๊ตฌํ˜„
  • CSS ๋ฐ ๋ ˆ์ด์•„์›ƒ ์กฐ์ •์œผ๋กœ ํ™”๋ฉด ๊นจ์ง ๋ฐฉ์ง€

2๏ธโƒฃ ์ƒํ’ˆ ์ƒ์„ธ ํŽ˜์ด์ง€

์ƒํ’ˆ ์ƒ์„ธ ํŽ˜์ด์ง€
  • ์‚ฌ์ด์ฆˆ/์ˆ˜๋Ÿ‰ ์„ ํƒ ์‹œ DOM ๋™์  ์ƒ์„ฑ
  • ์ด ๊ฒฐ์ œ ๊ธˆ์•ก ์ž๋™ ๊ณ„์‚ฐ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • CSS ์กฐ์ •์œผ๋กœ ์˜ต์…˜ ์˜์—ญ ์ถ”๊ฐ€ ์‹œ ๋ ˆ์ด์•„์›ƒ ์œ ์ง€

3๏ธโƒฃ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ํŽ˜์ด์ง€

์žฅ๋ฐ”๊ตฌ๋‹ˆ ํŽ˜์ด์ง€
  • ์„ ํƒ ์ƒํ’ˆ ๋‹ด๊ธฐ/์‚ญ์ œ/์ˆ˜๋Ÿ‰ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์ด ๊ฒฐ์ œ ๊ธˆ์•ก ์‹ค์‹œ๊ฐ„ ๊ณ„์‚ฐ

4๏ธโƒฃ ์ฃผ๋ฌธ ํŽ˜์ด์ง€

์ฃผ๋ฌธ ํŽ˜์ด์ง€
  • ์ฃผ๋ฌธ ์ •๋ณด ์ „์†ก ๋ฐ ๊ฒฐ์ œ ๋กœ์ง ์—ฐ๋™
  • ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๊ฒ€์ฆ ๋ฐ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ

5๏ธโƒฃ ์ฃผ๋ฌธ ์™„๋ฃŒ ํŽ˜์ด์ง€

์ฃผ๋ฌธ ์™„๋ฃŒ ํŽ˜์ด์ง€
  • ์ฃผ๋ฌธ ๋‚ด์—ญ ์š”์•ฝ, ๊ฒฐ์ œ ์ƒํƒœ ํ‘œ์‹œ

6๏ธโƒฃ ์•„์ด๋”” ์ฐพ๊ธฐ ํŽ˜์ด์ง€

์•„์ด๋”” ์ฐพ๊ธฐ ํŽ˜์ด์ง€
  • ์ž…๋ ฅ ๊ฒ€์ฆ ๋ฐ ๊ฒฐ๊ณผ ํ‘œ์‹œ ๊ธฐ๋Šฅ ๊ตฌํ˜„

7๏ธโƒฃ ๊ด€๋ฆฌ์ž ํšŒ์› ๊ด€๋ฆฌ

๊ด€๋ฆฌ์ž ๊ฒ€์ƒ‰ ํšŒ์› ์ •๋ณด ์ˆ˜์ • ํšŒ์› ์ƒ์„ธ ํŽ˜์ด์ง€
  • ํšŒ์› ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ตฌํ˜„ (์ด๋ฆ„/์•„์ด๋””/์—ฐ๋ฝ์ฒ˜)
  • ํšŒ์› ์ •๋ณด ์ˆ˜์ • ๋ฐ ์ƒ์„ธ ํŽ˜์ด์ง€ ๊ตฌ์„ฑ

๐Ÿ“‚ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

shoebox/
โ”œโ”€โ”€ src/main/java/com.test.shoebox/
โ”‚   โ”œโ”€โ”€ config/      # Spring Security & MVC ์„ค์ •
โ”‚   โ”œโ”€โ”€ controller/  # ์—ญํ• ๋ณ„ ์ปจํŠธ๋กค๋Ÿฌ(Admin, Member ๋“ฑ)
โ”‚   โ”œโ”€โ”€ dto/         # ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ์ฒด(DTO)
โ”‚   โ”œโ”€โ”€ entity/      # JPA ์—”ํ‹ฐํ‹ฐ
โ”‚   โ”œโ”€โ”€ repository/  # JpaRepository ์ •์˜
โ”‚   โ”œโ”€โ”€ service/     # ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
โ”‚   โ””โ”€โ”€ ShoeboxApplication.java
โ”œโ”€โ”€ resources/
โ”‚   โ”œโ”€โ”€ static/      # CSS, JS, ์ด๋ฏธ์ง€
โ”‚   โ”œโ”€โ”€ templates/   # Thymeleaf ํ…œํ”Œ๋ฆฟ
โ”‚   โ””โ”€โ”€ application.yml
โ”œโ”€โ”€ shoebox_DDL.sql  # DB ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์Šคํฌ๋ฆฝํŠธ
โ””โ”€โ”€ build.gradle

๐Ÿš€ ์‹คํ–‰ ๋ฐฉ๋ฒ•

1. DB ์„ธํŒ…

  • Oracle ์„ค์น˜ ํ›„ shoebox_DDL.sql ์‹คํ–‰

2. ํ”„๋กœ์ ํŠธ ์—ด๊ธฐ

  • STS4 ๋˜๋Š” IntelliJ์—์„œ Gradle ํ”„๋กœ์ ํŠธ๋กœ Import

3. ํ™˜๊ฒฝ ์„ค์ •

  • application.yml์—์„œ DB ์ ‘์† ์ •๋ณด, ํฌํŠธ, ๋ณด์•ˆ ์˜ต์…˜ ์ˆ˜์ •

4. ์„œ๋ฒ„ ๊ตฌ๋™

  • ShoeboxApplication.java ์‹คํ–‰
    ๋˜๋Š”
    ./gradlew bootRun

5. ์ ‘์† ์ฃผ์†Œ


๐Ÿ› ๏ธ Troubleshooting (๋ฉ”์ธ Frontend)

1๏ธโƒฃ ์ƒํ’ˆ ์˜ต์…˜ ์„ ํƒ ์‹œ ๋ ˆ์ด์•„์›ƒ ๊นจ์ง

  • ๋ฌธ์ œ: ์‚ฌ์ด์ฆˆ ์„ ํƒ ํ›„ ์˜ต์…˜ ์˜์—ญ์ด ์ถ”๊ฐ€๋  ๋•Œ ๋ ˆ์ด์•„์›ƒ์ด ๋ฌด๋„ˆ์ง
  • ์›์ธ: CSS display ์†์„ฑ๊ณผ JS innerHTML ์‚ฌ์šฉ์œผ๋กœ flex ์Šคํƒ€์ผ ์ดˆ๊ธฐํ™”
  • ํ•ด๊ฒฐ:
    • selected-size-info์— ๊ณ ์ • flex ์Šคํƒ€์ผ ์ ์šฉ
    • innerHTML ๋Œ€์‹  appendChild ์‚ฌ์šฉ์œผ๋กœ DOM ๊ตฌ์กฐ ์œ ์ง€

2๏ธโƒฃ ์ด ๊ฒฐ์ œ ๊ธˆ์•ก ํ‘œ์‹œ ์˜ค๋ฅ˜

  • ๋ฌธ์ œ: ์ˆ˜๋Ÿ‰ ๋ณ€๊ฒฝ ์‹œ ์ด ๊ธˆ์•ก์ด ๋ฐ˜์˜๋˜์ง€ ์•Š์Œ
  • ์›์ธ: ์ˆซ์ž ํฌ๋งท(์‰ผํ‘œ ํฌํ•จ) ํŒŒ์‹ฑ ์‹คํŒจ, updateTotal() ๋ฏธํ˜ธ์ถœ
  • ํ•ด๊ฒฐ:
    • ์ด๋ฒคํŠธ๋งˆ๋‹ค updateTotal() ๊ฐ•์ œ ํ˜ธ์ถœ
    • parseInt(price.replace(/[^0-9]/g, ''))๋กœ ์ˆซ์ž๋งŒ ์ถ”์ถœ

3๏ธโƒฃ ๋ฒ„ํŠผ ํด๋ฆญ UX ๊ฐœ์„ 

  • ๋ฌธ์ œ: ์žฅ๋ฐ”๊ตฌ๋‹ˆ/๊ตฌ๋งค ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ์„ ํƒ ์ƒํ’ˆ์ด ์—†์œผ๋ฉด ๋ฐ˜์‘ ์—†์Œ
  • ํ•ด๊ฒฐ:
    • ์กฐ๊ฑด๋ฌธ์œผ๋กœ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ โ†’ alert ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
    • ์ž˜๋ชป๋œ ์š”์ฒญ ์ฐจ๋‹จ, ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„ 

๐Ÿ”ง Troubleshooting (๊ด€๋ฆฌ์ž)

1๏ธโƒฃ 500 Internal Server Error

  • ๋ฌธ์ œ: ์ผ๋ถ€ ํšŒ์› ํŽ˜์ด์ง€ ์ ‘๊ทผ ์‹œ ์„œ๋ฒ„ ์˜ค๋ฅ˜
  • ์›์ธ: Controller์—์„œ Optional.get() ํ˜ธ์ถœ ์‹œ ๋ฐ์ดํ„ฐ ๋ฏธ์กด์žฌ
  • ํ•ด๊ฒฐ: Optional.orElseThrow()๋กœ null ์•ˆ์ „ ์ฒ˜๋ฆฌ ๋ฐ @ControllerAdvice๋กœ ์˜ˆ์™ธ ๊ณตํ†ต ์ฒ˜๋ฆฌ

2๏ธโƒฃ DB ์—ฐ๊ฒฐ ๋ฌธ์ œ

  • ๋ฌธ์ œ: ์ฃผ๋ฌธ/ํšŒ์› ์กฐํšŒ ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜์ง€ ์•Š์Œ
  • ์›์ธ: application.yml์˜ Oracle ์ ‘์† ์ •๋ณด ์˜คํƒ€, ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ๋ˆ„๋ฝ
  • ํ•ด๊ฒฐ: DB ์ ‘์† ์ •๋ณด ์ˆ˜์ •, ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์Šคํฌ๋ฆฝํŠธ(shoebox_DDL.sql) ์ ์šฉ, HikariCP ๋กœ๊ทธ ํ™•์ธ

3๏ธโƒฃ Thymeleaf ๋ Œ๋”๋ง ์˜ค๋ฅ˜

  • ๋ฌธ์ œ: ์ƒ์„ธํŽ˜์ด์ง€, ๋งˆ์ดํŽ˜์ด์ง€ ์ผ๋ถ€ ๋ทฐ๊ฐ€ ๋กœ๋“œ๋˜์ง€ ์•Š์Œ
  • ์›์ธ: ๋ชจ๋ธ ๊ฐ์ฒด ๋ฏธ์ „๋‹ฌ ๋˜๋Š” ๋ทฐ ํŒŒ์ผ ๊ฒฝ๋กœ ๋ถˆ์ผ์น˜
  • ํ•ด๊ฒฐ: Controller์—์„œ Model์— DTO ์ „๋‹ฌ, ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ(user/detail.html ๋“ฑ)๊ณผ ๊ฒฝ๋กœ/๋ณ€์ˆ˜๋ช… ์ผ์น˜ ํ™•์ธ

4๏ธโƒฃ ์ •์  ๋ฆฌ์†Œ์Šค ์บ์‹ฑ ๋ฌธ์ œ

  • ๋ฌธ์ œ: CSS/JS ์ˆ˜์ • ํ›„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ฐฑ์‹ ๋˜์ง€ ์•Š์Œ
  • ์›์ธ: ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ, Spring Boot ๊ธฐ๋ณธ ๋ฆฌ์†Œ์Šค ์บ์‹œ
  • ํ•ด๊ฒฐ: spring.web.resources.cache.period=0 ์„ค์ •, ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ๋งŒ ์ ์šฉ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 39.0%
  • Java 34.3%
  • CSS 19.3%
  • JavaScript 5.8%
  • PLSQL 1.6%