Skip to content

devKobe24/moamart

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

51 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ›๏ธ Moamart - ํ”ฝ์—… ์„œ๋น„์Šค ์ค‘์‹ฌ ์˜จ๋ผ์ธ ๋งˆ์ผ“

ํŽธ๋ฆฌํ•œ ์˜จ๋ผ์ธ ์ฃผ๋ฌธ, ๊ฐ€๊นŒ์šด ๋งค์žฅ์—์„œ ํ”ฝ์—…ํ•˜์„ธ์š”!

๐Ÿ“‹ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

Moamart๋Š” ์˜จ๋ผ์ธ์œผ๋กœ ์ฃผ๋ฌธํ•˜๊ณ  ์›ํ•˜๋Š” ์‹œ๊ฐ„์— ๋งค์žฅ์—์„œ ํ”ฝ์—…ํ•  ์ˆ˜ ์žˆ๋Š” ํŽธ๋ฆฌํ•œ ์‡ผํ•‘ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

โœจ ์ฃผ์š” ํŠน์ง•

  • ๐Ÿช ํ”ฝ์—… ์„œ๋น„์Šค: ์›ํ•˜๋Š” ๋งค์žฅ๊ณผ ์‹œ๊ฐ„์„ ์„ ํƒํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ”ฝ์—…
  • ๐Ÿ›’ ์‹ค์‹œ๊ฐ„ ์žฅ๋ฐ”๊ตฌ๋‹ˆ: ์žฌ๊ณ  ํ™•์ธ ๋ฐ ์ˆ˜๋Ÿ‰ ์กฐ์ ˆ
  • ๐Ÿ“ฆ ์ƒํ’ˆ ๊ด€๋ฆฌ: ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์ƒํ’ˆ ๋ถ„๋ฅ˜ ๋ฐ ๊ฒ€์ƒ‰
  • ๐Ÿ’ณ ๊ฐ„ํŽธ ์ฃผ๋ฌธ: ๋น„ํšŒ์›๋„ ์ด์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ„๋‹จํ•œ ์ฃผ๋ฌธ ํ”„๋กœ์„ธ์Šค
  • ๐Ÿ”„ ์œ ์—ฐํ•œ ์ฃผ๋ฌธ ๊ด€๋ฆฌ: ๋ถ€๋ถ„ ๋ฐ˜ํ’ˆ/๊ตํ™˜ ์ง€์›
  • โ™ป๏ธ ์ข…๋Ÿ‰์ œ ๋ด‰ํˆฌ: ํ™˜๊ฒฝ์„ ์ƒ๊ฐํ•˜๋Š” ๋ด‰ํˆฌ ์„ ํƒ ์˜ต์…˜

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

Backend

  • โ˜• Java 17 - ์ตœ์‹  LTS ๋ฒ„์ „
  • ๐Ÿƒ Spring Boot 3.x - ํ•ต์‹ฌ ํ”„๋ ˆ์ž„์›Œํฌ
  • ๐Ÿ” Spring Security - ์ธ์ฆ/์ธ๊ฐ€ ๊ด€๋ฆฌ
  • ๐Ÿ’พ Spring Data JPA - ORM ๋ฐ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ
  • ๐Ÿ” QueryDSL - ๋™์  ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ
  • ๐Ÿ—๏ธ Gradle 9.2.1 - ๋นŒ๋“œ ๋„๊ตฌ

Frontend

  • ๐ŸŽจ Thymeleaf - ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ํ…œํ”Œ๋ฆฟ ์—”์ง„
  • ๐Ÿ“ Markdown - ์ƒํ’ˆ ์ƒ์„ธ ์„ค๋ช… ์ง€์› (marked.js, SimpleMDE)
  • ๐Ÿ’… Vanilla CSS - ์ปค์Šคํ…€ ์Šคํƒ€์ผ๋ง

Database

  • ๐Ÿ—„๏ธ H2 - ๊ฐœ๋ฐœ ํ™˜๊ฒฝ
  • ๐Ÿฌ MySQL - ์šด์˜ ํ™˜๊ฒฝ

