카페 온라인 주문 및 관리 플랫폼 시스템
CodePresso는 카페 운영을 위한 종합 웹 플랫폼입니다.
고객은 온라인으로 메뉴를 주문하고, 리뷰를 작성하며, 쿠폰을 활용할 수 있습니다.
관리자는 상품, 주문, 회원, 지점 등을 효율적으로 관리할 수 있습니다.
- 회원가입 및 로그인 (Spring Security 기반 인증)
- 이메일 인증 (Naver SMTP)
- 프로필 관리 (프로필 이미지 업로드)
- 아이디/비밀번호 찾기
- 찜 목록 관리
- 상품 카테고리별 조회
- 상품 검색 기능
- 상품 상세 정보
- 할인가격 적용
- 장바구니 추가/수정/삭제
- 장바구니 목록 조회
- 주문 생성 및 관리
- Toss Payments 결제 연동
- 주문 내역 조회
- 주문 상세 정보
- 상품 리뷰 작성/수정/삭제
- 리뷰 조회 및 평점
- 공지사항 및 게시글 작성/수정/삭제
- 게시판 타입별 분류
- 게시글 목록 및 상세 조회
- 쿠폰 발급 및 관리
- 쿠폰 적용
- 지점 정보 조회
- 지점 목록
- Java 21
- Spring Boot 3.5.5
- Spring MVC
- Spring Data JPA
- Spring Security
- Spring Boot DevTools
- Spring Boot Docker Compose
- Hibernate (JPA 구현체)
- Lombok (보일러플레이트 코드 제거)
- Bean Validation (입력 검증)
- MySQL 8.4 (Docker Container)
- JPA/Hibernate (ORM)
- JSP (Jakarta Server Pages)
- JSTL 3.0 (Jakarta Standard Tag Library)
- Gradle 8.x
- Docker Compose (MySQL 컨테이너)
- Toss Payments API (결제 시스템)
- Naver SMTP (이메일 발송)
- Swagger UI / OpenAPI 3 (SpringDoc)
- JUnit 5
- Spring Boot Test
- H2 Database (테스트용 인메모리 DB)
codepresso/
├── src/
│ ├── main/
│ │ ├── java/com/codepresso/codepresso/
│ │ │ ├── config/ # 설정 클래스 (Security, Swagger 등)
│ │ │ ├── controller/ # 컨트롤러 레이어
│ │ │ │ ├── auth/ # 인증 관련
│ │ │ │ ├── board/ # 게시판
│ │ │ │ ├── branch/ # 지점
│ │ │ │ ├── cart/ # 장바구니
│ │ │ │ ├── coupon/ # 쿠폰
│ │ │ │ ├── member/ # 회원
│ │ │ │ ├── order/ # 주문
│ │ │ │ ├── payment/ # 결제
│ │ │ │ ├── product/ # 상품
│ │ │ │ └── review/ # 리뷰
│ │ │ ├── service/ # 서비스 레이어 (비즈니스 로직)
│ │ │ ├── repository/ # 레포지토리 레이어 (데이터 접근)
│ │ │ ├── entity/ # JPA 엔티티
│ │ │ ├── dto/ # 데이터 전송 객체
│ │ │ ├── converter/ # Entity ↔ DTO 변환
│ │ │ ├── security/ # Spring Security 설정
│ │ │ ├── exception/ # 예외 처리
│ │ │ └── CodepressoApplication.java
│ │ ├── resources/
│ │ │ ├── application.yml # 애플리케이션 설정
│ │ │ └── static/ # 정적 리소스 (CSS, JS, 이미지)
│ │ └── webapp/
│ │ └── WEB-INF/
│ │ └── views/ # JSP 뷰 파일
│ └── test/ # 테스트 코드
├── build.gradle # Gradle 빌드 설정
├── docker-compose.yml # Docker Compose 설정 (MySQL)
└── README.md
프로젝트는 레이어드 아키텍처 (Layered Architecture) 패턴을 따릅니다:
- Controller Layer: HTTP 요청/응답 처리
- Service Layer: 비즈니스 로직 처리
- Repository Layer: 데이터베이스 접근
- Entity Layer: 도메인 모델 (JPA 엔티티)
- DTO Layer: 계층 간 데이터 전송
- Converter Layer: Entity와 DTO 간 변환
프로젝트는 Git Flow 전략을 따릅니다:
main: 프로덕션 배포 브랜치develop: 개발 통합 브랜치feature/*: 새로운 기능 개발 브랜치hotfix/*: 긴급 버그 수정 브랜치