Infrastructure

  • โ˜๏ธ AWS S3 - ์ด๋ฏธ์ง€ ์Šคํ† ๋ฆฌ์ง€
  • ๐Ÿ”‘ AWS Secrets Manager - ๋ฏผ๊ฐ ์ •๋ณด ๊ด€๋ฆฌ
  • ๐Ÿš€ AWS EC2 - ์„œ๋ฒ„ ํ˜ธ์ŠคํŒ…

์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ

  • ๐Ÿ–ผ๏ธ Thumbnailator - ์ด๋ฏธ์ง€ ๋ฆฌ์‚ฌ์ด์ง• ๋ฐ ์ตœ์ ํ™”

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

moamart/
โ”œโ”€โ”€ ๐Ÿ“‚ src/main/java/com/kobe/moamart/
โ”‚   โ”œโ”€โ”€ ๐ŸŽฎ controller/           # ์ปจํŠธ๋กค๋Ÿฌ ๊ณ„์ธต
โ”‚   โ”‚   โ”œโ”€โ”€ admin/              # ๊ด€๋ฆฌ์ž ์ปจํŠธ๋กค๋Ÿฌ
โ”‚   โ”‚   โ”œโ”€โ”€ api/                # REST API
โ”‚   โ”‚   โ””โ”€โ”€ view/               # ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ
โ”‚   โ”œโ”€โ”€ ๐Ÿ’ผ service/              # ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
โ”‚   โ”œโ”€โ”€ ๐Ÿ›๏ธ domain/               # ์—”ํ‹ฐํ‹ฐ ๋ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ
โ”‚   โ”‚   โ”œโ”€โ”€ product/            # ์ƒํ’ˆ ๋„๋ฉ”์ธ
โ”‚   โ”‚   โ”œโ”€โ”€ order/              # ์ฃผ๋ฌธ ๋„๋ฉ”์ธ
โ”‚   โ”‚   โ”œโ”€โ”€ member/             # ํšŒ์› ๋„๋ฉ”์ธ
โ”‚   โ”‚   โ”œโ”€โ”€ store/              # ๋งค์žฅ ๋„๋ฉ”์ธ
โ”‚   โ”‚   โ””โ”€โ”€ category/           # ์นดํ…Œ๊ณ ๋ฆฌ ๋„๋ฉ”์ธ
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ฆ dto/                  # ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ์ฒด
โ”‚   โ”œโ”€โ”€ โš™๏ธ global/               # ์ „์—ญ ์„ค์ •
โ”‚   โ”‚   โ”œโ”€โ”€ config/             # ์„ค์ • ํด๋ž˜์Šค
โ”‚   โ”‚   โ”œโ”€โ”€ security/           # ๋ณด์•ˆ ์„ค์ •
โ”‚   โ”‚   โ”œโ”€โ”€ util/               # ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”‚   โ”‚   โ””โ”€โ”€ exception/          # ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
โ”‚   โ””โ”€โ”€ ๐Ÿš€ MoamartApplication.java
โ”œโ”€โ”€ ๐Ÿ“‚ src/main/resources/
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ application.yml       # ๊ธฐ๋ณธ ์„ค์ •
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ application-dev.yml   # ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ application-prod.yml  # ์šด์˜ ํ™˜๊ฒฝ ์„ค์ •
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ templates/            # Thymeleaf ํ…œํ”Œ๋ฆฟ
โ””โ”€โ”€ ๐Ÿ”จ build.gradle

๐Ÿš€ ์‹œ์ž‘ํ•˜๊ธฐ

๐Ÿ“‹ ์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ

  • โ˜• Java 17 ์ด์ƒ
  • ๐Ÿ—๏ธ Gradle 9.2.1 ์ด์ƒ
  • ๐Ÿฌ MySQL 8.0 ์ด์ƒ (์šด์˜ ํ™˜๊ฒฝ)

โš™๏ธ ํ™˜๊ฒฝ ์„ค์ •

1๏ธโƒฃ ์ €์žฅ์†Œ ํด๋ก 

git clone https://github.com/your-username/moamart.git
cd moamart

๐Ÿƒ ์‹คํ–‰

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

./gradlew bootRun --args='--spring.profiles.active=dev'

์šด์˜ ํ™˜๊ฒฝ

./gradlew bootRun --args='--spring.profiles.active=prod'

๋˜๋Š” JAR ํŒŒ์ผ ๋นŒ๋“œ ํ›„ ์‹คํ–‰:

./gradlew build
java -jar -Dspring.profiles.active=prod build/libs/moamart-0.0.1-SNAPSHOT.jar

๐ŸŒ ์ ‘์†


๐ŸŽฏ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ‘ค ์‚ฌ์šฉ์ž ๊ธฐ๋Šฅ

๐Ÿ›’ ์‡ผํ•‘

  • โœ… ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์ƒํ’ˆ ์กฐํšŒ
  • โœ… ์ƒํ’ˆ ์ƒ์„ธ ์ •๋ณด ํ™•์ธ
  • โœ… ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œ
  • โœ… ์‹ค์‹œ๊ฐ„ ์žฌ๊ณ  ํ™•์ธ

๐Ÿ“ฆ ์ฃผ๋ฌธ

  • โœ… ํ”ฝ์—… ๋งค์žฅ ์„ ํƒ
  • โœ… ํ”ฝ์—… ์‹œ๊ฐ„ ์ง€์ •
  • โœ… ์ข…๋Ÿ‰์ œ ๋ด‰ํˆฌ ์„ ํƒ (10L/20L)
  • โœ… ์ฃผ๋ฌธ ๋‚ด์—ญ ์กฐํšŒ
  • โœ… ์ฃผ๋ฌธ ์ƒํƒœ ์‹ค์‹œ๊ฐ„ ํ™•์ธ

๐Ÿ‘ฅ ํšŒ์›

  • โœ… ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ
  • โœ… ๋น„ํšŒ์› ์ฃผ๋ฌธ ๊ฐ€๋Šฅ

๐Ÿ”ง ๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ

๐Ÿ“ฆ ์ƒํ’ˆ ๊ด€๋ฆฌ

  • โœ… ์ƒํ’ˆ ๋“ฑ๋ก/์ˆ˜์ •/์‚ญ์ œ
  • โœ… ์นดํ…Œ๊ณ ๋ฆฌ ๊ด€๋ฆฌ
  • โœ… ์žฌ๊ณ  ๊ด€๋ฆฌ
  • โœ… ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ (์ธ๋„ค์ผ ์ž๋™ ๋ฆฌ์‚ฌ์ด์ง•)
  • โœ… Markdown ์ง€์› ์ƒ์„ธ ์„ค๋ช…
  • โœ… ์ƒํ’ˆ ์ƒํƒœ ๊ด€๋ฆฌ (ํŒ๋งค์ค‘/ํ’ˆ์ ˆ/์ˆจ๊น€)

๐Ÿšš ์ฃผ๋ฌธ ๊ด€๋ฆฌ

  • โœ… ์ฃผ๋ฌธ ๋ชฉ๋ก ์กฐํšŒ ๋ฐ ํ•„ํ„ฐ๋ง
  • โœ… ์ฃผ๋ฌธ ์ƒํƒœ ๋ณ€๊ฒฝ
  • โœ… ๊ฐœ๋ณ„ ์ƒํ’ˆ ์ƒํƒœ ๊ด€๋ฆฌ
  • โœ… ๋ถ€๋ถ„ ๋ฐ˜ํ’ˆ/๊ตํ™˜ ์ฒ˜๋ฆฌ
  • โœ… ์ƒํ’ˆ ๋ถ„๋ฆฌ ๊ธฐ๋Šฅ
  • โœ… ์ฐจ์•ก/ํ™˜๋ถˆ ๊ธˆ์•ก ์ž๋™ ๊ณ„์‚ฐ

๐Ÿช ๋งค์žฅ ๊ด€๋ฆฌ

  • โœ… ๋งค์žฅ ๋“ฑ๋ก/์ˆ˜์ •
  • โœ… ์šด์˜ ์ƒํƒœ ๊ด€๋ฆฌ

๐Ÿ—‚๏ธ ์ฃผ์š” ์—”ํ‹ฐํ‹ฐ

๐Ÿท๏ธ Product (์ƒํ’ˆ)

- id: ์ƒํ’ˆ ID
- name: ์ƒํ’ˆ๋ช…
- price: ๊ฐ€๊ฒฉ
- stockQuantity: ์žฌ๊ณ  ์ˆ˜๋Ÿ‰
- status: ์ƒํƒœ (SELL/SOLD_OUT/STOP)
- isDisplayed: ๋…ธ์ถœ ์—ฌ๋ถ€
- isNew: ์ตœ์‹  ์ƒํ’ˆ ์—ฌ๋ถ€
- thumbnailUrl: ์ธ๋„ค์ผ ์ด๋ฏธ์ง€
- category: ์นดํ…Œ๊ณ ๋ฆฌ (N:1)
- images: ์ƒ์„ธ ์ด๋ฏธ์ง€ (1:N)

๐Ÿ“‹ Order (์ฃผ๋ฌธ)

- id: ์ฃผ๋ฌธ ID
- recipientName: ๋ฐ›๋Š” ์‚ฌ๋žŒ
- phoneNumber: ์—ฐ๋ฝ์ฒ˜
- status: ์ฃผ๋ฌธ ์ƒํƒœ
- orderDate: ์ฃผ๋ฌธ ์ผ์‹œ
- pickupDateTime: ํ”ฝ์—… ์˜ˆ์ • ์ผ์‹œ
- bagType: ๋ด‰ํˆฌ ํƒ€์ž…
- originalTotalPrice: ์‚ฌ์ „ ๊ฒฐ์ œ ๊ธˆ์•ก
- store: ํ”ฝ์—… ๋งค์žฅ (N:1)
- orderItems: ์ฃผ๋ฌธ ์ƒํ’ˆ (1:N)

๐Ÿ“ฆ OrderItem (์ฃผ๋ฌธ ์ƒํ’ˆ)

- id: ์ฃผ๋ฌธ ์ƒํ’ˆ ID
- orderPrice: ์ฃผ๋ฌธ ๋‹น์‹œ ๊ฐ€๊ฒฉ
- count: ์ˆ˜๋Ÿ‰
- status: ์ƒํ’ˆ ์ƒํƒœ (๊ฐœ๋ณ„ ๊ด€๋ฆฌ)
- product: ์ƒํ’ˆ (N:1)
- order: ์ฃผ๋ฌธ (N:1)

๐ŸŽจ ํ™”๋ฉด ๊ตฌ์„ฑ

๐Ÿ  ์‚ฌ์šฉ์ž ํ™”๋ฉด

  • index.html - ๋ฉ”์ธ ํŽ˜์ด์ง€ (์ƒํ’ˆ ๋ชฉ๋ก)
  • product/detail.html - ์ƒํ’ˆ ์ƒ์„ธ
  • cart.html - ์žฅ๋ฐ”๊ตฌ๋‹ˆ
  • orders/review.html - ์ฃผ๋ฌธ ๊ฒ€ํ†  (๋งค์žฅ ์„ ํƒ)
  • order/checkout.html - ์ฃผ๋ฌธ/๊ฒฐ์ œ
  • order/complete.html - ์ฃผ๋ฌธ ์™„๋ฃŒ
  • orders/list.html - ์ฃผ๋ฌธ ๋‚ด์—ญ
  • orders/detail.html - ์ฃผ๋ฌธ ์ƒ์„ธ
  • member/join.html - ํšŒ์›๊ฐ€์ž…
  • member/login.html - ๋กœ๊ทธ์ธ

๐Ÿ”ง ๊ด€๋ฆฌ์ž ํ™”๋ฉด

  • admin/login.html - ๊ด€๋ฆฌ์ž ๋กœ๊ทธ์ธ
  • admin/product/list.html - ์ƒํ’ˆ ๋ชฉ๋ก
  • admin/product/form.html - ์ƒํ’ˆ ๋“ฑ๋ก/์ˆ˜์ •
  • admin/order/list.html - ์ฃผ๋ฌธ ๋ชฉ๋ก
  • admin/order/detail.html - ์ฃผ๋ฌธ ์ƒ์„ธ
  • admin/store/list.html - ๋งค์žฅ ๋ชฉ๋ก
  • admin/store/form.html - ๋งค์žฅ ๋“ฑ๋ก/์ˆ˜์ •

๐Ÿ” ๋ณด์•ˆ

  • โœ… Spring Security ๊ธฐ๋ฐ˜ ์ธ์ฆ/์ธ๊ฐ€
  • โœ… ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™” (BCrypt)
  • โœ… AWS Secrets Manager ์—ฐ๋™ (์šด์˜ ํ™˜๊ฒฝ)
  • โœ… CSRF ๋ณดํ˜ธ
  • โœ… ๊ถŒํ•œ๋ณ„ ์ ‘๊ทผ ์ œ์–ด (ADMIN/USER)

๐Ÿ“ธ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ

๐Ÿ–ผ๏ธ ๋กœ์ปฌ ํŒŒ์ผ ์—…๋กœ๋“œ (๊ฐœ๋ฐœ ํ™˜๊ฒฝ)

  • ์—…๋กœ๋“œ ๋””๋ ‰ํ† ๋ฆฌ: ./uploads/
  • ์ž๋™ ๋ฆฌ์‚ฌ์ด์ง•: ์ธ๋„ค์ผ(800x800), ์›๋ณธ(1920x1920)
  • ์••์ถ•: JPEG ํ’ˆ์งˆ 85%

โ˜๏ธ AWS S3 ์—…๋กœ๋“œ (์šด์˜ ํ™˜๊ฒฝ)

  • ๋ฒ„ํ‚ท: moamart-product-images-bucket
  • ๊ฒฝ๋กœ: images/ ๋””๋ ‰ํ† ๋ฆฌ
  • CloudFront ์—ฐ๋™ ์ง€์›

๐Ÿงช ํ…Œ์ŠคํŠธ

./gradlew test

๐Ÿ“ฆ ๋ฐฐํฌ

JAR ๋นŒ๋“œ

./gradlew clean build

Docker (์˜ˆ์ •)

# ์ถ”ํ›„ ์ถ”๊ฐ€ ์˜ˆ์ •

๐Ÿค ๊ธฐ์—ฌ

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'feat: Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

๐Ÿ“ ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜

feat: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
fix: ๋ฒ„๊ทธ ์ˆ˜์ •
docs: ๋ฌธ์„œ ์ˆ˜์ •
style: ์ฝ”๋“œ ํฌ๋งทํŒ…
refactor: ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
test: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ
chore: ๋นŒ๋“œ ์—…๋ฌด ์ˆ˜์ •

๐Ÿ“„ ๋ผ์ด์„ผ์Šค

This project is licensed under the MIT License.


๐Ÿ‘จโ€๐Ÿ’ป ๊ฐœ๋ฐœ์ž

Bing_9 (kobe)


๐Ÿ™ Ref

์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ ๊ธฐ์ˆ ๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค:

  • Spring Boot
  • Thymeleaf
  • AWS Services
  • Thumbnailator
  • marked.js / SimpleMDE
  • ๊ทธ ์™ธ ๋ชจ๋“  ์˜คํ”ˆ์†Œ์Šค ๊ธฐ์—ฌ์ž๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๐ŸŽ‰

๐Ÿ“ž ๋ฌธ์˜

ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด๋‚˜ ์ œ์•ˆ์‚ฌํ•ญ์ด ์žˆ์œผ์‹œ๋ฉด ์ด์Šˆ๋ฅผ ๋“ฑ๋กํ•ด ์ฃผ์„ธ์š”!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published